terminal-richjs 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/terminal/terminal.ts","../src/core/style.ts","../src/core/segment.ts","../src/utils/color.ts","../src/themes/palette.ts","../src/themes/theme.ts","../src/core/markup.ts","../src/types/renderable.ts","../src/traceback/trace.ts","../src/syntax/theme.ts","../src/syntax/syntax.ts","../src/traceback/traceback.ts","../src/utils/render-utils.ts","../src/live/live.ts","../src/status/spinner.ts","../src/core/lines.ts","../src/layout/layout.ts","../src/renderables/text.ts","../src/status/status.ts","../src/console/console.ts","../src/utils/box.ts","../src/renderables/panel.ts","../src/renderables/rule.ts","../src/renderables/table.ts","../src/renderables/tree.ts","../src/layout/grid.ts","../src/renderables/padding.ts","../src/renderables/align.ts","../src/prompt/prompt.ts","../src/prompt/confirm.ts","../src/logging/handler.ts","../src/hooks/install.ts","../src/markdown/markdown.ts","../src/progress/bar.ts","../src/progress/progress.ts","../src/progress/track.ts","../src/logging/logger.ts","../src/utils/inspect.ts","../src/index.ts"],"names":["terminalSize","process","os","chalk","stringWidth","tinycolor","fs","hljs","ansiEscapes","cliSpinners","wrapAnsi","boxes","readline","norm","marked","TerminalRenderer","text"],"mappings":"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","file":"index.cjs","sourcesContent":["import terminalSize from 'terminal-size';\nimport os from 'os';\nimport process from 'process';\n\nexport type ColorSystem = 'standard' | '256' | 'truecolor' | 'none';\n\nexport class Terminal {\n constructor() {}\n\n get width(): number {\n return terminalSize().columns;\n }\n\n get height(): number {\n return terminalSize().rows;\n }\n\n get isInteractive(): boolean {\n return !!process.stdout.isTTY;\n }\n\n get isLegacyWindows(): boolean {\n return os.platform() === 'win32' && !process.env.WT_SESSION;\n }\n\n get colorSystem(): ColorSystem {\n // Basic detection logic based on env vars\n // In a real implementation we might use 'supports-color' package or similar logic\n const env = process.env;\n\n if (env.NO_COLOR) return 'none';\n\n if (env.COLORTERM === 'truecolor' || env.COLORTERM === '24bit') {\n return 'truecolor';\n }\n\n if (this.isLegacyWindows) {\n return 'standard'; \n }\n\n // Default to standard or 256 based on TERM\n if (env.TERM && env.TERM.includes('256')) {\n return '256';\n }\n\n return 'standard';\n }\n}\n","/** biome-ignore-all lint/suspicious/noExplicitAny: falses */\n/** biome-ignore-all assist/source/organizeImports: false */\nimport chalk from 'chalk';\nimport type { StyleOptions, Color, RGB } from '../types/style-types';\n\nexport class Style {\n readonly color?: Color;\n readonly backgroundColor?: Color;\n readonly bold?: boolean;\n readonly italic?: boolean;\n readonly underline?: boolean;\n readonly strikethrough?: boolean;\n readonly dim?: boolean;\n readonly reverse?: boolean;\n readonly blink?: boolean;\n readonly hidden?: boolean;\n\n constructor(options: StyleOptions = {}) {\n this.color = options.color;\n this.backgroundColor = options.backgroundColor;\n this.bold = options.bold;\n this.italic = options.italic;\n this.underline = options.underline;\n this.strikethrough = options.strikethrough;\n this.dim = options.dim;\n this.reverse = options.reverse;\n this.blink = options.blink;\n this.hidden = options.hidden;\n }\n\n static null(): Style {\n return new Style({});\n }\n\n /**\n * Parse a style string into a Style object.\n * Supports:\n * - Modifiers: bold, italic, underline, dim, strike, reverse, blink, hidden\n * - Named colors: red, green, blue, cyan, magenta, yellow, white, black\n * - Bright colors: bright_red, bright_green, etc.\n * - Hex colors: #ff0000\n * - RGB colors: rgb(255,0,0)\n * - 256 colors: color(196)\n * - Background: on red, on #ff0000, on rgb(255,0,0)\n */\n static parse(styleString: string): Style {\n if (!styleString.trim()) return Style.null();\n\n const options: StyleOptions = {};\n const words = styleString.trim().split(/\\s+/);\n let i = 0;\n\n while (i < words.length) {\n const word = words[i];\n\n // Check for modifiers\n if (word === 'bold') {\n options.bold = true;\n i++;\n continue;\n }\n if (word === 'italic') {\n options.italic = true;\n i++;\n continue;\n }\n if (word === 'underline') {\n options.underline = true;\n i++;\n continue;\n }\n if (word === 'strike' || word === 'strikethrough') {\n options.strikethrough = true;\n i++;\n continue;\n }\n if (word === 'dim') {\n options.dim = true;\n i++;\n continue;\n }\n if (word === 'reverse') {\n options.reverse = true;\n i++;\n continue;\n }\n if (word === 'blink') {\n options.blink = true;\n i++;\n continue;\n }\n if (word === 'hidden') {\n options.hidden = true;\n i++;\n continue;\n }\n\n // Check for background color prefix \"on\"\n if (word === 'on') {\n if (i + 1 < words.length) {\n const bgColor = Style.parseColor(words[i + 1]);\n if (bgColor !== null) {\n options.backgroundColor = bgColor;\n i += 2;\n continue;\n }\n }\n i++;\n continue;\n }\n\n // Check for color\n const color = Style.parseColor(word);\n if (color !== null) {\n options.color = color;\n i++;\n continue;\n }\n\n // Unknown word, skip\n i++;\n }\n\n return new Style(options);\n }\n\n /**\n * Parse a single color value.\n * Supports hex (#ff0000), RGB (rgb(255,0,0)), 256-color (color(196)), and named colors.\n */\n private static parseColor(word: string): Color | null {\n // Hex color: #ff0000 or #f00\n if (word.startsWith('#')) {\n if (/^#[0-9a-fA-F]{6}$/.test(word) || /^#[0-9a-fA-F]{3}$/.test(word)) {\n return word;\n }\n return null;\n }\n\n // RGB color: rgb(255,0,0) or rgb(255, 0, 0)\n const rgbMatch = word.match(/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n if (rgbMatch) {\n return {\n r: Math.min(255, parseInt(rgbMatch[1], 10)),\n g: Math.min(255, parseInt(rgbMatch[2], 10)),\n b: Math.min(255, parseInt(rgbMatch[3], 10)),\n };\n }\n\n // 256-color: color(196)\n const color256Match = word.match(/^color\\(\\s*(\\d+)\\s*\\)$/i);\n if (color256Match) {\n return Math.min(255, parseInt(color256Match[1], 10));\n }\n\n // Named colors (including bright_ variants)\n const namedColors = [\n 'black',\n 'red',\n 'green',\n 'yellow',\n 'blue',\n 'magenta',\n 'cyan',\n 'white',\n 'gray',\n 'grey',\n 'blackBright',\n 'redBright',\n 'greenBright',\n 'yellowBright',\n 'blueBright',\n 'magentaBright',\n 'cyanBright',\n 'whiteBright',\n // Underscore variants commonly used\n 'bright_black',\n 'bright_red',\n 'bright_green',\n 'bright_yellow',\n 'bright_blue',\n 'bright_magenta',\n 'bright_cyan',\n 'bright_white',\n ];\n\n // Convert snake_case to camelCase for bright colors\n let normalizedWord = word;\n if (word.startsWith('bright_')) {\n const base = word.slice(7);\n normalizedWord = `${base}Bright`;\n }\n\n if (namedColors.includes(word) || namedColors.includes(normalizedWord)) {\n return word;\n }\n\n // Could be an unknown color name, return it anyway and let chalk handle it\n if (/^[a-zA-Z]+$/.test(word)) {\n return word;\n }\n\n return null;\n }\n\n combine(other: Style): Style {\n return new Style({\n color: other.color ?? this.color,\n backgroundColor: other.backgroundColor ?? this.backgroundColor,\n bold: other.bold ?? this.bold,\n italic: other.italic ?? this.italic,\n underline: other.underline ?? this.underline,\n strikethrough: other.strikethrough ?? this.strikethrough,\n dim: other.dim ?? this.dim,\n reverse: other.reverse ?? this.reverse,\n blink: other.blink ?? this.blink,\n hidden: other.hidden ?? this.hidden,\n });\n }\n\n render(text: string): string {\n let result: any = chalk;\n\n // Apply foreground color\n if (this.color) {\n result = this.applyColor(result, this.color, false);\n }\n\n // Apply background color\n if (this.backgroundColor) {\n result = this.applyColor(result, this.backgroundColor, true);\n }\n\n // Apply modifiers\n if (this.bold) result = result.bold;\n if (this.italic) result = result.italic;\n if (this.underline) result = result.underline;\n if (this.strikethrough) result = result.strikethrough;\n if (this.dim) result = result.dim;\n if (this.reverse) result = result.inverse;\n if (this.blink) result = result.blink;\n if (this.hidden) result = result.hidden;\n\n return result(text);\n }\n\n /**\n * Apply a color to a chalk instance.\n */\n private applyColor(chalkInstance: any, color: Color, isBackground: boolean): any {\n // String color (hex or named)\n if (typeof color === 'string') {\n if (color.startsWith('#')) {\n // Hex color\n return isBackground ? chalkInstance.bgHex(color) : chalkInstance.hex(color);\n }\n\n // Handle bright_ prefix conversion\n let colorName = color;\n if (color.startsWith('bright_')) {\n const base = color.slice(7);\n colorName = `${base}Bright`;\n }\n\n // Named color\n if (isBackground) {\n const bgMethod = `bg${colorName.charAt(0).toUpperCase()}${colorName.slice(1)}`;\n if (bgMethod in chalkInstance) {\n return chalkInstance[bgMethod as keyof typeof chalkInstance];\n }\n // Fallback: try as-is\n const altMethod = `bg${color.charAt(0).toUpperCase()}${color.slice(1)}`;\n if (altMethod in chalkInstance) {\n return chalkInstance[altMethod as keyof typeof chalkInstance];\n }\n } else {\n if (colorName in chalkInstance) {\n return chalkInstance[colorName as keyof typeof chalkInstance];\n }\n if (color in chalkInstance) {\n return chalkInstance[color as keyof typeof chalkInstance];\n }\n }\n return chalkInstance;\n }\n\n // RGB object\n if (this.isRGB(color)) {\n return isBackground\n ? chalkInstance.bgRgb(color.r, color.g, color.b)\n : chalkInstance.rgb(color.r, color.g, color.b);\n }\n\n // 256-color number\n if (typeof color === 'number') {\n return isBackground ? chalkInstance.bgAnsi256(color) : chalkInstance.ansi256(color);\n }\n\n return chalkInstance;\n }\n\n private isRGB(color: any): color is RGB {\n return (\n typeof color === 'object' && color !== null && 'r' in color && 'g' in color && 'b' in color\n );\n }\n}\n","import stringWidth from 'string-width';\nimport { Style } from './style';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\n\n/**\n * A segment of text with a specific style.\n */\nexport class Segment implements Renderable {\n constructor(\n public readonly text: string,\n public readonly style: Style = Style.null(),\n public readonly isControl: boolean = false\n ) {}\n\n /**\n * Implementation of Renderable protocol.\n */\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n return {\n segments: [this],\n width: this.cellLength()\n };\n }\n\n\n /**\n * Calculates the cell length of the text.\n */\n cellLength(): number {\n if (this.isControl) return 0;\n return stringWidth(this.text);\n }\n\n /**\n * Renders the segment to an ANSI string.\n */\n render(): string {\n if (this.isControl) return this.text;\n if (typeof this.style?.render === 'function') {\n return this.style.render(this.text);\n }\n return this.text;\n }\n\n /**\n * Splits the segment into lines.\n */\n splitLines(_allowEmpty: boolean = false): Segment[][] {\n const lines = this.text.split('\\n');\n\n // If the text ends with a newline, split produces an empty string at the end.\n // Rich behavior: we might want to preserve that if needed, or handle it carefully.\n\n return lines.map((line) => {\n // If line is empty and we don't allow empty segments (unless it's a newline itself which is lost here),\n // effectively we just create new segments for each line part.\n return [new Segment(line, this.style, this.isControl)];\n });\n }\n\n /**\n * Creates a new Segment with modified properties.\n */\n clone(text?: string, style?: Style, isControl?: boolean): Segment {\n return new Segment(text ?? this.text, style ?? this.style, isControl ?? this.isControl);\n }\n}\n","import tinycolor from 'tinycolor2';\n\nexport class Color {\n private tc: tinycolor.Instance;\n\n constructor(color: string | tinycolor.ColorInput) {\n this.tc = tinycolor(color);\n }\n\n static parse(color: string): Color {\n return new Color(color);\n }\n\n get hex(): string {\n return this.tc.toHexString();\n }\n\n get rgb(): { r: number, g: number, b: number } {\n return this.tc.toRgb();\n }\n\n get isDark(): boolean {\n return this.tc.isDark();\n }\n\n get isLight(): boolean {\n return this.tc.isLight();\n }\n\n contrast(other: Color): number {\n return tinycolor.readability(this.tc, other.tc);\n }\n\n lighten(amount: number = 10): Color {\n return new Color(this.tc.lighten(amount));\n }\n\n darken(amount: number = 10): Color {\n return new Color(this.tc.darken(amount));\n }\n\n /**\n * Returns a readable foreground color (black or white) for this background color.\n */\n getContrastColor(): Color {\n return this.isDark ? new Color('#ffffff') : new Color('#000000');\n }\n}\n","import { Color } from '../utils/color';\n\nexport class Palette {\n constructor(public colors: Record<string, string> = {}) {}\n\n get(name: string): string | undefined {\n return this.colors[name];\n }\n\n /**\n * Generates a simple palette from a primary color.\n */\n static fromPrimary(primary: string): Palette {\n const p = new Color(primary);\n return new Palette({\n primary: p.hex,\n secondary: p.lighten(20).hex,\n background: '#121212',\n surface: '#1e1e1e',\n text: '#ffffff',\n error: '#cf6679',\n success: '#03dac6',\n warning: '#bb86fc'\n });\n }\n}\n\nexport const DEFAULT_PALETTE = new Palette({\n primary: '#007bff',\n secondary: '#6c757d',\n success: '#28a745',\n info: '#17a2b8',\n warning: '#ffc107',\n danger: '#dc3545',\n light: '#f8f9fa',\n dark: '#343a40',\n});\n","import { Style } from '../core/style';\nimport { Palette, DEFAULT_PALETTE } from './palette';\n\nexport class Theme {\n public palette: Palette;\n\n constructor(\n public styles: Record<string, Style | string> = {},\n palette?: Palette\n ) {\n this.palette = palette ?? DEFAULT_PALETTE;\n }\n\n get(name: string): Style {\n // 1. Check if it's a semantic style name\n const style = this.styles[name];\n if (style) {\n return typeof style === 'string' ? this.parseWithPalette(style) : style;\n }\n \n // 2. Check if it's a palette color name used as a style (e.g. \"[primary]\")\n const paletteColor = this.palette.get(name);\n if (paletteColor) {\n return new Style({ color: paletteColor });\n }\n\n return Style.null();\n }\n\n /**\n * Parses a style string replacing palette references.\n * e.g. \"bold primary\" -> \"bold #007bff\"\n */\n private parseWithPalette(styleString: string): Style {\n const parts = styleString.split(' ');\n const resolvedParts = parts.map(part => {\n // Check foreground\n const color = this.palette.get(part);\n if (color) return color;\n\n // Check background \"on primary\"\n if (part.startsWith('on')) {\n const bgName = part.startsWith('on_') ? part.slice(3) : part.slice(2) || parts[parts.indexOf(part) + 1];\n const bgColor = this.palette.get(bgName);\n if (bgColor) return `on ${bgColor}`;\n }\n return part;\n });\n return Style.parse(resolvedParts.join(' '));\n }\n\n static fromPalette(palette: Palette): Theme {\n return new Theme({\n 'danger': `bold ${palette.get('danger')}`,\n 'success': `bold ${palette.get('success')}`,\n 'warning': `bold ${palette.get('warning')}`,\n 'info': `${palette.get('info')}`,\n }, palette);\n }\n}\n\nexport const DEFAULT_THEME = new Theme({\n 'none': Style.null(),\n 'dim': Style.parse('dim'),\n 'bright': Style.parse('bold'),\n \n // Semantic\n 'danger': Style.parse('bold red'),\n 'success': Style.parse('bold green'),\n 'warning': Style.parse('bold yellow'),\n 'info': Style.parse('cyan'),\n \n // Components\n 'rule.line': Style.parse('green'),\n 'repr.str': Style.parse('green'),\n 'repr.brace': Style.parse('bold'),\n});","import { Segment } from './segment';\nimport { Style } from './style';\nimport { Theme, DEFAULT_THEME } from '../themes/theme';\n\n/**\n * Parses Rich markup into segments.\n * Example: \"[bold red]Hello[/bold red] [green]World[/green]\"\n */\nexport class MarkupParser {\n // Regex that matches standard tags [tag] and closing tags [/] or [/tag]\n // We use a non-greedy match for content inside brackets\n private static readonly TAG_REGEX = /\\[(\\/)?([\\w\\s#.,()]*?)\\]/g;\n \n private theme: Theme;\n\n constructor(theme?: Theme) {\n this.theme = theme ?? DEFAULT_THEME;\n }\n\n parse(markup: string): Segment[] {\n const segments: Segment[] = [];\n const styleStack: Style[] = [Style.null()];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n // Reset regex lastIndex because it's static\n MarkupParser.TAG_REGEX.lastIndex = 0;\n\n while ((match = MarkupParser.TAG_REGEX.exec(markup)) !== null) {\n const fullMatch = match[0];\n const isClosing = !!match[1];\n const tagContent = match[2];\n const index = match.index;\n\n // Ignore empty tags []\n if (!isClosing && !tagContent) {\n continue;\n }\n\n // Add text before the tag\n if (index > lastIndex) {\n const text = markup.substring(lastIndex, index);\n segments.push(new Segment(text, styleStack[styleStack.length - 1]));\n }\n\n if (isClosing) {\n // Closing tag - for now we just pop regardless of name matching\n if (styleStack.length > 1) {\n styleStack.pop();\n }\n } else {\n // Opening tag\n const currentStyle = styleStack[styleStack.length - 1];\n \n // Resolve style: check theme first, then parse\n let nextStyle = this.theme.get(tagContent);\n if (nextStyle === Style.null() && !this.theme.styles[tagContent]) {\n // Not in theme, parse as raw style\n nextStyle = Style.parse(tagContent);\n } else if (this.theme.styles[tagContent]) {\n // It was found in theme\n }\n \n // Wait, theme.get returns Style.null() if not found. \n // But Style.null() is a valid return for \"none\" theme key.\n // We need to know if it was ACTUALLY found.\n // Let's improve logic:\n \n // Try simple parse if it looks like a complex style string (spaces)\n if (tagContent.includes(' ')) {\n nextStyle = Style.parse(tagContent);\n } else {\n const themeStyle = this.theme.styles[tagContent];\n if (themeStyle) {\n nextStyle = typeof themeStyle === 'string' ? Style.parse(themeStyle) : themeStyle;\n } else {\n nextStyle = Style.parse(tagContent);\n }\n }\n\n const newStyle = currentStyle.combine(nextStyle);\n styleStack.push(newStyle);\n }\n\n lastIndex = index + fullMatch.length;\n }\n\n // Add remaining text\n if (lastIndex < markup.length) {\n const text = markup.substring(lastIndex);\n segments.push(new Segment(text, styleStack[styleStack.length - 1]));\n }\n\n return segments.filter(s => s.text.length > 0);\n }\n}\n","import type { Console } from '../console/console';\nimport type { ConsoleOptions } from './console-options';\nimport type { Segment } from '../core/segment';\n\n/**\n * Result of rendering a Renderable object.\n */\nexport interface RenderResult {\n /** The rendered text segments */\n segments: Segment[];\n /** The width in characters */\n width?: number;\n /** The height in lines */\n height?: number;\n}\n\n/**\n * Protocol for objects that can be rendered to the console.\n */\nexport interface Renderable {\n /**\n * Renders the object to segments.\n *\n * @param console - The console instance\n * @param options - Rendering options\n * @returns The render result\n */\n __rich_console__(\n console: Console,\n options: ConsoleOptions\n ): RenderResult | Generator<Segment>;\n}\n\n/**\n * Type guard to check if an object is renderable.\n */\nexport function isRenderable(obj: unknown): obj is Renderable {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n '__rich_console__' in obj &&\n typeof (obj as any).__rich_console__ === 'function'\n );\n}\n","export interface StackFrame {\n functionName: string;\n filePath: string;\n lineNumber: number;\n columnNumber: number;\n}\n\nexport class Trace {\n static parse(error: Error): StackFrame[] {\n if (!error.stack) return [];\n\n const lines = error.stack.split('\\n');\n const frames: StackFrame[] = [];\n\n // Skip the first line (error message)\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i].trim();\n if (!line.startsWith('at ')) continue;\n\n // Parse lines like: \"at functionName (filePath:line:col)\"\n // or \"at filePath:line:col\"\n\n let functionName = '';\n let location = '';\n\n if (line.includes('(')) {\n const parts = line.substring(3).split(' (');\n functionName = parts[0];\n location = parts[1].slice(0, -1); // remove closing paren\n } else {\n location = line.substring(3);\n }\n\n const locParts = location.split(':');\n const columnNumber = parseInt(locParts.pop() || '0');\n const lineNumber = parseInt(locParts.pop() || '0');\n const filePath = locParts.join(':');\n\n frames.push({\n functionName: functionName || '<anonymous>',\n filePath,\n lineNumber,\n columnNumber,\n });\n }\n\n return frames;\n }\n}\n","import { Style } from '../core/style';\n\nexport interface SyntaxTheme {\n name: string;\n styles: Record<string, Style>;\n background?: string;\n}\n\n// Monokai theme - classic dark theme inspired by Sublime Text\nexport const MONOKAI: SyntaxTheme = {\n name: 'monokai',\n background: '#272822',\n styles: {\n // Keywords and control flow\n keyword: Style.parse('#f92672 bold'),\n built_in: Style.parse('#66d9ef'),\n type: Style.parse('#66d9ef italic'),\n literal: Style.parse('#ae81ff'),\n\n // Values\n number: Style.parse('#ae81ff'),\n string: Style.parse('#e6db74'),\n regexp: Style.parse('#e6db74'),\n symbol: Style.parse('#ae81ff'),\n\n // Comments and docs\n comment: Style.parse('#75715e dim'),\n doctag: Style.parse('#75715e'),\n meta: Style.parse('#75715e'),\n\n // Functions and classes\n function: Style.parse('#a6e22e'),\n title: Style.parse('#a6e22e'),\n 'title.function': Style.parse('#a6e22e'),\n 'title.class': Style.parse('#a6e22e italic'),\n 'title.class.inherited': Style.parse('#a6e22e'),\n\n // Variables and parameters\n params: Style.parse('#fd971f italic'),\n variable: Style.parse('#f8f8f2'),\n 'variable.language': Style.parse('#fd971f'),\n 'variable.constant': Style.parse('#ae81ff'),\n\n // Properties and attributes\n property: Style.parse('#66d9ef'),\n attr: Style.parse('#a6e22e'),\n attribute: Style.parse('#a6e22e'),\n\n // Operators and punctuation\n operator: Style.parse('#f92672'),\n punctuation: Style.parse('#f8f8f2'),\n\n // Misc\n tag: Style.parse('#f92672'),\n name: Style.parse('#a6e22e'),\n 'selector-tag': Style.parse('#f92672'),\n 'selector-class': Style.parse('#a6e22e'),\n 'selector-id': Style.parse('#a6e22e'),\n\n // Template literals\n 'template-variable': Style.parse('#e6db74'),\n 'template-tag': Style.parse('#f92672'),\n subst: Style.parse('#f8f8f2'),\n },\n};\n\n// Dracula theme - popular dark theme\nexport const DRACULA: SyntaxTheme = {\n name: 'dracula',\n background: '#282a36',\n styles: {\n keyword: Style.parse('#ff79c6 bold'),\n built_in: Style.parse('#8be9fd'),\n type: Style.parse('#8be9fd italic'),\n literal: Style.parse('#bd93f9'),\n number: Style.parse('#bd93f9'),\n string: Style.parse('#f1fa8c'),\n regexp: Style.parse('#f1fa8c'),\n comment: Style.parse('#6272a4 dim'),\n function: Style.parse('#50fa7b'),\n title: Style.parse('#50fa7b'),\n 'title.function': Style.parse('#50fa7b'),\n 'title.class': Style.parse('#50fa7b italic'),\n params: Style.parse('#ffb86c italic'),\n variable: Style.parse('#f8f8f2'),\n property: Style.parse('#8be9fd'),\n attr: Style.parse('#50fa7b'),\n operator: Style.parse('#ff79c6'),\n tag: Style.parse('#ff79c6'),\n },\n};\n\n// GitHub Light theme\nexport const GITHUB_LIGHT: SyntaxTheme = {\n name: 'github',\n styles: {\n keyword: Style.parse('#d73a49 bold'),\n built_in: Style.parse('#005cc5'),\n type: Style.parse('#005cc5'),\n literal: Style.parse('#005cc5'),\n number: Style.parse('#005cc5'),\n string: Style.parse('#032f62'),\n regexp: Style.parse('#032f62'),\n comment: Style.parse('#6a737d dim'),\n function: Style.parse('#6f42c1'),\n title: Style.parse('#6f42c1'),\n 'title.function': Style.parse('#6f42c1'),\n 'title.class': Style.parse('#6f42c1 bold'),\n params: Style.parse('#24292e'),\n variable: Style.parse('#24292e'),\n property: Style.parse('#005cc5'),\n attr: Style.parse('#6f42c1'),\n operator: Style.parse('#d73a49'),\n tag: Style.parse('#22863a'),\n },\n};\n\n// One Dark theme (Atom)\nexport const ONE_DARK: SyntaxTheme = {\n name: 'one-dark',\n background: '#282c34',\n styles: {\n keyword: Style.parse('#c678dd bold'),\n built_in: Style.parse('#e5c07b'),\n type: Style.parse('#e5c07b italic'),\n literal: Style.parse('#d19a66'),\n number: Style.parse('#d19a66'),\n string: Style.parse('#98c379'),\n regexp: Style.parse('#98c379'),\n comment: Style.parse('#5c6370 dim'),\n function: Style.parse('#61afef'),\n title: Style.parse('#61afef'),\n 'title.function': Style.parse('#61afef'),\n 'title.class': Style.parse('#e5c07b bold'),\n params: Style.parse('#abb2bf italic'),\n variable: Style.parse('#e06c75'),\n property: Style.parse('#e06c75'),\n attr: Style.parse('#d19a66'),\n operator: Style.parse('#56b6c2'),\n tag: Style.parse('#e06c75'),\n },\n};\n\n// Theme registry\nexport const SYNTAX_THEMES: Record<string, SyntaxTheme> = {\n monokai: MONOKAI,\n dracula: DRACULA,\n github: GITHUB_LIGHT,\n 'github-light': GITHUB_LIGHT,\n 'one-dark': ONE_DARK,\n atom: ONE_DARK,\n};\n\nexport function getTheme(name: string): SyntaxTheme {\n return SYNTAX_THEMES[name] ?? MONOKAI;\n}\n\n// Legacy export for backwards compatibility\nexport const MONOKAI_THEME = {\n keyword: Style.parse('bold magenta'),\n string: Style.parse('yellow'),\n number: Style.parse('magenta'),\n comment: Style.parse('dim white'),\n operator: Style.parse('bold white'),\n function: Style.parse('green'),\n class: Style.parse('bold blue'),\n title: Style.parse('bold white'),\n};\n","/** biome-ignore-all assist/source/organizeImports: false */\nimport hljs, { type HighlightResult } from 'highlight.js';\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { getTheme, type SyntaxTheme } from './theme';\nimport stringWidth from 'string-width';\n\nexport interface SyntaxOptions {\n theme?: string;\n lineNumbers?: boolean;\n startLine?: number;\n highlightLines?: number[]; // Lines to highlight (e.g., error lines)\n wordWrap?: boolean;\n}\n\n/**\n * Syntax highlighted code renderable.\n * Uses highlight.js for tokenization and applies Rich-style themes.\n */\nexport class Syntax implements Renderable {\n private readonly syntaxTheme: SyntaxTheme;\n\n constructor(\n public readonly code: string,\n public readonly lexer: string,\n public readonly options: SyntaxOptions = {},\n ) {\n this.syntaxTheme = getTheme(options.theme ?? 'monokai');\n }\n\n /**\n * Create Syntax from a file path (convenience method).\n */\n static fromPath(filePath: string, options: SyntaxOptions = {}): Syntax {\n const fs = require('node:fs');\n const path = require('node:path');\n const code = fs.readFileSync(filePath, 'utf-8');\n const ext = path.extname(filePath).slice(1);\n\n // Map common extensions to highlight.js lexer names\n const lexerMap: Record<string, string> = {\n ts: 'typescript',\n tsx: 'typescript',\n js: 'javascript',\n jsx: 'javascript',\n py: 'python',\n rb: 'ruby',\n rs: 'rust',\n go: 'go',\n java: 'java',\n cpp: 'cpp',\n c: 'c',\n h: 'c',\n hpp: 'cpp',\n cs: 'csharp',\n php: 'php',\n sh: 'bash',\n bash: 'bash',\n zsh: 'bash',\n md: 'markdown',\n json: 'json',\n yaml: 'yaml',\n yml: 'yaml',\n toml: 'ini',\n css: 'css',\n scss: 'scss',\n html: 'html',\n xml: 'xml',\n sql: 'sql',\n };\n\n const lexer = lexerMap[ext] ?? ext;\n return new Syntax(code, lexer, options);\n }\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n const segments: Segment[] = [];\n const startLine = this.options.startLine ?? 1;\n const showLineNumbers = this.options.lineNumbers ?? false;\n const highlightLines = new Set(this.options.highlightLines ?? []);\n\n // Highlight the code\n let highlighted: HighlightResult;\n try {\n highlighted = hljs.highlight(this.code, { language: this.lexer });\n } catch {\n // Fallback if language not found\n highlighted = hljs.highlightAuto(this.code);\n }\n\n // Parse highlighted HTML into tokens\n const tokens = this.parseHighlightedHtml(highlighted.value);\n\n // Group tokens by line\n const lines = this.groupTokensByLine(tokens);\n\n // Calculate line number width\n const lastLineNumber = startLine + lines.length - 1;\n const lineNumberWidth = showLineNumbers ? String(lastLineNumber).length + 1 : 0;\n\n let maxWidth = 0;\n\n lines.forEach((lineTokens, i) => {\n const lineNumber = startLine + i;\n const isHighlighted = highlightLines.has(lineNumber);\n\n // Error line indicator\n if (isHighlighted) {\n segments.push(new Segment('❱ ', Style.parse('#ff5555 bold')));\n } else if (showLineNumbers) {\n segments.push(new Segment(' ', Style.null()));\n }\n\n // Line number\n if (showLineNumbers) {\n const lineNumStr = String(lineNumber).padStart(lineNumberWidth - 1);\n const lineNumStyle = isHighlighted\n ? Style.parse('#ff5555 bold')\n : Style.parse('#6e7681 dim');\n segments.push(new Segment(`${lineNumStr} │ `, lineNumStyle));\n }\n\n // Line content with syntax highlighting\n let lineWidth = 0;\n for (const token of lineTokens) {\n // Apply highlight background for error lines\n let style = token.style;\n if (isHighlighted) {\n style = style.combine(Style.parse('on #3a1d1d'));\n }\n segments.push(new Segment(token.text, style));\n lineWidth += stringWidth(token.text);\n }\n\n segments.push(new Segment('\\n', Style.null(), true));\n\n const totalLineWidth = lineWidth + (showLineNumbers ? lineNumberWidth + 5 : 0);\n if (totalLineWidth > maxWidth) maxWidth = totalLineWidth;\n });\n\n return {\n segments,\n width: maxWidth,\n };\n }\n\n /**\n * Parse highlight.js HTML output into styled tokens.\n */\n private parseHighlightedHtml(html: string): Array<{ text: string; style: Style }> {\n const tokens: Array<{ text: string; style: Style }> = [];\n\n // Recursive parser for nested spans\n\n // Regex to match HTML tags and text is inlined in openMatch below\n\n const processHtml = (input: string, inheritedScope: string[] = []) => {\n // Simple recursive descent parser for nested spans\n let remaining = input;\n\n while (remaining.length > 0) {\n // Check for opening span\n const openMatch = remaining.match(/^<span class=\"hljs-([^\"]+)\">/);\n if (openMatch) {\n remaining = remaining.slice(openMatch[0].length);\n const scope = openMatch[1];\n\n // Find matching closing tag (handling nesting)\n let depth = 1;\n let innerEnd = 0;\n for (let i = 0; i < remaining.length; i++) {\n if (remaining.slice(i).startsWith('<span')) {\n depth++;\n } else if (remaining.slice(i).startsWith('</span>')) {\n depth--;\n if (depth === 0) {\n innerEnd = i;\n break;\n }\n }\n }\n\n const innerContent = remaining.slice(0, innerEnd);\n remaining = remaining.slice(innerEnd + '</span>'.length);\n\n // Process inner content with updated scope\n const newScope = [...inheritedScope, scope];\n processHtml(innerContent, newScope);\n continue;\n }\n\n // Check for text content\n const textMatch = remaining.match(/^([^<]+)/);\n if (textMatch) {\n const text = this.decodeHtmlEntities(textMatch[1]);\n const scope = inheritedScope[inheritedScope.length - 1] ?? '';\n const style = this.getStyleForScope(scope);\n tokens.push({ text, style });\n remaining = remaining.slice(textMatch[0].length);\n continue;\n }\n\n // Skip any other tags\n const tagMatch = remaining.match(/^<[^>]+>/);\n if (tagMatch) {\n remaining = remaining.slice(tagMatch[0].length);\n continue;\n }\n\n // Safety: if nothing matches, consume one character\n if (remaining.length > 0) {\n tokens.push({ text: remaining[0], style: Style.null() });\n remaining = remaining.slice(1);\n }\n }\n };\n\n processHtml(html);\n return tokens;\n }\n\n /**\n * Decode HTML entities to their character equivalents.\n */\n private decodeHtmlEntities(text: string): string {\n return text\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n .replace(/&quot;/g, '\"')\n .replace(/&#x27;/g, \"'\")\n .replace(/&#39;/g, \"'\")\n .replace(/&nbsp;/g, ' ');\n }\n\n /**\n * Get style for a highlight.js scope/class.\n */\n private getStyleForScope(scope: string): Style {\n if (!scope) return Style.null();\n\n // Try exact match first\n if (this.syntaxTheme.styles[scope]) {\n return this.syntaxTheme.styles[scope];\n }\n\n // Try parent scope (e.g., 'title.function' -> 'title')\n const parts = scope.split('.');\n for (let i = parts.length - 1; i >= 0; i--) {\n const partialScope = parts.slice(0, i + 1).join('.');\n if (this.syntaxTheme.styles[partialScope]) {\n return this.syntaxTheme.styles[partialScope];\n }\n }\n\n // Try first part only\n if (this.syntaxTheme.styles[parts[0]]) {\n return this.syntaxTheme.styles[parts[0]];\n }\n\n return Style.null();\n }\n\n /**\n * Group tokens by line (split on newlines).\n */\n private groupTokensByLine(\n tokens: Array<{ text: string; style: Style }>,\n ): Array<Array<{ text: string; style: Style }>> {\n const lines: Array<Array<{ text: string; style: Style }>> = [[]];\n\n for (const token of tokens) {\n const parts = token.text.split('\\n');\n\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n lines.push([]);\n }\n if (parts[i]) {\n lines[lines.length - 1].push({ text: parts[i], style: token.style });\n }\n }\n }\n\n return lines;\n }\n}\n","/** biome-ignore-all assist/source/organizeImports: false */\nimport fs from 'node:fs';\nimport { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { Trace, type StackFrame } from './trace';\nimport { Syntax } from '../syntax/syntax';\n\nexport interface TracebackOptions {\n showLocals?: boolean;\n extraLines?: number;\n theme?: string;\n suppressInternal?: boolean;\n maxFrames?: number;\n}\n\n/**\n * Beautiful error traceback rendering.\n * Displays syntax-highlighted stack traces with optional local variables.\n */\nexport class Traceback implements Renderable {\n private frames: StackFrame[];\n\n constructor(\n public readonly error: Error,\n public readonly options: TracebackOptions = {},\n ) {\n this.frames = Trace.parse(error);\n }\n\n __rich_console__(console: Console, consoleOptions: ConsoleOptions): RenderResult {\n const segments: Segment[] = [];\n const extraLines = this.options.extraLines ?? 3;\n const theme = this.options.theme ?? 'monokai';\n const suppressInternal = this.options.suppressInternal ?? true;\n const maxFrames = this.options.maxFrames ?? 100;\n const width = consoleOptions.width ?? console.width;\n\n // Header: \"Traceback (most recent call last)\"\n segments.push(new Segment('\\n', Style.null(), true));\n const headerStyle = Style.parse('#ff5555 bold');\n segments.push(new Segment('Traceback', headerStyle));\n segments.push(new Segment(' (most recent call last)\\n', Style.parse('dim')));\n segments.push(new Segment('\\n', Style.null(), true));\n\n // Filter and limit frames\n let filteredFrames = this.frames;\n if (suppressInternal) {\n filteredFrames = filteredFrames.filter(\n (f) => !f.filePath.startsWith('node:') && !f.filePath.includes('node_modules'),\n );\n }\n filteredFrames = filteredFrames.slice(0, maxFrames);\n\n // Render each frame\n for (const frame of filteredFrames) {\n // Frame header: File \"path\", line X, in functionName\n const frameHeaderStyle = Style.parse('#6e7681');\n segments.push(new Segment(' File ', frameHeaderStyle));\n segments.push(new Segment(`\"${frame.filePath}\"`, Style.parse('#61afef')));\n segments.push(new Segment(', line ', frameHeaderStyle));\n segments.push(new Segment(String(frame.lineNumber), Style.parse('#e5c07b bold')));\n segments.push(new Segment(', in ', frameHeaderStyle));\n segments.push(new Segment(frame.functionName, Style.parse('#98c379 italic')));\n segments.push(new Segment('\\n', Style.null(), true));\n\n // Code snippet\n let codeSnippet = '';\n try {\n if (fs.existsSync(frame.filePath)) {\n const content = fs.readFileSync(frame.filePath, 'utf-8');\n const lines = content.split('\\n');\n const start = Math.max(0, frame.lineNumber - extraLines - 1);\n const end = Math.min(lines.length, frame.lineNumber + extraLines);\n codeSnippet = lines.slice(start, end).join('\\n');\n\n // Detect language from file extension\n const ext = frame.filePath.split('.').pop() ?? 'txt';\n const lexerMap: Record<string, string> = {\n ts: 'typescript',\n tsx: 'typescript',\n js: 'javascript',\n jsx: 'javascript',\n py: 'python',\n rb: 'ruby',\n rs: 'rust',\n go: 'go',\n };\n const lexer = lexerMap[ext] ?? ext;\n\n // Create syntax highlighter with error line highlighted\n const syntax = new Syntax(codeSnippet, lexer, {\n theme,\n lineNumbers: true,\n startLine: start + 1,\n highlightLines: [frame.lineNumber],\n });\n\n // Render the syntax block\n const syntaxResult = syntax.__rich_console__(console, {\n ...consoleOptions,\n width: width - 4,\n });\n\n // Indent the code block\n segments.push(new Segment('\\n', Style.null(), true));\n for (const seg of syntaxResult.segments) {\n if (seg.isControl && seg.text === '\\n') {\n segments.push(seg);\n segments.push(new Segment(' ')); // Indent each line\n } else {\n segments.push(seg);\n }\n }\n }\n } catch {\n // If file can't be read, show a placeholder\n segments.push(new Segment(' ', Style.null()));\n segments.push(new Segment('[source not available]', Style.parse('dim italic')));\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Error message at the bottom\n const errorNameStyle = Style.parse('#ff5555 bold');\n const errorMsgStyle = Style.parse('#ff5555');\n\n segments.push(new Segment(this.error.name, errorNameStyle));\n segments.push(new Segment(': ', Style.parse('dim')));\n segments.push(new Segment(this.error.message, errorMsgStyle));\n segments.push(new Segment('\\n', Style.null(), true));\n\n return { segments, width };\n }\n}\n\n/**\n * Install Rich traceback handler as the default for uncaught exceptions.\n */\nexport function installTracebackHandler(options: TracebackOptions = {}): void {\n const console = new Console();\n\n process.on('uncaughtException', (error: Error) => {\n const traceback = new Traceback(error, options);\n console.print(traceback);\n process.exit(1);\n });\n\n process.on('unhandledRejection', (reason: unknown) => {\n const error = reason instanceof Error ? reason : new Error(String(reason));\n const traceback = new Traceback(error, options);\n console.print(traceback);\n process.exit(1);\n });\n}\n","import type { RenderResult, Renderable } from '../types/renderable';\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\n\nexport function getRenderResult(renderable: Renderable, console: Console, options: ConsoleOptions): RenderResult {\n const result = renderable.__rich_console__(console, options);\n if ('segments' in result) {\n return result;\n }\n // It's a generator\n return {\n segments: Array.from(result),\n width: options.width // approximation\n };\n}\n","import ansiEscapes from 'ansi-escapes';\nimport { Console } from '../console/console';\nimport type { Renderable } from '../types/renderable';\n\nexport class Live {\n private _started: boolean = false;\n private _lastHeight: number = 0;\n\n constructor(\n private readonly renderable: Renderable,\n private readonly console: Console,\n private readonly autoRefresh: boolean = true\n ) {}\n\n start(): void {\n this._started = true;\n this.refresh();\n }\n\n stop(): void {\n this._started = false;\n // Keep the last render on screen\n this.console.print(''); \n }\n\n update(renderable: Renderable): void {\n // In a real implementation we would swap the internal renderable\n // For now we assume the renderable passed in constructor is mutable or we'd add a setRenderable\n // But wait, the user passed a new one?\n // Let's support swapping.\n (this as any).renderable = renderable;\n this.refresh();\n }\n\n refresh(): void {\n if (!this._started) return;\n\n // 1. Clear previous render\n if (this._lastHeight > 0) {\n process.stdout.write(ansiEscapes.eraseLines(this._lastHeight));\n }\n\n // 2. Render new content\n // We use a lower-level render that doesn't print newline automatically?\n // console.render returns a string.\n const output = this.console.render(this.renderable);\n \n // 3. Count lines\n const lines = output.split('\\n').length;\n this._lastHeight = lines; // +1? output often ends with newline\n\n // 4. Write\n process.stdout.write(output);\n }\n}\n","import cliSpinners from 'cli-spinners';\nimport { Style } from '../core/style';\nimport { Segment } from '../core/segment';\nimport { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\n\n// Re-export or define SpinnerName if not available\nexport type SpinnerName = keyof typeof cliSpinners;\n\nexport class Spinner implements Renderable {\n private frame: number = 0;\n // @ts-ignore\n private readonly spinner: any; // Type definition issues with cli-spinners\n\n constructor(\n public readonly name: SpinnerName = 'dots',\n public readonly style: Style = Style.null()\n ) {\n this.spinner = cliSpinners[name];\n }\n\n get currentFrame(): string {\n return this.spinner.frames[this.frame];\n }\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n return {\n segments: [new Segment(this.currentFrame, this.style)],\n width: 1 // approximates\n };\n }\n\n nextFrame(): void {\n this.frame = (this.frame + 1) % this.spinner.frames.length;\n }\n}","import { Segment } from './segment';\nimport { Style } from './style';\n\n/**\n * Split a list of segments into lines based on newlines.\n */\nexport function splitLines(segments: Segment[]): Segment[][] {\n const lines: Segment[][] = [];\n let currentLine: Segment[] = [];\n\n for (const segment of segments) {\n if (segment.text.includes('\\n')) {\n const parts = segment.text.split('\\n');\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (part) {\n currentLine.push(new Segment(part, segment.style, segment.isControl));\n }\n \n if (i < parts.length - 1) {\n lines.push(currentLine);\n currentLine = [];\n }\n }\n } else {\n currentLine.push(segment);\n }\n }\n \n if (currentLine.length > 0) {\n lines.push(currentLine);\n }\n\n return lines;\n}\n\n/**\n * Pad a line of segments to a specific width.\n */\nexport function padLine(line: Segment[], width: number, style: Style = Style.null()): Segment[] {\n const currentWidth = line.reduce((acc, s) => acc + s.cellLength(), 0);\n if (currentWidth >= width) return line;\n\n const padding = width - currentWidth;\n return [...line, new Segment(' '.repeat(padding), style)];\n}\n","import { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { splitLines, padLine } from '../core/lines';\nimport { getRenderResult } from '../utils/render-utils';\n\nexport interface LayoutOptions {\n size?: number; // Fixed size\n ratio?: number; // Flex ratio (default 1)\n minimumSize?: number; // Min width/height\n visible?: boolean;\n}\n\nexport class Layout implements Renderable {\n private _renderable: Renderable | null = null;\n private _children: Layout[] = [];\n private _direction: 'row' | 'column' = 'column';\n \n public size: number | undefined;\n public ratio: number = 1;\n public minimumSize: number = 0;\n public visible: boolean = true;\n\n constructor(renderable?: Renderable, options: LayoutOptions = {}) {\n if (renderable) this._renderable = renderable;\n this.size = options.size;\n this.ratio = options.ratio ?? 1;\n this.minimumSize = options.minimumSize ?? 0;\n this.visible = options.visible ?? true;\n }\n\n /**\n * Split the layout into a row (horizontal split).\n */\n splitRow(...layouts: (Layout | Renderable)[]): void {\n this._direction = 'row';\n this._children = layouts.map(l => l instanceof Layout ? l : new Layout(l));\n }\n\n /**\n * Split the layout into a column (vertical split).\n */\n splitColumn(...layouts: (Layout | Renderable)[]): void {\n this._direction = 'column';\n this._children = layouts.map(l => l instanceof Layout ? l : new Layout(l));\n }\n\n get renderable(): Renderable | null {\n return this._renderable;\n }\n\n update(renderable: Renderable): void {\n this._renderable = renderable;\n }\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n if (!this.visible) return { segments: [], width: 0, height: 0 };\n\n const width = options.width ?? console.width;\n const height = options.height ?? console.height; \n\n // Leaf node: render the content\n if (this._children.length === 0) {\n if (this._renderable) {\n return getRenderResult(this._renderable, console, { ...options, width, height });\n }\n // Empty layout\n return { segments: [], width, height: 0 };\n }\n\n const segments: Segment[] = [];\n \n if (this._direction === 'column') {\n // Vertical Split\n // In terminal, usually we just stack them. \n // If we had a fixed height constraint for THIS layout, we could distribute it.\n // For now, we assume implicit auto-height behavior unless explicit fixed height is implemented\n // which requires clipping.\n \n for (const child of this._children) {\n if (!child.visible) continue;\n \n const result = getRenderResult(child, console, { ...options, width });\n segments.push(...result.segments);\n const last = result.segments[result.segments.length - 1];\n if (last && !last.text.endsWith('\\n')) {\n segments.push(new Segment('\\n'));\n }\n }\n } else {\n // Horizontal Split (Row)\n const childWidths = this.calculateSizes(width, this._children);\n const renderedLines: Segment[][][] = [];\n let maxHeight = 0;\n\n // Render each child into its slice\n this._children.forEach((child, i) => {\n if (!child.visible) {\n renderedLines.push([]);\n return;\n }\n \n const w = childWidths[i];\n const result = getRenderResult(child, console, { ...options, width: w });\n \n let childSegments: Segment[] = result.segments;\n \n const lines = splitLines(childSegments);\n renderedLines.push(lines);\n if (lines.length > maxHeight) maxHeight = lines.length;\n });\n\n // Zip lines together\n for (let y = 0; y < maxHeight; y++) {\n for (let x = 0; x < this._children.length; x++) {\n if (!this._children[x].visible) continue;\n \n const lines = renderedLines[x];\n const w = childWidths[x];\n \n if (y < lines.length) {\n const line = lines[y];\n segments.push(...padLine(line, w));\n } else {\n segments.push(new Segment(' '.repeat(w)));\n }\n }\n segments.push(new Segment('\\n'));\n }\n }\n\n return { segments, width, height };\n }\n\n /**\n * Calculates the size (width for rows, height for columns) for each child\n * based on constraints.\n */\n private calculateSizes(availableSpace: number, children: Layout[]): number[] {\n const sizes = new Array(children.length).fill(0);\n const visibleChildren = children.map((c, i) => ({ child: c, index: i })).filter(x => x.child.visible);\n \n if (visibleChildren.length === 0) return sizes;\n\n let remainingSpace = availableSpace;\n let totalRatio = 0;\n\n // Pass 1: Allocate fixed sizes and minimums\n for (const { child, index } of visibleChildren) {\n if (child.size !== undefined) {\n const size = Math.min(child.size, remainingSpace);\n sizes[index] = size;\n remainingSpace -= size;\n } else if (child.minimumSize > 0) {\n sizes[index] = child.minimumSize;\n remainingSpace -= child.minimumSize;\n }\n \n // Only count ratio for children without fixed size\n if (child.size === undefined) {\n totalRatio += child.ratio;\n }\n }\n\n if (remainingSpace <= 0) return sizes;\n\n // Pass 2: Distribute remaining space by ratio\n // If totalRatio is 0 (all fixed), remaining space stays unused (or could be given to last)\n if (totalRatio > 0) {\n let distributed = 0;\n \n // Distribute to all flexible children\n for (let i = 0; i < visibleChildren.length; i++) {\n const { child, index } = visibleChildren[i];\n if (child.size === undefined) {\n const share = Math.floor((child.ratio / totalRatio) * remainingSpace);\n sizes[index] += share;\n distributed += share;\n }\n }\n \n // Give rounding dust to the last flexible child\n const dust = remainingSpace - distributed;\n if (dust > 0) {\n // Find last flexible child\n for (let i = visibleChildren.length - 1; i >= 0; i--) {\n const { child, index } = visibleChildren[i];\n if (child.size === undefined) {\n sizes[index] += dust;\n break;\n }\n }\n }\n }\n\n return sizes;\n }\n}","import { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { MarkupParser } from '../core/markup';\nimport wrapAnsi from 'wrap-ansi';\n\nexport type JustifyMethod = 'left' | 'center' | 'right' | 'full';\nexport type OverflowMethod = 'fold' | 'crop' | 'ellipsis';\n\nexport class Text implements Renderable {\n private readonly segments: Segment[];\n\n constructor(\n content: string | Segment[],\n public readonly style: Style = Style.null(),\n public readonly justify: JustifyMethod = 'left',\n public readonly overflow: OverflowMethod = 'fold',\n public readonly noWrap: boolean = false\n ) {\n if (typeof content === 'string') {\n const parser = new MarkupParser();\n this.segments = parser.parse(content);\n } else {\n this.segments = content;\n }\n }\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n const width = options.width ?? console.width;\n const text = this.segments.map(s => s.render()).join('');\n \n let wrapped = text;\n if (!this.noWrap) {\n wrapped = wrapAnsi(text, width, { hard: true, trim: false });\n }\n\n // TODO: Implement justification and overflow\n \n const resultSegments = wrapped.split('\\n').flatMap(line => {\n // This is a bit simplified as we lose original segments styles if we just wrap the rendered string\n // In a full implementation we'd wrap the Segment objects themselves.\n return [new Segment(line), new Segment('\\n', Style.null(), true)];\n });\n\n return {\n segments: resultSegments,\n width: width,\n };\n }\n}\n","import { Console } from '../console/console';\nimport { Live } from '../live/live';\nimport { Spinner } from './spinner';\nimport { Layout } from '../layout/layout';\nimport { Text } from '../renderables/text';\nimport type { SpinnerName } from 'cli-spinners';\n\nexport class Status {\n private live: Live;\n private spinner: Spinner;\n private message: string;\n private interval: NodeJS.Timeout | null = null;\n\n constructor(\n message: string,\n options: { console?: Console, spinner?: SpinnerName } = {}\n ) {\n this.message = message;\n this.spinner = new Spinner(options.spinner ?? 'dots');\n const console = options.console ?? new Console();\n this.live = new Live(this.render(), console);\n }\n\n start(): void {\n this.live.start();\n this.interval = setInterval(() => {\n this.spinner.nextFrame();\n this.live.update(this.render());\n }, 80);\n }\n\n stop(): void {\n if (this.interval) clearInterval(this.interval);\n this.live.stop();\n }\n\n update(message: string): void {\n this.message = message;\n this.live.update(this.render());\n }\n\n private render(): Layout {\n const layout = new Layout();\n layout.splitRow(\n this.spinner,\n new Text(\" \" + this.message)\n );\n return layout;\n }\n}\n","import process from 'process';\nimport wrapAnsi from 'wrap-ansi';\nimport { Terminal } from '../terminal/terminal';\nimport { MarkupParser } from '../core/markup';\nimport type { ConsoleOptions } from '../types/console-options';\nimport { isRenderable, type Renderable } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Traceback } from '../traceback/traceback';\nimport { Theme, DEFAULT_THEME } from '../themes/theme';\nimport { getRenderResult } from '../utils/render-utils';\nimport { Status } from '../status/status';\nimport type { SpinnerName } from 'cli-spinners';\n\nexport class Console {\n private readonly terminal: Terminal;\n private readonly markupParser: MarkupParser;\n private readonly options: ConsoleOptions;\n public theme: Theme;\n\n constructor(options: ConsoleOptions = {}) {\n this.options = options;\n this.terminal = new Terminal();\n this.theme = options.theme ?? DEFAULT_THEME;\n this.markupParser = new MarkupParser(this.theme);\n }\n\n get width(): number {\n return this.options.width ?? this.terminal.width;\n }\n\n get height(): number {\n return this.options.height ?? this.terminal.height;\n }\n\n /**\n * Prints objects to the console.\n */\n print(...objects: any[]): void {\n const lastObj = objects[objects.length - 1];\n let printObjects = objects;\n let options: { style?: any, markup?: boolean } = {};\n\n // Check for options object at the end\n if (\n objects.length > 1 &&\n typeof lastObj === 'object' &&\n lastObj !== null &&\n !isRenderable(lastObj) &&\n ('style' in lastObj || 'markup' in lastObj)\n ) {\n options = objects.pop();\n printObjects = objects;\n }\n\n const output = printObjects\n .map((obj) => {\n if (typeof obj === 'string') {\n return this.renderString(obj, options.markup ?? true);\n }\n if (isRenderable(obj)) {\n return this.render(obj);\n }\n return String(obj);\n })\n .join(' ');\n\n this.write(output + '\\n');\n }\n\n /**\n * Prints a formatted exception.\n */\n printException(error: Error): void {\n const traceback = new Traceback(error);\n this.print(traceback);\n }\n\n /**\n * Displays a status spinner.\n */\n status(message: string, options: { spinner?: SpinnerName } = {}): { start: () => void, stop: () => void, update: (msg: string) => void } & Promise<void> {\n // Allow usage as a context manager if a callback is provided? \n // JavaScript doesn't have 'with'. \n // We can return an object with start/stop.\n // But to match python \"with console.status(...) as status:\", we might want a callback helper?\n // For now, let's return the Status object controls.\n // But wait, the Python example is:\n // with console.status(\"Working...\"):\n // time.sleep(2)\n //\n // In JS:\n // await console.status(\"Working...\", async () => { await sleep(2000) });\n \n // Let's implement the callback overload.\n return new Status(message, { console: this, ...options }) as any;\n }\n \n /**\n * Run a task with a status spinner.\n */\n async withStatus<T>(message: string, task: (status: Status) => Promise<T>, options: { spinner?: SpinnerName } = {}): Promise<T> {\n const status = new Status(message, { console: this, ...options });\n status.start();\n try {\n return await task(status);\n } finally {\n status.stop();\n }\n }\n\n /**\n * Renders a renderable object to a string.\n */\n render(renderable: Renderable): string {\n const result = getRenderResult(renderable, this, this.options);\n return result.segments.map((s: Segment) => s.render()).join('');\n }\n\n /**\n * Internal string rendering with markup and wrapping.\n */\n private renderString(text: string, markup: boolean = true): string {\n const segments = markup ? this.markupParser.parse(text) : [new Segment(text)];\n const rendered = segments.map((s) => s.render()).join('');\n\n // Apply word wrapping\n // wrapAnsi handles ANSI codes correctly\n return wrapAnsi(rendered, this.width, { hard: true });\n }\n\n /**\n * Low-level write to stdout.\n */\n private write(text: string): void {\n process.stdout.write(text);\n }\n}\n","import boxes from 'cli-boxes';\n\nexport interface BoxData {\n topLeft: string;\n top: string;\n topRight: string;\n right: string;\n bottomRight: string;\n bottom: string;\n bottomLeft: string;\n left: string;\n // Middle connectors for tables\n topMid?: string;\n midMid?: string;\n bottomMid?: string;\n leftMid?: string;\n rightMid?: string;\n mid?: string;\n verticalMid?: string;\n [key: string]: string | undefined;\n}\n\n// Custom box definitions for styles not in cli-boxes or with enhanced connectors\nconst CUSTOM_BOXES: Record<string, BoxData> = {\n // Rounded corners (may not be in all versions of cli-boxes)\n rounded: {\n topLeft: '╭',\n top: '─',\n topRight: '╮',\n right: '│',\n bottomRight: '╯',\n bottom: '─',\n bottomLeft: '╰',\n left: '│',\n topMid: '┬',\n midMid: '┼',\n bottomMid: '┴',\n leftMid: '├',\n rightMid: '┤',\n mid: '─',\n verticalMid: '│',\n },\n round: {\n topLeft: '╭',\n top: '─',\n topRight: '╮',\n right: '│',\n bottomRight: '╯',\n bottom: '─',\n bottomLeft: '╰',\n left: '│',\n topMid: '┬',\n midMid: '┼',\n bottomMid: '┴',\n leftMid: '├',\n rightMid: '┤',\n mid: '─',\n verticalMid: '│',\n },\n // Heavy/bold lines\n heavy: {\n topLeft: '┏',\n top: '━',\n topRight: '┓',\n right: '┃',\n bottomRight: '┛',\n bottom: '━',\n bottomLeft: '┗',\n left: '┃',\n topMid: '┳',\n midMid: '╋',\n bottomMid: '┻',\n leftMid: '┣',\n rightMid: '┫',\n mid: '━',\n verticalMid: '┃',\n },\n // Double lines\n double: {\n topLeft: '╔',\n top: '═',\n topRight: '╗',\n right: '║',\n bottomRight: '╝',\n bottom: '═',\n bottomLeft: '╚',\n left: '║',\n topMid: '╦',\n midMid: '╬',\n bottomMid: '╩',\n leftMid: '╠',\n rightMid: '╣',\n mid: '═',\n verticalMid: '║',\n },\n // Single/square lines\n single: {\n topLeft: '┌',\n top: '─',\n topRight: '┐',\n right: '│',\n bottomRight: '┘',\n bottom: '─',\n bottomLeft: '└',\n left: '│',\n topMid: '┬',\n midMid: '┼',\n bottomMid: '┴',\n leftMid: '├',\n rightMid: '┤',\n mid: '─',\n verticalMid: '│',\n },\n square: {\n topLeft: '┌',\n top: '─',\n topRight: '┐',\n right: '│',\n bottomRight: '┘',\n bottom: '─',\n bottomLeft: '└',\n left: '│',\n topMid: '┬',\n midMid: '┼',\n bottomMid: '┴',\n leftMid: '├',\n rightMid: '┤',\n mid: '─',\n verticalMid: '│',\n },\n // ASCII-safe\n ascii: {\n topLeft: '+',\n top: '-',\n topRight: '+',\n right: '|',\n bottomRight: '+',\n bottom: '-',\n bottomLeft: '+',\n left: '|',\n topMid: '+',\n midMid: '+',\n bottomMid: '+',\n leftMid: '+',\n rightMid: '+',\n mid: '-',\n verticalMid: '|',\n },\n // Minimal - no borders\n minimal: {\n topLeft: ' ',\n top: ' ',\n topRight: ' ',\n right: ' ',\n bottomRight: ' ',\n bottom: ' ',\n bottomLeft: ' ',\n left: ' ',\n topMid: ' ',\n midMid: ' ',\n bottomMid: ' ',\n leftMid: ' ',\n rightMid: ' ',\n mid: '─',\n verticalMid: ' ',\n },\n // Simple - just horizontal lines\n simple: {\n topLeft: ' ',\n top: '─',\n topRight: ' ',\n right: ' ',\n bottomRight: ' ',\n bottom: '─',\n bottomLeft: ' ',\n left: ' ',\n topMid: ' ',\n midMid: '─',\n bottomMid: ' ',\n leftMid: ' ',\n rightMid: ' ',\n mid: '─',\n verticalMid: ' ',\n },\n // Markdown style\n markdown: {\n topLeft: ' ',\n top: ' ',\n topRight: ' ',\n right: '|',\n bottomRight: ' ',\n bottom: ' ',\n bottomLeft: ' ',\n left: '|',\n topMid: ' ',\n midMid: '|',\n bottomMid: ' ',\n leftMid: '|',\n rightMid: '|',\n mid: '-',\n verticalMid: '|',\n },\n};\n\nexport type BoxStyle =\n | 'none'\n | 'rounded'\n | 'round'\n | 'heavy'\n | 'bold'\n | 'double'\n | 'single'\n | 'square'\n | 'ascii'\n | 'minimal'\n | 'simple'\n | 'markdown'\n | keyof typeof boxes;\n\n/**\n * Get box drawing characters for a given style.\n */\nexport function getBox(style: BoxStyle): BoxData | null {\n if (style === 'none') return null;\n\n // Check custom boxes first (they have better middle connector support)\n if (style in CUSTOM_BOXES) {\n return CUSTOM_BOXES[style];\n }\n\n // Alias handling\n if (style === 'bold') {\n return CUSTOM_BOXES.heavy;\n }\n\n // Fall back to cli-boxes\n const cliBox = (boxes as Record<string, BoxData>)[style];\n if (cliBox) {\n // Enhance cli-boxes data with middle connectors\n return {\n ...cliBox,\n topMid: cliBox.topMid ?? '┬',\n midMid: cliBox.midMid ?? '┼',\n bottomMid: cliBox.bottomMid ?? '┴',\n leftMid: cliBox.leftMid ?? '├',\n rightMid: cliBox.rightMid ?? '┤',\n mid: cliBox.mid ?? '─',\n verticalMid: cliBox.verticalMid ?? '│',\n };\n }\n\n // Default to rounded\n return CUSTOM_BOXES.rounded;\n}\n\n/**\n * List all available box styles.\n */\nexport function listBoxStyles(): string[] {\n const customStyles = Object.keys(CUSTOM_BOXES);\n const cliBoxStyles = Object.keys(boxes);\n return [...new Set([...customStyles, ...cliBoxStyles])];\n}\n","/** biome-ignore-all assist/source/organizeImports: biome-ignore assist/source/organizeImports */\n/** biome-ignore-all lint/suspicious/noExplicitAny: biome-ignore lint/suspicious/noExplicitAny */\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { isRenderable } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { getBox, type BoxStyle } from '../utils/box';\nimport { splitLines, padLine } from '../core/lines';\nimport stringWidth from 'string-width';\n\nexport interface PanelOptions {\n title?: string;\n titleAlign?: 'left' | 'center' | 'right';\n subtitle?: string;\n subtitleAlign?: 'left' | 'center' | 'right';\n box?: BoxStyle;\n style?: Style | string;\n borderStyle?: Style | string;\n padding?: number | [number, number] | [number, number, number, number];\n width?: number;\n height?: number;\n expand?: boolean;\n highlight?: boolean;\n}\n\n/**\n * A bordered panel container for any renderable content.\n * Supports titles, subtitles, various box styles, and padding.\n */\nexport class Panel implements Renderable {\n constructor(\n public readonly renderable: Renderable | string,\n public readonly options: PanelOptions = {},\n ) {}\n\n /**\n * Create a panel that fits its content (expand=false).\n */\n static fit(renderable: Renderable | string, options: PanelOptions = {}): Panel {\n return new Panel(renderable, { ...options, expand: false });\n }\n\n __rich_console__(console: Console, consoleOptions: ConsoleOptions): RenderResult {\n const box = getBox(this.options.box ?? 'rounded');\n const expand = this.options.expand ?? true;\n const maxWidth = this.options.width ?? consoleOptions.width ?? console.width;\n\n const borderStyle =\n typeof this.options.borderStyle === 'string'\n ? Style.parse(this.options.borderStyle)\n : (this.options.borderStyle ?? Style.parse('dim'));\n\n const titleAlign = this.options.titleAlign ?? 'center';\n const subtitleAlign = this.options.subtitleAlign ?? 'center';\n\n // Parse padding\n const padding = this.normalizePadding(this.options.padding ?? 1);\n const segments: Segment[] = [];\n\n if (!box) {\n return { segments: [], width: 0 };\n }\n\n // Render content first to determine width\n let contentSegments: Segment[] = [];\n if (typeof this.renderable === 'string') {\n // Simple string content\n contentSegments = [new Segment(this.renderable)];\n } else if (isRenderable(this.renderable)) {\n const contentWidth = maxWidth - 2 - padding[1] - padding[3];\n const result = this.renderable.__rich_console__(console, {\n ...consoleOptions,\n width: contentWidth,\n });\n if ('segments' in result) {\n contentSegments = Array.from(result.segments);\n }\n }\n\n // Split content into lines\n const lines = splitLines(contentSegments);\n\n // Calculate actual width needed\n let maxContentWidth = 0;\n for (const line of lines) {\n const lineWidth = line.reduce((w, seg) => w + stringWidth(seg.text), 0);\n if (lineWidth > maxContentWidth) maxContentWidth = lineWidth;\n }\n\n // Consider title/subtitle width\n const titleWidth = this.options.title ? stringWidth(this.options.title) + 4 : 0;\n const subtitleWidth = this.options.subtitle ? stringWidth(this.options.subtitle) + 4 : 0;\n\n let panelWidth: number;\n if (expand) {\n panelWidth = maxWidth;\n } else {\n panelWidth = Math.min(\n maxWidth,\n Math.max(maxContentWidth + 2 + padding[1] + padding[3], titleWidth + 2, subtitleWidth + 2),\n );\n }\n\n const innerWidth = panelWidth - 2;\n\n // Top border with optional title\n segments.push(...this.renderTopBorder(box, innerWidth, borderStyle, titleAlign));\n segments.push(new Segment('\\n', Style.null(), true));\n\n // Top padding\n for (let i = 0; i < padding[0]; i++) {\n segments.push(new Segment(box.left, borderStyle));\n segments.push(new Segment(' '.repeat(innerWidth)));\n segments.push(new Segment(box.right, borderStyle));\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Content rows with borders\n for (const line of lines) {\n segments.push(new Segment(box.left, borderStyle));\n\n // Left padding\n segments.push(new Segment(' '.repeat(padding[3])));\n\n // Content with right padding to fill width\n const contentPaddedWidth = innerWidth - padding[1] - padding[3];\n const paddedLine = padLine(line, contentPaddedWidth);\n segments.push(...paddedLine);\n\n // Right padding\n segments.push(new Segment(' '.repeat(padding[1])));\n\n segments.push(new Segment(box.right, borderStyle));\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Handle empty content\n if (lines.length === 0) {\n segments.push(new Segment(box.left, borderStyle));\n segments.push(new Segment(' '.repeat(innerWidth)));\n segments.push(new Segment(box.right, borderStyle));\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Bottom padding\n for (let i = 0; i < padding[2]; i++) {\n segments.push(new Segment(box.left, borderStyle));\n segments.push(new Segment(' '.repeat(innerWidth)));\n segments.push(new Segment(box.right, borderStyle));\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Bottom border with optional subtitle\n segments.push(...this.renderBottomBorder(box, innerWidth, borderStyle, subtitleAlign));\n segments.push(new Segment('\\n', Style.null(), true));\n\n return {\n segments,\n width: panelWidth,\n };\n }\n\n /**\n * Normalize padding to [top, right, bottom, left] format.\n */\n private normalizePadding(\n padding: number | [number, number] | [number, number, number, number],\n ): [number, number, number, number] {\n if (typeof padding === 'number') {\n return [padding, padding, padding, padding];\n }\n if (padding.length === 2) {\n return [padding[0], padding[1], padding[0], padding[1]];\n }\n return padding;\n }\n\n /**\n * Render top border with optional title.\n */\n private renderTopBorder(\n box: any,\n innerWidth: number,\n borderStyle: Style,\n align: 'left' | 'center' | 'right',\n ): Segment[] {\n const segments: Segment[] = [];\n\n if (this.options.title) {\n const title = ` ${this.options.title} `;\n const titleWidth = stringWidth(title);\n const remainingWidth = Math.max(0, innerWidth - titleWidth);\n\n let leftLine: string;\n let rightLine: string;\n\n switch (align) {\n case 'left':\n leftLine = '';\n rightLine = box.top.repeat(remainingWidth);\n break;\n case 'right':\n leftLine = box.top.repeat(remainingWidth);\n rightLine = '';\n break;\n case 'center':\n default: {\n const leftWidth = Math.floor(remainingWidth / 2);\n leftLine = box.top.repeat(leftWidth);\n rightLine = box.top.repeat(remainingWidth - leftWidth);\n break;\n }\n }\n\n segments.push(new Segment(box.topLeft, borderStyle));\n segments.push(new Segment(leftLine, borderStyle));\n segments.push(new Segment(title, Style.parse('bold')));\n segments.push(new Segment(rightLine, borderStyle));\n segments.push(new Segment(box.topRight, borderStyle));\n } else {\n segments.push(\n new Segment(box.topLeft + box.top.repeat(innerWidth) + box.topRight, borderStyle),\n );\n }\n\n return segments;\n }\n\n /**\n * Render bottom border with optional subtitle.\n */\n private renderBottomBorder(\n box: any,\n innerWidth: number,\n borderStyle: Style,\n align: 'left' | 'center' | 'right',\n ): Segment[] {\n const segments: Segment[] = [];\n\n if (this.options.subtitle) {\n const subtitle = ` ${this.options.subtitle} `;\n const subtitleWidth = stringWidth(subtitle);\n const remainingWidth = Math.max(0, innerWidth - subtitleWidth);\n\n let leftLine: string;\n let rightLine: string;\n\n switch (align) {\n case 'left':\n leftLine = '';\n rightLine = box.bottom.repeat(remainingWidth);\n break;\n case 'right':\n leftLine = box.bottom.repeat(remainingWidth);\n rightLine = '';\n break;\n case 'center':\n default: {\n const leftWidth = Math.floor(remainingWidth / 2);\n leftLine = box.bottom.repeat(leftWidth);\n rightLine = box.bottom.repeat(remainingWidth - leftWidth);\n break;\n }\n }\n\n segments.push(new Segment(box.bottomLeft, borderStyle));\n segments.push(new Segment(leftLine, borderStyle));\n segments.push(new Segment(subtitle, Style.parse('dim italic')));\n segments.push(new Segment(rightLine, borderStyle));\n segments.push(new Segment(box.bottomRight, borderStyle));\n } else {\n segments.push(\n new Segment(box.bottomLeft + box.bottom.repeat(innerWidth) + box.bottomRight, borderStyle),\n );\n }\n\n return segments;\n }\n}\n","import { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport stringWidth from 'string-width';\n\nexport class Rule implements Renderable {\n constructor(\n public readonly title: string = '',\n public readonly characters: string = '─',\n public readonly style: Style = Style.null()\n ) {}\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n const width = options.width ?? console.width;\n let line = '';\n \n if (this.title) {\n const titleText = ` ${this.title} `;\n const titleWidth = stringWidth(titleText);\n const sideWidth = Math.floor((width - titleWidth) / 2);\n line = this.characters.repeat(sideWidth) + titleText + this.characters.repeat(width - titleWidth - sideWidth);\n } else {\n line = this.characters.repeat(width);\n }\n\n return {\n segments: [new Segment(line, this.style), new Segment('\\n', Style.null(), true)],\n width: width,\n };\n }\n}\n","/** biome-ignore-all assist/source/organizeImports: biome-ignore assist/source/organizeImports */\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { getBox, type BoxStyle } from '../utils/box';\nimport { getRenderResult } from '../utils/render-utils';\nimport { isRenderable } from '../types/renderable';\nimport stringWidth from 'string-width';\n\nexport interface ColumnOptions {\n header?: string;\n footer?: string;\n style?: Style | string;\n headerStyle?: Style | string;\n footerStyle?: Style | string;\n justify?: 'left' | 'center' | 'right';\n vertical?: 'top' | 'middle' | 'bottom';\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n ratio?: number;\n noWrap?: boolean;\n overflow?: 'fold' | 'crop' | 'ellipsis';\n}\n\nclass Column {\n constructor(public readonly options: ColumnOptions) {}\n\n get header(): string {\n return this.options.header ?? '';\n }\n get footer(): string {\n return this.options.footer ?? '';\n }\n get justify(): 'left' | 'center' | 'right' {\n return this.options.justify ?? 'left';\n }\n get style(): Style {\n return typeof this.options.style === 'string'\n ? Style.parse(this.options.style)\n : (this.options.style ?? Style.null());\n }\n get headerStyle(): Style {\n return typeof this.options.headerStyle === 'string'\n ? Style.parse(this.options.headerStyle)\n : (this.options.headerStyle ?? Style.null());\n }\n}\n\nexport interface TableOptions {\n title?: string;\n caption?: string;\n box?: BoxStyle;\n showHeader?: boolean;\n showFooter?: boolean;\n showEdge?: boolean;\n showLines?: boolean;\n expand?: boolean;\n borderStyle?: Style | string;\n headerStyle?: Style | string;\n footerStyle?: Style | string;\n titleStyle?: Style | string;\n captionStyle?: Style | string;\n rowStyles?: string[]; // Alternating row styles, e.g., [\"dim\", \"\"] for zebra stripes\n padding?: number;\n highlight?: boolean;\n}\n\nexport class Table implements Renderable {\n private columns: Column[] = [];\n private rows: (Renderable | string)[][] = [];\n private footerRow: (Renderable | string)[] = [];\n\n constructor(public readonly options: TableOptions = {}) {}\n\n addColumn(header: string | ColumnOptions, options?: ColumnOptions): this {\n if (typeof header === 'string') {\n this.columns.push(new Column({ header, ...options }));\n } else {\n this.columns.push(new Column(header));\n }\n return this;\n }\n\n addRow(...cells: (Renderable | string)[]): this {\n this.rows.push(cells);\n return this;\n }\n\n addFooter(...cells: (Renderable | string)[]): this {\n this.footerRow = cells;\n return this;\n }\n\n private alignText(text: string, width: number, justify: 'left' | 'center' | 'right'): string {\n const textWidth = stringWidth(text);\n const space = Math.max(0, width - textWidth);\n\n if (justify === 'left') return text + ' '.repeat(space);\n if (justify === 'right') return ' '.repeat(space) + text;\n\n const leftSpace = Math.floor(space / 2);\n const rightSpace = space - leftSpace;\n return ' '.repeat(leftSpace) + text + ' '.repeat(rightSpace);\n }\n\n __rich_console__(console: Console, consoleOptions: ConsoleOptions): RenderResult {\n const width = consoleOptions.width ?? console.width;\n const box = getBox(this.options.box ?? 'rounded');\n const segments: Segment[] = [];\n const borderStyle =\n typeof this.options.borderStyle === 'string'\n ? Style.parse(this.options.borderStyle)\n : (this.options.borderStyle ?? Style.parse('dim'));\n const headerStyle =\n typeof this.options.headerStyle === 'string'\n ? Style.parse(this.options.headerStyle)\n : (this.options.headerStyle ?? Style.parse('bold cyan'));\n const titleStyle =\n typeof this.options.titleStyle === 'string'\n ? Style.parse(this.options.titleStyle)\n : (this.options.titleStyle ?? Style.parse('bold'));\n const showLines = this.options.showLines ?? false;\n const rowStyles = this.options.rowStyles ?? [];\n const padding = this.options.padding ?? 1;\n\n if (!box) return { segments: [], width: 0 };\n\n // Calculate column widths\n const totalBorderWidth = this.columns.length + 1;\n const paddingWidth = padding * 2 * this.columns.length;\n const availableWidth = width - totalBorderWidth - paddingWidth;\n const colWidth = Math.max(1, Math.floor(availableWidth / this.columns.length));\n const paddingStr = ' '.repeat(padding);\n\n // Title\n if (this.options.title) {\n const titleLine = this.alignText(this.options.title, width, 'center');\n segments.push(new Segment(titleLine, titleStyle), new Segment('\\n', Style.null(), true));\n }\n\n // Header\n if (this.options.showHeader !== false) {\n // Top border line\n segments.push(\n new Segment(\n box.topLeft +\n this.columns\n .map(() => (box.top || '─').repeat(colWidth + padding * 2))\n .join(box.topMid || '┬') +\n box.topRight,\n borderStyle,\n ),\n new Segment('\\n', Style.null(), true),\n );\n\n // Header row\n segments.push(new Segment(box.left, borderStyle));\n this.columns.forEach((col, i) => {\n const text = this.alignText(col.header, colWidth, col.justify);\n const cellStyle = col.headerStyle.combine(headerStyle);\n segments.push(new Segment(paddingStr + text + paddingStr, cellStyle));\n segments.push(\n new Segment(\n i === this.columns.length - 1 ? box.right : box.verticalMid || '│',\n borderStyle,\n ),\n );\n });\n segments.push(new Segment('\\n', Style.null(), true));\n\n // Header separator line\n segments.push(\n new Segment(\n (box.leftMid || '├') +\n this.columns\n .map(() => (box.mid || '─').repeat(colWidth + padding * 2))\n .join(box.midMid || '┼') +\n (box.rightMid || '┤'),\n borderStyle,\n ),\n new Segment('\\n', Style.null(), true),\n );\n }\n\n // Data rows\n this.rows.forEach((row, rowIndex) => {\n // Get alternating row style\n let rowStyle = Style.null();\n if (rowStyles.length > 0) {\n const styleStr = rowStyles[rowIndex % rowStyles.length];\n if (styleStr) {\n rowStyle = Style.parse(styleStr);\n }\n }\n\n segments.push(new Segment(box.left, borderStyle));\n this.columns.forEach((col, i) => {\n const cell = row[i];\n let cellSegments: Segment[] = [];\n\n // Render cell content\n if (typeof cell === 'string') {\n const text = this.alignText(cell, colWidth, col.justify);\n const cellStyle = col.style.combine(rowStyle);\n cellSegments = [new Segment(paddingStr + text + paddingStr, cellStyle)];\n } else if (isRenderable(cell)) {\n // Render the renderable constrained to colWidth\n const result = getRenderResult(cell, console, { ...consoleOptions, width: colWidth });\n\n // Add padding\n segments.push(new Segment(paddingStr));\n cellSegments = result.segments.map((s) => {\n // Apply row style to each segment\n return new Segment(s.text, s.style.combine(rowStyle), s.isControl);\n });\n\n // Pad to fill column width\n const contentWidth = result.width ?? 0;\n const space = Math.max(0, colWidth - contentWidth);\n if (space > 0) {\n cellSegments.push(new Segment(' '.repeat(space), rowStyle));\n }\n cellSegments.push(new Segment(paddingStr));\n }\n\n segments.push(...cellSegments);\n segments.push(\n new Segment(\n i === this.columns.length - 1 ? box.right : box.verticalMid || '│',\n borderStyle,\n ),\n );\n });\n segments.push(new Segment('\\n', Style.null(), true));\n\n // Add row separator if showLines is true\n if (showLines && rowIndex < this.rows.length - 1) {\n segments.push(\n new Segment(\n (box.leftMid || '├') +\n this.columns\n .map(() => (box.mid || '─').repeat(colWidth + padding * 2))\n .join(box.midMid || '┼') +\n (box.rightMid || '┤'),\n borderStyle,\n ),\n new Segment('\\n', Style.null(), true),\n );\n }\n });\n\n // Footer\n if (this.options.showFooter && this.footerRow.length > 0) {\n const footerStyle =\n typeof this.options.footerStyle === 'string'\n ? Style.parse(this.options.footerStyle)\n : (this.options.footerStyle ?? Style.parse('bold'));\n\n // Footer separator\n segments.push(\n new Segment(\n (box.leftMid || '├') +\n this.columns\n .map(() => (box.mid || '─').repeat(colWidth + padding * 2))\n .join(box.midMid || '┼') +\n (box.rightMid || '┤'),\n borderStyle,\n ),\n new Segment('\\n', Style.null(), true),\n );\n\n // Footer row\n segments.push(new Segment(box.left, borderStyle));\n this.columns.forEach((col, i) => {\n const cell = this.footerRow[i];\n const text = typeof cell === 'string' ? cell : '';\n const alignedText = this.alignText(text, colWidth, col.justify);\n segments.push(new Segment(paddingStr + alignedText + paddingStr, footerStyle));\n segments.push(\n new Segment(\n i === this.columns.length - 1 ? box.right : box.verticalMid || '│',\n borderStyle,\n ),\n );\n });\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Bottom border line\n segments.push(\n new Segment(\n box.bottomLeft +\n this.columns\n .map(() => (box.bottom || '─').repeat(colWidth + padding * 2))\n .join(box.bottomMid || '┴') +\n box.bottomRight,\n borderStyle,\n ),\n new Segment('\\n', Style.null(), true),\n );\n\n // Caption\n if (this.options.caption) {\n const captionStyle =\n typeof this.options.captionStyle === 'string'\n ? Style.parse(this.options.captionStyle)\n : (this.options.captionStyle ?? Style.parse('dim italic'));\n const captionLine = this.alignText(this.options.caption, width, 'center');\n segments.push(new Segment(captionLine, captionStyle), new Segment('\\n', Style.null(), true));\n }\n\n return { segments, width };\n }\n}\n","/** biome-ignore-all assist/source/organizeImports: false */\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport { isRenderable, type Renderable, type RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\nimport { splitLines } from '../core/lines';\n\nexport interface TreeOptions {\n guideStyle?: string;\n hideRoot?: boolean;\n}\n\n// Tree guide characters\nconst TREE_GUIDES = {\n standard: {\n branch: '├── ',\n last: '└── ',\n vertical: '│ ',\n space: ' ',\n },\n bold: {\n branch: '┣━━ ',\n last: '┗━━ ',\n vertical: '┃ ',\n space: ' ',\n },\n double: {\n branch: '╠══ ',\n last: '╚══ ',\n vertical: '║ ',\n space: ' ',\n },\n ascii: {\n branch: '|-- ',\n last: '`-- ',\n vertical: '| ',\n space: ' ',\n },\n};\n\n/**\n * Hierarchical tree structure for displaying nested data.\n * Supports any renderable as node content, including Panels, Syntax, and Tables.\n */\nexport class Tree implements Renderable {\n private children: Tree[] = [];\n private guideStyle: Style;\n private guides: typeof TREE_GUIDES.standard;\n\n constructor(\n public readonly label: string | Renderable,\n public readonly options: TreeOptions = {},\n ) {\n this.guideStyle = Style.parse(options.guideStyle ?? '#6e7681 dim');\n\n // Select guide characters based on style\n if (options.guideStyle === 'bold') {\n this.guides = TREE_GUIDES.bold;\n } else if (options.guideStyle === 'double') {\n this.guides = TREE_GUIDES.double;\n } else if (options.guideStyle === 'ascii') {\n this.guides = TREE_GUIDES.ascii;\n } else {\n this.guides = TREE_GUIDES.standard;\n }\n }\n\n /**\n * Add a child node to the tree.\n * Returns the added Tree node for method chaining.\n */\n add(label: string | Renderable | Tree): Tree {\n if (label instanceof Tree) {\n this.children.push(label);\n return label;\n }\n\n const node = new Tree(label, this.options);\n this.children.push(node);\n return node;\n }\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n const segments: Segment[] = [];\n\n if (!this.options.hideRoot) {\n // Render the root label\n this.renderLabel(this.label, segments, console, options);\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Render children\n this.renderChildren(this.children, '', segments, console, options);\n\n return { segments, width: 0 };\n }\n\n /**\n * Render a label (string or renderable) and add segments.\n */\n private renderLabel(\n label: string | Renderable,\n segments: Segment[],\n console: Console,\n options: ConsoleOptions,\n ): void {\n if (typeof label === 'string') {\n segments.push(new Segment(label));\n } else if (isRenderable(label)) {\n const result = label.__rich_console__(console, options);\n if ('segments' in result) {\n // For single-line renderables, just add segments\n const labelSegments = result.segments.filter((s) => !s.isControl || s.text !== '\\n');\n segments.push(...labelSegments);\n }\n }\n }\n\n /**\n * Render child nodes with appropriate prefixes.\n */\n private renderChildren(\n children: Tree[],\n prefix: string,\n segments: Segment[],\n console: Console,\n options: ConsoleOptions,\n ): void {\n children.forEach((child, index) => {\n const isLast = index === children.length - 1;\n const connector = isLast ? this.guides.last : this.guides.branch;\n const continuation = isLast ? this.guides.space : this.guides.vertical;\n\n // Render child label\n const labelSegments: Segment[] = [];\n if (typeof child.label === 'string') {\n labelSegments.push(new Segment(child.label));\n } else if (isRenderable(child.label)) {\n const result = child.label.__rich_console__(console, options);\n if ('segments' in result) {\n labelSegments.push(...result.segments);\n }\n }\n\n // Split label into lines for multiline renderables\n const labelLines = splitLines(labelSegments);\n\n // First line gets the connector\n if (labelLines.length > 0) {\n segments.push(new Segment(prefix, this.guideStyle));\n segments.push(new Segment(connector, this.guideStyle));\n segments.push(...labelLines[0]);\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Subsequent lines get continuation prefix\n for (let i = 1; i < labelLines.length; i++) {\n segments.push(new Segment(prefix, this.guideStyle));\n segments.push(new Segment(continuation, this.guideStyle));\n segments.push(...labelLines[i]);\n segments.push(new Segment('\\n', Style.null(), true));\n }\n\n // Render grandchildren\n const newPrefix = prefix + continuation;\n this.renderChildren(child.children, newPrefix, segments, console, options);\n });\n }\n}\n","import { Layout, type LayoutOptions } from './layout';\n\nexport class Grid extends Layout {\n constructor() {\n super();\n }\n\n /**\n * Adds a row to the grid with optional constraints.\n */\n addRow(content: Layout | any, options: LayoutOptions = {}): void {\n const layout = content instanceof Layout ? content : new Layout(content, options);\n // Ensure options are applied if wrapping\n if (!(content instanceof Layout)) {\n layout.size = options.size;\n layout.ratio = options.ratio ?? 1;\n layout.minimumSize = options.minimumSize ?? 0;\n }\n \n // If grid is initialized, we assume it's a Column of Rows\n // (This is a simplified Grid, effectively a generic Layout wrapper for clarity)\n // A true Grid often implies 2D addressing, but in Rich, Grid is often just rows of columns.\n this.splitColumn(...(this['_children'] || []), layout);\n }\n}","import { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport { isRenderable, type Renderable, type RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { splitLines } from '../core/lines';\n\nexport type PaddingValue = number | [number, number] | [number, number, number, number];\n\nexport class Padding implements Renderable {\n top: number;\n right: number;\n bottom: number;\n left: number;\n\n constructor(public renderable: Renderable | string, padding: PaddingValue) {\n if (typeof padding === 'number') {\n this.top = this.right = this.bottom = this.left = padding;\n } else if (Array.isArray(padding)) {\n if (padding.length === 2) {\n this.top = this.bottom = padding[0];\n this.right = this.left = padding[1];\n } else {\n [this.top, this.right, this.bottom, this.left] = padding;\n }\n } else {\n this.top = this.right = this.bottom = this.left = 0;\n }\n }\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n const width = options.width ?? console.width;\n const innerWidth = Math.max(0, width - this.left - this.right);\n \n // Render content\n let contentSegments: Segment[] = [];\n if (typeof this.renderable === 'string') {\n // Simple string handling\n // We really should expose a simpler renderString or use Text()\n contentSegments = [new Segment(this.renderable)];\n } else if (isRenderable(this.renderable)) {\n const result = this.renderable.__rich_console__(console, { ...options, width: innerWidth });\n if ('segments' in result) contentSegments = result.segments;\n }\n\n const lines = splitLines(contentSegments);\n const segments: Segment[] = [];\n\n // Top padding\n for (let i = 0; i < this.top; i++) {\n segments.push(new Segment(' '.repeat(width) + '\\n'));\n }\n\n // Content with Left/Right padding\n const leftPad = ' '.repeat(this.left);\n // Right padding is implicit if we don't force width, but let's pad\n \n for (const line of lines) {\n segments.push(new Segment(leftPad));\n segments.push(...line);\n // We assume line renders to innerWidth or less. \n // If we want hard right padding we need to know line length.\n // For simple flow, just left pad is enough unless background colors are involved.\n segments.push(new Segment('\\n'));\n }\n\n // Bottom padding\n for (let i = 0; i < this.bottom; i++) {\n segments.push(new Segment(' '.repeat(width) + '\\n'));\n }\n\n return { segments, width };\n }\n}\n","import { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport { isRenderable, type Renderable, type RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { splitLines } from '../core/lines';\n\nexport type AlignMethod = 'left' | 'center' | 'right';\n\nexport class Align implements Renderable {\n constructor(\n public renderable: Renderable | string,\n public align: AlignMethod,\n public style?: any\n ) {}\n\n static left(renderable: Renderable | string): Align {\n return new Align(renderable, 'left');\n }\n\n static center(renderable: Renderable | string): Align {\n return new Align(renderable, 'center');\n }\n\n static right(renderable: Renderable | string): Align {\n return new Align(renderable, 'right');\n }\n\n __rich_console__(console: Console, options: ConsoleOptions): RenderResult {\n const width = options.width ?? console.width;\n \n // Render content with unknown width (or full width?)\n // If we render with full width, many components expand to fill it (like Table).\n // If we want to align a Table, we assume it sized itself smaller than Width?\n // This is tricky. \n // Usually Align wraps something that has an intrinsic size or we constrain it?\n // Let's assume we render content with full width available, but we need to know its ACTUAL width used.\n \n let contentSegments: Segment[] = [];\n if (typeof this.renderable === 'string') {\n contentSegments = [new Segment(this.renderable)];\n } else if (isRenderable(this.renderable)) {\n // We might want to pass a smaller width if we want to squeeze it? \n // But aligning usually means moving a block in available space.\n const result = this.renderable.__rich_console__(console, options);\n if ('segments' in result) contentSegments = result.segments;\n }\n\n const lines = splitLines(contentSegments);\n const segments: Segment[] = [];\n\n for (const line of lines) {\n // Calculate line width\n const lineWidth = line.reduce((acc, s) => acc + s.cellLength(), 0);\n const remaining = Math.max(0, width - lineWidth);\n \n if (remaining === 0) {\n segments.push(...line);\n } else {\n let leftSpace = 0;\n if (this.align === 'center') leftSpace = Math.floor(remaining / 2);\n else if (this.align === 'right') leftSpace = remaining;\n \n if (leftSpace > 0) segments.push(new Segment(' '.repeat(leftSpace)));\n segments.push(...line);\n // Right space is implicit\n }\n segments.push(new Segment('\\n'));\n }\n\n return { segments, width };\n }\n}\n","import readline from 'readline';\nimport { Console } from '../console/console';\n\nexport interface PromptOptions<T> {\n console?: Console;\n password?: boolean;\n choices?: string[];\n default?: T;\n validate?: (input: string) => boolean | string;\n}\n\nexport class Prompt {\n static async ask<T = string>(message: string, options: PromptOptions<T> = {}): Promise<T> {\n const console = options.console ?? new Console();\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: true\n });\n\n const defaultStr = options.default !== undefined ? ` [default: ${options.default}]` : '';\n const choicesStr = options.choices ? ` [${options.choices.join('/')}]` : '';\n const query = `${message}${choicesStr}${defaultStr}: `;\n\n // Render query using Rich Console to support styles\n // But readline expects plain string prompt.\n // We print the query first, then use empty prompt for RL.\n console.print(query);\n\n return new Promise((resolve) => {\n // Handle password masking manually if needed, or simple raw mode\n // For MVP, we use standard readline.\n // Password masking is complex in pure Node readline.\n \n const askQuestion = () => {\n // If using console.print above, it adds newline. We might want inline.\n // Console needs a print method that doesn't add newline for prompts.\n // For now, let's just use process.stdout for the prompt line itself if we want inline\n // But wait, console.print adds newline.\n // Let's modify Console or just rely on the newline behavior.\n // Rich prompts usually are inline. \"Name: \"\n \n process.stdout.write('> '); \n\n rl.question('', (answer) => {\n let value = answer.trim();\n\n if (value === '' && options.default !== undefined) {\n value = String(options.default);\n }\n\n if (options.choices && !options.choices.includes(value)) {\n console.print(`[red]Please select one of: ${options.choices.join(', ')}[/]`);\n askQuestion();\n return;\n }\n\n if (options.validate) {\n const validation = options.validate(value);\n if (validation !== true) {\n const msg = typeof validation === 'string' ? validation : 'Invalid input';\n console.print(`[red]${msg}[/]`);\n askQuestion();\n return;\n }\n }\n\n rl.close();\n resolve(value as unknown as T);\n });\n };\n\n askQuestion();\n });\n }\n}\n","import { Prompt } from './prompt';\nimport { Console } from '../console/console';\n\nexport class Confirm {\n static async ask(message: string, options: { default?: boolean, console?: Console } = {}): Promise<boolean> {\n const defaultValue = options.default ?? true;\n const choices = defaultValue ? ['Y', 'n'] : ['y', 'N'];\n \n // We handle the choice logic manually to be flexible with case\n const answer = await Prompt.ask(message, {\n ...options,\n choices: choices,\n default: defaultValue ? 'y' : 'n',\n validate: (input) => {\n const norm = input.toLowerCase();\n return norm === 'y' || norm === 'yes' || norm === 'n' || norm === 'no';\n }\n });\n\n const norm = answer.toLowerCase();\n return norm === 'y' || norm === 'yes';\n }\n}\n","import { Console } from '../console/console';\nimport { Style } from '../core/style';\nimport { Segment } from '../core/segment';\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface LogRecord {\n level: LogLevel;\n message: string;\n timestamp: Date;\n context?: Record<string, any>;\n}\n\nexport class RichHandler {\n private console: Console;\n\n constructor(console?: Console) {\n this.console = console ?? new Console();\n }\n\n handle(record: LogRecord): void {\n const time = record.timestamp.toLocaleTimeString();\n const levelStyle = this.getLevelStyle(record.level);\n \n // Format: [TIME] [LEVEL] Message {context}\n const parts: any[] = [\n `[dim]${time}[/dim]`,\n // Pad level to align messages\n new Segment(` ${record.level.toUpperCase()} `.padEnd(7), levelStyle),\n record.message\n ];\n\n if (record.context && Object.keys(record.context).length > 0) {\n parts.push(`[dim]${JSON.stringify(record.context)}[/dim]`);\n }\n\n this.console.print(...parts);\n }\n\n private getLevelStyle(level: LogLevel): Style {\n switch (level) {\n case 'debug': return Style.parse('dim cyan');\n case 'info': return Style.parse('green');\n case 'warn': return Style.parse('yellow');\n case 'error': return Style.parse('bold red');\n default: return Style.null();\n }\n }\n}\n","import { RichHandler } from '../logging/handler';\nimport { Console } from '../console/console';\n\nexport function install(consoleOptions = {}): void {\n if ((global as any).__rich_installed__) return;\n\n const richConsole = new Console(consoleOptions);\n const handler = new RichHandler(richConsole);\n\n const originalLog = global.console.log;\n const originalWarn = global.console.warn;\n const originalError = global.console.error;\n\n // Monkey patch\n global.console.log = (...args: any[]) => {\n // If first arg is a string, we might want to let Rich format it?\n // Or strictly treat as log record?\n // Rich's install() replaces tracebacks and logging.\n // Here we can simply map console.log -> richConsole.print\n richConsole.print(...args);\n };\n\n global.console.warn = (...args: any[]) => {\n handler.handle({\n level: 'warn',\n message: args.map(String).join(' '),\n timestamp: new Date()\n });\n };\n\n global.console.error = (...args: any[]) => {\n handler.handle({\n level: 'error',\n message: args.map(String).join(' '),\n timestamp: new Date()\n });\n };\n\n (global as any).__rich_installed__ = true;\n (global as any).__rich_original_console__ = {\n log: originalLog,\n warn: originalWarn,\n error: originalError\n };\n}\n","import { marked } from 'marked';\nimport TerminalRenderer from 'marked-terminal';\nimport { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\n\n// Configure marked to use terminal renderer\nmarked.setOptions({\n renderer: new TerminalRenderer() as any\n});\n\nexport class Markdown implements Renderable {\n constructor(public readonly markup: string) {}\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n const rendered = marked.parse(this.markup) as string;\n \n return {\n segments: [new Segment(rendered)],\n width: 0 // Placeholder\n };\n }\n}\n","/** biome-ignore-all assist/source/organizeImports: falses */\nimport type { Console } from '../console/console';\nimport type { ConsoleOptions } from '../types/console-options';\nimport type { Renderable, RenderResult } from '../types/renderable';\nimport { Segment } from '../core/segment';\nimport { Style } from '../core/style';\n\nexport interface ProgressBarOptions {\n width?: number;\n completeStyle?: string;\n finishedStyle?: string;\n remainingStyle?: string;\n pulseStyle?: string;\n pulse?: boolean;\n completeChar?: string;\n remainingChar?: string;\n}\n\n/**\n * Visual progress bar component.\n * Supports customizable styles, pulse animation, and gradient colors.\n */\nexport class ProgressBar implements Renderable {\n private pulseOffset = 0;\n private lastPulseTime = 0;\n\n constructor(\n public readonly total: number = 100,\n public readonly completed: number = 0,\n public readonly options: ProgressBarOptions = {},\n ) {}\n\n __rich_console__(console: Console, consoleOptions: ConsoleOptions): RenderResult {\n const width = this.options.width ?? Math.min(40, (consoleOptions.width ?? console.width) - 20);\n const percentage = Math.min(1, Math.max(0, this.completed / this.total));\n const isComplete = percentage >= 1;\n const isPulse = this.options.pulse ?? false;\n\n // Characters for the bar\n const completeChar = this.options.completeChar ?? '━';\n const remainingChar = this.options.remainingChar ?? '━';\n\n // Styles\n const completeStyleStr = isComplete\n ? (this.options.finishedStyle ?? '#50fa7b bold')\n : (this.options.completeStyle ?? '#61afef');\n const remainingStyleStr = this.options.remainingStyle ?? '#3a3a3a dim';\n const pulseStyleStr = this.options.pulseStyle ?? '#98c379 bold';\n\n const completeStyle = Style.parse(completeStyleStr);\n const remainingStyle = Style.parse(remainingStyleStr);\n const pulseStyle = Style.parse(pulseStyleStr);\n\n const filledWidth = Math.floor(width * percentage);\n const segments: Segment[] = [];\n\n if (isPulse && !isComplete) {\n // Pulse animation for indeterminate progress\n // Create a moving highlight effect\n const now = Date.now();\n if (now - this.lastPulseTime > 100) {\n this.pulseOffset = (this.pulseOffset + 1) % width;\n this.lastPulseTime = now;\n }\n\n for (let i = 0; i < width; i++) {\n const isPulsePos = Math.abs(i - this.pulseOffset) < 3;\n const style = isPulsePos ? pulseStyle : remainingStyle;\n segments.push(new Segment(remainingChar, style));\n }\n } else {\n // Standard progress bar with filled/remaining sections\n\n // Add filled portion with potential gradient\n if (filledWidth > 0) {\n // Create gradient effect for large bars\n if (width >= 20 && !isComplete) {\n const gradientColors = ['#61afef', '#66d9ef', '#50fa7b'];\n for (let i = 0; i < filledWidth; i++) {\n const colorIndex = Math.floor((i / filledWidth) * gradientColors.length);\n const color = gradientColors[Math.min(colorIndex, gradientColors.length - 1)];\n segments.push(new Segment(completeChar, Style.parse(color)));\n }\n } else {\n segments.push(new Segment(completeChar.repeat(filledWidth), completeStyle));\n }\n }\n\n // Add remaining portion\n const remainingWidth = width - filledWidth;\n if (remainingWidth > 0) {\n segments.push(new Segment(remainingChar.repeat(remainingWidth), remainingStyle));\n }\n }\n\n return {\n segments,\n width,\n };\n }\n}\n\n/**\n * Compact progress indicator showing percentage.\n */\nexport class PercentageColumn implements Renderable {\n constructor(\n public readonly percentage: number,\n public readonly style?: string,\n ) {}\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n const pct = Math.floor(this.percentage * 100);\n const text = `${pct.toString().padStart(3)}%`;\n const style = Style.parse(this.style ?? (pct >= 100 ? '#50fa7b bold' : '#61afef'));\n\n return {\n segments: [new Segment(text, style)],\n width: 4,\n };\n }\n}\n\n/**\n * Time elapsed display for progress tracking.\n */\nexport class TimeElapsedColumn implements Renderable {\n constructor(\n public readonly elapsedMs: number,\n public readonly style?: string,\n ) {}\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n const seconds = Math.floor(this.elapsedMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n let text: string;\n if (hours > 0) {\n text = `${hours}:${(minutes % 60).toString().padStart(2, '0')}:${(seconds % 60).toString().padStart(2, '0')}`;\n } else if (minutes > 0) {\n text = `${minutes}:${(seconds % 60).toString().padStart(2, '0')}`;\n } else {\n text = `0:${seconds.toString().padStart(2, '0')}`;\n }\n\n const style = Style.parse(this.style ?? '#e5c07b');\n return {\n segments: [new Segment(text, style)],\n width: text.length,\n };\n }\n}\n\n/**\n * Estimated time remaining display.\n */\nexport class TimeRemainingColumn implements Renderable {\n constructor(\n public readonly percentage: number,\n public readonly elapsedMs: number,\n public readonly style?: string,\n ) {}\n\n __rich_console__(_console: Console, _options: ConsoleOptions): RenderResult {\n if (this.percentage <= 0 || this.percentage >= 1) {\n const text = '-:--';\n return {\n segments: [new Segment(text, Style.parse(this.style ?? 'dim'))],\n width: 4,\n };\n }\n\n const estimatedTotal = this.elapsedMs / this.percentage;\n const remainingMs = estimatedTotal - this.elapsedMs;\n\n const seconds = Math.floor(remainingMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n let text: string;\n if (hours > 0) {\n text = `${hours}:${(minutes % 60).toString().padStart(2, '0')}:${(seconds % 60).toString().padStart(2, '0')}`;\n } else if (minutes > 0) {\n text = `${minutes}:${(seconds % 60).toString().padStart(2, '0')}`;\n } else {\n text = `0:${seconds.toString().padStart(2, '0')}`;\n }\n\n const style = Style.parse(this.style ?? '#c678dd');\n return {\n segments: [new Segment(text, style)],\n width: text.length,\n };\n }\n}\n","import { Console } from '../console/console';\nimport { ProgressBar } from './bar';\nimport { Live } from '../live/live';\nimport { Layout } from '../layout/layout';\nimport { Text } from '../renderables/text';\nimport type { Task } from './task';\n\nexport interface ProgressOptions {\n console?: Console;\n autoRefresh?: boolean;\n}\n\nexport class Progress {\n private tasks: Task[] = [];\n private live: Live;\n private console: Console;\n private taskIdCounter = 0;\n\n constructor(options: ProgressOptions = {}) {\n this.console = options.console ?? new Console();\n // Initialize with a placeholder layout\n this.live = new Live(new Layout(), this.console);\n }\n\n addTask(description: string, options: { total?: number, completed?: number } = {}): number {\n const taskId = this.taskIdCounter++;\n this.tasks.push({\n id: taskId,\n description,\n total: options.total ?? 100,\n completed: options.completed ?? 0,\n visible: true,\n finished: false,\n startTime: Date.now(),\n endTime: null\n });\n this.refresh();\n return taskId;\n }\n\n update(taskId: number, options: { completed?: number, description?: string }): void {\n const task = this.tasks.find(t => t.id === taskId);\n if (!task) return;\n\n if (options.completed !== undefined) task.completed = options.completed;\n if (options.description !== undefined) task.description = options.description;\n\n if (task.completed >= task.total) {\n task.finished = true;\n task.endTime = Date.now();\n }\n \n this.refresh();\n }\n\n start(): void {\n this.live.start();\n }\n\n stop(): void {\n this.live.stop();\n }\n\n private refresh(): void {\n const layout = new Layout();\n \n // Simple vertical stack of tasks\n const children = this.tasks.filter(t => t.visible).map(task => {\n const row = new Layout();\n row.splitRow(\n new Text(task.description, undefined, 'right'), // Label\n new ProgressBar(task.total, task.completed), // Bar\n new Text(`${Math.floor((task.completed / task.total) * 100)}%`) // Percent\n );\n return row;\n });\n \n layout.splitColumn(...children);\n this.live.update(layout);\n }\n}\n","import { Progress } from './progress';\n\n/**\n * Track progress of an iterable.\n */\nexport function* track<T>(sequence: Iterable<T> | T[], description: string = 'Working...'): Generator<T> {\n const progress = new Progress();\n const arr = Array.isArray(sequence) ? sequence : Array.from(sequence);\n const total = arr.length;\n \n progress.start();\n const taskId = progress.addTask(description, { total });\n\n try {\n for (let i = 0; i < total; i++) {\n yield arr[i];\n progress.update(taskId, { completed: i + 1 });\n }\n } finally {\n progress.stop();\n }\n}\n","import { RichHandler, type LogRecord, type LogLevel } from './handler';\nimport { Console } from '../console/console';\n\nexport class Logger {\n private handler: RichHandler;\n\n constructor(console?: Console) {\n this.handler = new RichHandler(console);\n }\n\n debug(message: string, context?: Record<string, any>): void {\n this.log('debug', message, context);\n }\n\n info(message: string, context?: Record<string, any>): void {\n this.log('info', message, context);\n }\n\n warn(message: string, context?: Record<string, any>): void {\n this.log('warn', message, context);\n }\n\n error(message: string, context?: Record<string, any>): void {\n this.log('error', message, context);\n }\n\n private log(level: LogLevel, message: string, context?: Record<string, any>): void {\n const record: LogRecord = {\n level,\n message,\n timestamp: new Date(),\n context\n };\n this.handler.handle(record);\n }\n}\n","import { Console } from '../console/console';\nimport { Panel } from '../renderables/panel';\nimport { Syntax } from '../syntax/syntax';\nimport { Table } from '../renderables/table';\n\nexport interface InspectOptions {\n title?: string;\n depth?: number;\n private?: boolean;\n}\n\n/**\n * Inspects an object and prints a formatted representation.\n */\nexport function inspect(obj: any, options: InspectOptions = {}): void {\n const console = new Console();\n const title = options.title ?? `Inspect: ${obj?.constructor?.name ?? typeof obj}`;\n \n // 1. Basic properties table\n const table = new Table({ box: 'single', showHeader: true });\n table.addColumn(\"Property\", { style: \"cyan\" });\n table.addColumn(\"Type\", { style: \"magenta\" });\n table.addColumn(\"Value\");\n\n const props = Object.getOwnPropertyNames(obj);\n \n // Sort props?\n props.sort();\n\n for (const prop of props) {\n const value = obj[prop];\n let type: string = typeof value;\n let valueStr = String(value);\n\n if (value === null) type = 'null';\n else if (Array.isArray(value)) type = 'Array';\n \n // Truncate long values\n if (valueStr.length > 50) valueStr = valueStr.substring(0, 47) + '...';\n\n table.addRow(prop, type, valueStr);\n }\n\n // 2. Syntax highlight the raw JSON representation for detail\n let json = '';\n try {\n json = JSON.stringify(obj, null, 2);\n } catch {\n json = '[Circular]';\n }\n\n const syntax = new Syntax(json, 'json');\n void syntax; \n \n // Render\n console.print(new Panel(table, { title: title, box: 'round', borderStyle: undefined }));\n}\n","// Core\n/** biome-ignore-all assist/source/organizeImports: biome-ignore assist/source/organizeImports */\nimport { Console } from './console/console';\nexport { Console };\nexport { Style } from './core/style';\nexport { Segment } from './core/segment';\nexport { MarkupParser } from './core/markup';\n\n// Renderables\nexport { Text } from './renderables/text';\nexport { Panel } from './renderables/panel';\nexport { Rule } from './renderables/rule';\nexport { Table } from './renderables/table';\nexport { Tree } from './renderables/tree';\nexport { Layout } from './layout/layout';\nexport { Grid } from './layout/grid';\nexport { Padding } from './renderables/padding';\nexport { Align } from './renderables/align';\n\n// Traceback\nexport { Traceback, installTracebackHandler } from './traceback/traceback';\n\n// Prompts\nexport { Prompt } from './prompt/prompt';\nexport { Confirm } from './prompt/confirm';\n\n// Hooks\nexport { install } from './hooks/install';\n\n// Syntax Highlighting\nexport { Syntax } from './syntax/syntax';\nexport {\n MONOKAI,\n DRACULA,\n GITHUB_LIGHT,\n ONE_DARK,\n getTheme,\n SYNTAX_THEMES,\n type SyntaxTheme,\n} from './syntax/theme';\n\n// Markdown\nexport { Markdown } from './markdown/markdown';\n\n// Progress\nexport {\n ProgressBar,\n PercentageColumn,\n TimeElapsedColumn,\n TimeRemainingColumn,\n} from './progress/bar';\nexport { Progress } from './progress/progress';\nexport { track } from './progress/track';\n\n// Status\nexport { Spinner } from './status/spinner';\nexport { Status } from './status/status';\n\n// Themes\nexport { Theme, DEFAULT_THEME } from './themes/theme';\nexport { Palette } from './themes/palette';\n\n// Utilities\nexport { Color } from './utils/color';\nexport { getBox, listBoxStyles, type BoxStyle, type BoxData } from './utils/box';\n\n// Logging\nexport { RichHandler } from './logging/handler';\nexport { Logger } from './logging/logger';\nexport { inspect } from './utils/inspect';\n\n// Global Helpers\nconst globalConsole = new Console();\nexport const print = globalConsole.print.bind(globalConsole);\n\n// Types\nexport * from './types/console-options';\nexport * from './types/renderable';\nexport * from './types/style-types';\n\n// Legacy exports for backwards compatibility\nexport { MONOKAI_THEME } from './syntax/theme';\n"]}