@openbuilder/cli 0.50.19 → 0.50.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{Banner-ClJs6QcI.js → Banner-BlktOjfl.js} +6 -3
- package/dist/chunks/{Banner-ClJs6QcI.js.map → Banner-BlktOjfl.js.map} +1 -1
- package/dist/chunks/{_commonjsHelpers-DcsQGttR.js → _commonjsHelpers-h-Bqc03Z.js} +4 -2
- package/dist/chunks/_commonjsHelpers-h-Bqc03Z.js.map +1 -0
- package/dist/chunks/devtools-7A3EXJhY.js +75 -0
- package/dist/chunks/devtools-7A3EXJhY.js.map +1 -0
- package/dist/chunks/index-oFqGtEeF.js +119 -0
- package/dist/chunks/index-oFqGtEeF.js.map +1 -0
- package/dist/chunks/{init-zX5aX-qn.js → init-DDtrxZ0M.js} +13 -8
- package/dist/chunks/{init-zX5aX-qn.js.map → init-DDtrxZ0M.js.map} +1 -1
- package/dist/chunks/{init-tui-DDxZYe9B.js → init-tui-tZtLISA4.js} +14 -9
- package/dist/chunks/{init-tui-DDxZYe9B.js.map → init-tui-tZtLISA4.js.map} +1 -1
- package/dist/chunks/{main-tui-B5GJ49Bp.js → main-tui-Bar2Jb2S.js} +15 -10
- package/dist/chunks/{main-tui-B5GJ49Bp.js.map → main-tui-Bar2Jb2S.js.map} +1 -1
- package/dist/chunks/{run-CaSootos.js → run-9mP5QnpK.js} +14 -8
- package/dist/chunks/{run-CaSootos.js.map → run-9mP5QnpK.js.map} +1 -1
- package/dist/chunks/{start-B4P27nZ7.js → start-CQKEEma-.js} +14 -8
- package/dist/chunks/{start-B4P27nZ7.js.map → start-CQKEEma-.js.map} +1 -1
- package/dist/chunks/theme-CktnrDZj.js +40217 -0
- package/dist/chunks/theme-CktnrDZj.js.map +1 -0
- package/dist/chunks/use-app-Cj2bzWaw.js +10 -0
- package/dist/chunks/use-app-Cj2bzWaw.js.map +1 -0
- package/dist/chunks/{useBuildState-BZuezCb6.js → useBuildState-pcDGDakI.js} +6 -5
- package/dist/chunks/{useBuildState-BZuezCb6.js.map → useBuildState-pcDGDakI.js.map} +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/instrument.js +4 -4
- package/package.json +1 -5
- package/scripts/prepare-release.js +10 -7
- package/dist/chunks/_commonjsHelpers-DcsQGttR.js.map +0 -1
- package/dist/chunks/theme-BF4W2Gwm.js +0 -2300
- package/dist/chunks/theme-BF4W2Gwm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-tui-DDxZYe9B.js","sources":["../../src/cli/tui/components/ProgressStepper.tsx","../../src/cli/tui/components/TaskStream.tsx","../../src/cli/tui/components/ConfigSummary.tsx","../../src/cli/tui/components/BuildErrorView.tsx","../../src/cli/tui/hooks/useInitFlow.ts","../../src/cli/tui/screens/InitScreen.tsx","../../src/cli/tui/screens/StartPromptScreen.tsx","../../src/cli/tui/App.tsx","../../src/cli/commands/init-tui.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'error';\n\nexport interface Step {\n id: string;\n label: string;\n status: StepStatus;\n}\n\n// Keep for backwards compatibility\nexport interface StepTask {\n id: string;\n label: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n detail?: string;\n error?: string;\n}\n\ninterface ProgressStepperProps {\n steps: Step[];\n}\n\n/**\n * Horizontal progress stepper - just the dots and labels\n * \n * ●───────────●───────────○───────────○\n * Setup Install Database Finalize\n */\nexport function ProgressStepper({ steps }: ProgressStepperProps) {\n const getStepColor = (status: StepStatus): string => {\n switch (status) {\n case 'completed':\n return colors.success;\n case 'active':\n return colors.cyan;\n case 'error':\n return colors.error;\n default:\n return colors.dimGray;\n }\n };\n\n const getStepSymbol = (status: StepStatus): string => {\n switch (status) {\n case 'error':\n return symbols.errorDot;\n case 'completed':\n case 'active':\n return symbols.filledDot;\n default:\n return symbols.hollowDot;\n }\n };\n\n // Cell and connector sizing\n const cellWidth = 10;\n const connectorWidth = 7;\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n {/* Dots row */}\n <Box>\n {steps.map((step, index) => (\n <Fragment key={step.id}>\n <Box width={cellWidth} justifyContent=\"center\">\n <Text color={getStepColor(step.status)}>\n {getStepSymbol(step.status)}\n </Text>\n </Box>\n {index < steps.length - 1 && (\n <Text color={colors.dimGray}>\n {symbols.horizontalLine.repeat(connectorWidth)}\n </Text>\n )}\n </Fragment>\n ))}\n </Box>\n \n {/* Labels row */}\n <Box>\n {steps.map((step, index) => (\n <Fragment key={step.id}>\n <Box width={cellWidth} justifyContent=\"center\">\n <Text \n color={step.status === 'pending' ? colors.dimGray : colors.gray}\n dimColor={step.status === 'pending'}\n >\n {step.label}\n </Text>\n </Box>\n {index < steps.length - 1 && (\n <Box width={connectorWidth} />\n )}\n </Fragment>\n ))}\n </Box>\n </Box>\n );\n}\n","import { useState, useEffect, useRef } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols, layout } from '../theme.js';\n\nexport interface StreamTask {\n id: string;\n label: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n detail?: string;\n error?: string;\n}\n\ninterface TaskStreamProps {\n /** Current step ID - clears stream when this changes */\n stepId: string;\n /** Tasks for the current step */\n tasks: StreamTask[];\n /** Called when typewriter animation completes for a detail */\n onTypewriterComplete?: (taskId: string) => void;\n}\n\ninterface DisplayLine {\n id: string;\n text: string;\n displayedText: string;\n color: string;\n prefix: string;\n prefixColor: string;\n showCursor: boolean;\n checkmark?: boolean; // Show green checkmark after prefix\n}\n\n// Match the stepper width: cellWidth(10) * 4 + connectorWidth(7) * 3 = 61\nconst BOX_WIDTH = 61;\nconst BOX_INNER_WIDTH = BOX_WIDTH - 4; // Account for \"│ \" and \" │\"\n\n/**\n * TaskStream - Shows current step's tasks in a terminal-style box\n * \n * ┌───────────────────────────────────────────────────────────┐\n * │ ⠋ Configuring database │\n * │ └── Setting up Neon database...▌ │\n * └───────────────────────────────────────────────────────────┘\n */\nexport function TaskStream({ stepId, tasks, onTypewriterComplete }: TaskStreamProps) {\n const [spinnerIndex, setSpinnerIndex] = useState(0);\n const [cursorVisible, setCursorVisible] = useState(true);\n const [typedChars, setTypedChars] = useState<Record<string, number>>({});\n const [completedTyping, setCompletedTyping] = useState<Set<string>>(new Set());\n const prevStepRef = useRef(stepId);\n \n // Reset typed chars when step changes\n useEffect(() => {\n if (stepId !== prevStepRef.current) {\n setTypedChars({});\n setCompletedTyping(new Set());\n prevStepRef.current = stepId;\n }\n }, [stepId]);\n \n // Spinner animation - runs independently\n useEffect(() => {\n let mounted = true;\n const animate = () => {\n if (!mounted) return;\n setSpinnerIndex(prev => (prev + 1) % symbols.spinnerFrames.length);\n setTimeout(animate, layout.spinnerInterval);\n };\n const timeout = setTimeout(animate, layout.spinnerInterval);\n return () => {\n mounted = false;\n clearTimeout(timeout);\n };\n }, []);\n \n // Cursor blink - runs independently \n useEffect(() => {\n let mounted = true;\n const blink = () => {\n if (!mounted) return;\n setCursorVisible(prev => !prev);\n setTimeout(blink, 400);\n };\n const timeout = setTimeout(blink, 400);\n return () => {\n mounted = false;\n clearTimeout(timeout);\n };\n }, []);\n \n // Find tasks by status\n const runningTask = tasks.find(t => t.status === 'running');\n const failedTask = tasks.find(t => t.status === 'failed');\n const completedTasks = tasks.filter(t => t.status === 'completed');\n \n // Primary task: running > failed > last completed (to prevent visual jump)\n const primaryTask = runningTask || failedTask || completedTasks[completedTasks.length - 1];\n \n // Previous completed tasks (all except the one shown as primary)\n const previousCompleted = primaryTask?.status === 'completed' \n ? completedTasks.slice(0, -1) \n : completedTasks;\n \n // Build display lines\n const lines: DisplayLine[] = [];\n \n // Main task line (running, failed, or last completed)\n if (primaryTask) {\n const isRunning = primaryTask.status === 'running';\n const isCompleted = primaryTask.status === 'completed';\n const isFailed = primaryTask.status === 'failed';\n \n let prefix: string;\n let prefixColor: string;\n let textColor: string;\n \n if (isRunning) {\n prefix = `${symbols.spinnerFrames[spinnerIndex]} `;\n prefixColor = colors.cyan;\n textColor = colors.white;\n } else if (isCompleted) {\n prefix = `${symbols.check} `;\n prefixColor = colors.success;\n textColor = colors.white;\n } else {\n prefix = `${symbols.cross} `;\n prefixColor = colors.error;\n textColor = colors.error;\n }\n \n lines.push({\n id: `main-${primaryTask.id}`,\n text: primaryTask.label,\n displayedText: primaryTask.label,\n color: textColor,\n prefix,\n prefixColor,\n showCursor: false,\n });\n }\n \n // Previous completed tasks as subtasks - with green checkmark\n previousCompleted.forEach((task, index) => {\n const hasMore = primaryTask?.detail || primaryTask?.error || index < previousCompleted.length - 1;\n const connector = hasMore ? '├──' : '└──';\n \n lines.push({\n id: `completed-${task.id}`,\n text: task.label,\n displayedText: task.label,\n color: colors.white,\n prefix: ` ${connector} `,\n prefixColor: colors.dimGray,\n showCursor: false,\n checkmark: true,\n });\n });\n \n // Detail line (no typewriter for progress updates - show immediately)\n if (primaryTask?.detail && primaryTask.status === 'running') {\n lines.push({\n id: `detail-${primaryTask.id}`,\n text: primaryTask.detail,\n displayedText: primaryTask.detail, // Show full text immediately for progress updates\n color: colors.dimGray,\n prefix: ' └── ',\n prefixColor: colors.dimGray,\n showCursor: false, // No cursor for instant updates\n });\n }\n \n // Error line (typewriter effect)\n if (primaryTask?.error && primaryTask.status === 'failed') {\n const errorId = `error-${primaryTask.id}`;\n const currentChars = typedChars[errorId] || 0;\n const displayedText = primaryTask.error.slice(0, currentChars);\n const isTyping = currentChars < primaryTask.error.length;\n \n lines.push({\n id: errorId,\n text: primaryTask.error,\n displayedText,\n color: colors.error,\n prefix: ' └── ',\n prefixColor: colors.dimGray,\n showCursor: isTyping && cursorVisible,\n });\n }\n \n // Typewriter animation - only for errors now (details show instantly for progress)\n const errorToType = primaryTask?.error && primaryTask.status === 'failed' ? primaryTask.error : null;\n const textToType = errorToType;\n const typeId = errorToType ? `error-${primaryTask?.id}` : null;\n \n useEffect(() => {\n if (!typeId || !textToType) return;\n \n const currentChars = typedChars[typeId] || 0;\n \n // Check if we just finished typing\n if (currentChars >= textToType.length) {\n // Fire callback once when typing completes\n if (!completedTyping.has(typeId) && onTypewriterComplete && primaryTask) {\n setCompletedTyping(prev => new Set(prev).add(typeId));\n onTypewriterComplete(primaryTask.id);\n }\n return;\n }\n \n // Continue typing animation\n const timeout = setTimeout(() => {\n setTypedChars(prev => ({\n ...prev,\n [typeId]: (prev[typeId] || 0) + 1,\n }));\n }, 30);\n \n return () => clearTimeout(timeout);\n }, [typeId, textToType, typedChars[typeId || ''], completedTyping, onTypewriterComplete, primaryTask]);\n \n // Empty state - show empty box to maintain layout\n if (lines.length === 0) {\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box flexDirection=\"column\" width={BOX_WIDTH}>\n <Text color={colors.dimGray}>┌{'─'.repeat(BOX_WIDTH - 2)}┐</Text>\n <Box>\n <Text color={colors.dimGray}>│</Text>\n <Text>{' '.repeat(BOX_WIDTH - 2)}</Text>\n <Text color={colors.dimGray}>│</Text>\n </Box>\n <Text color={colors.dimGray}>└{'─'.repeat(BOX_WIDTH - 2)}┘</Text>\n </Box>\n </Box>\n );\n }\n \n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box flexDirection=\"column\" width={BOX_WIDTH}>\n {/* Top border */}\n <Text color={colors.dimGray}>┌{'─'.repeat(BOX_WIDTH - 2)}┐</Text>\n \n {/* Content lines */}\n {lines.map(line => {\n const checkmarkStr = line.checkmark ? `${symbols.check} ` : '';\n const content = `${line.prefix}${checkmarkStr}${line.displayedText}`;\n const cursor = line.showCursor ? '▌' : '';\n const paddingNeeded = Math.max(0, BOX_INNER_WIDTH - content.length - cursor.length);\n \n return (\n <Box key={line.id}>\n <Text color={colors.dimGray}>│ </Text>\n <Text color={line.prefixColor}>{line.prefix}</Text>\n {line.checkmark && <Text color={colors.success}>{symbols.check} </Text>}\n <Text color={line.color}>{line.displayedText}</Text>\n {line.showCursor && <Text color={colors.cyan}>▌</Text>}\n <Text>{' '.repeat(paddingNeeded)}</Text>\n <Text color={colors.dimGray}> │</Text>\n </Box>\n );\n })}\n \n {/* Bottom border */}\n <Text color={colors.dimGray}>└{'─'.repeat(BOX_WIDTH - 2)}┘</Text>\n </Box>\n </Box>\n );\n}\n","import { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\nexport interface ConfigItem {\n label: string;\n value: string;\n}\n\ninterface ConfigSummaryProps {\n items: ConfigItem[];\n title?: string;\n}\n\n/**\n * Configuration summary display\n * ───────────────────────────────────\n * Workspace ~/openbuilder-workspace\n * Server http://localhost:3000\n * Runner local\n * ───────────────────────────────────\n */\nexport function ConfigSummary({ items, title }: ConfigSummaryProps) {\n const dividerWidth = 40;\n const divider = symbols.horizontalLine.repeat(dividerWidth);\n \n // Find the longest label for alignment\n const maxLabelLength = Math.max(...items.map(item => item.label.length));\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>{divider}</Text>\n \n {title && (\n <Box marginTop={1} marginBottom={1}>\n <Text color={colors.white} bold>{title}</Text>\n </Box>\n )}\n \n <Box flexDirection=\"column\" alignItems=\"flex-start\" marginTop={title ? 0 : 1}>\n {items.map((item, index) => (\n <Box key={index}>\n <Text color={colors.gray}>\n {item.label.padEnd(maxLabelLength + 3)}\n </Text>\n <Text color={colors.cyan}>{item.value}</Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n </Box>\n );\n}\n\ninterface NextStepsProps {\n command: string;\n url: string;\n}\n\n/**\n * Next steps display for completion screen\n */\nexport function NextSteps({ command, url }: NextStepsProps) {\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box>\n <Text color={colors.gray}>Run: </Text>\n <Text color={colors.cyan} bold>{command}</Text>\n </Box>\n <Box>\n <Text color={colors.gray}>Open: </Text>\n <Text color={colors.cyan}>{url}</Text>\n </Box>\n </Box>\n );\n}\n\ninterface ErrorSummaryProps {\n message?: string;\n suggestions: string[];\n}\n\n/**\n * Error display with message and recovery suggestions\n */\nexport function ErrorSummary({ message, suggestions }: ErrorSummaryProps) {\n const dividerWidth = 44;\n const divider = symbols.horizontalLine.repeat(dividerWidth);\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>{divider}</Text>\n \n {/* Error message header */}\n {message && (\n <Box marginTop={1} marginBottom={1}>\n <Text color={colors.error} bold>{symbols.cross} {message}</Text>\n </Box>\n )}\n \n {/* Suggestions/details */}\n <Box flexDirection=\"column\" alignItems=\"flex-start\" marginTop={message ? 0 : 1}>\n {suggestions.map((suggestion, index) => (\n <Box key={index}>\n <Text color={suggestion.startsWith(' ') ? colors.cyan : colors.gray}>\n {suggestion}\n </Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n </Box>\n );\n}\n","/**\n * BuildErrorView - Compact scrollable view for build errors\n * Designed to fit in the center of the init screen, not full-screen\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { Box, Text, useInput, useApp, useStdout } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\ninterface BuildErrorViewProps {\n /** Error title/message */\n title: string;\n /** Array of error lines to display */\n errorLines: string[];\n /** Suggestions for fixing the error */\n suggestions?: string[];\n /** Callback when user exits */\n onExit?: () => void;\n}\n\n/**\n * Compact build error viewer with scrolling and copy support\n * Displays in the center area, half-width, with scrollable content\n */\nexport function BuildErrorView({ \n title, \n errorLines, \n suggestions = [],\n onExit \n}: BuildErrorViewProps) {\n const { exit } = useApp();\n const { stdout } = useStdout();\n const terminalWidth = stdout?.columns || 80;\n\n const [scrollOffset, setScrollOffset] = useState(0);\n const [showCopiedMessage, setShowCopiedMessage] = useState(false);\n\n // Fixed dimensions for compact view\n const boxWidth = Math.min(70, Math.floor(terminalWidth * 0.6));\n const maxVisibleLines = 12; // Show 12 lines of errors max\n \n // Calculate max scroll\n const maxScroll = Math.max(0, errorLines.length - maxVisibleLines);\n\n // Get visible lines\n const visibleLines = errorLines.slice(scrollOffset, scrollOffset + maxVisibleLines);\n\n // Copy all error content to clipboard\n const copyToClipboard = useCallback(async () => {\n const content = [\n `Build Error: ${title}`,\n '─'.repeat(60),\n ...errorLines,\n '─'.repeat(60),\n '',\n ...suggestions,\n ].join('\\n');\n\n try {\n const { exec } = await import('child_process');\n\n // Detect platform and use appropriate clipboard command\n const platform = process.platform;\n let clipboardCmd: string;\n\n if (platform === 'darwin') {\n clipboardCmd = 'pbcopy';\n } else if (platform === 'win32') {\n clipboardCmd = 'clip';\n } else {\n clipboardCmd = 'xclip -selection clipboard';\n }\n\n // Write to clipboard\n const child = exec(clipboardCmd);\n child.stdin?.write(content);\n child.stdin?.end();\n\n setShowCopiedMessage(true);\n\n // Show success message then exit after delay\n setTimeout(() => {\n if (onExit) {\n onExit();\n } else {\n exit();\n }\n }, 1500);\n } catch (error) {\n // Clipboard failed - still show message\n setShowCopiedMessage(true);\n setTimeout(() => setShowCopiedMessage(false), 2000);\n }\n }, [title, errorLines, suggestions, onExit, exit]);\n\n // Handle keyboard input\n useInput((input, key) => {\n if (input === 'c' || input === 'C') {\n copyToClipboard();\n } else if (key.upArrow) {\n setScrollOffset(prev => Math.max(0, prev - 1));\n } else if (key.downArrow) {\n setScrollOffset(prev => Math.min(maxScroll, prev + 1));\n } else if (key.pageUp) {\n setScrollOffset(prev => Math.max(0, prev - maxVisibleLines));\n } else if (key.pageDown) {\n setScrollOffset(prev => Math.min(maxScroll, prev + maxVisibleLines));\n } else if (input === 'q' || key.escape) {\n if (onExit) {\n onExit();\n } else {\n exit();\n }\n }\n });\n\n // Color error lines based on content\n const getLineColor = (line: string): string => {\n if (/error|Error|ERR!/i.test(line)) return colors.error;\n if (/warning|warn/i.test(line)) return colors.warning;\n if (/:\\d+:\\d+/.test(line)) return colors.cyan;\n if (line.startsWith('─') || line.startsWith('openbuilder:')) return colors.dimGray;\n return colors.gray;\n };\n\n const divider = symbols.horizontalLine.repeat(boxWidth - 2);\n const hasScroll = errorLines.length > maxVisibleLines;\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" width=\"100%\">\n {/* Top divider */}\n <Text color={colors.dimGray}>{divider}</Text>\n \n {/* Error header */}\n <Box marginTop={1} marginBottom={1} width={boxWidth} justifyContent=\"center\">\n <Text color={colors.error} bold>{symbols.cross} {title}</Text>\n </Box>\n\n {/* Scrollable error content */}\n <Box \n flexDirection=\"column\" \n width={boxWidth}\n borderStyle=\"round\"\n borderColor={colors.error}\n paddingX={1}\n paddingY={0}\n >\n {/* Scroll indicator header */}\n {hasScroll && (\n <Box justifyContent=\"flex-end\" marginBottom={0}>\n <Text color={colors.dimGray} dimColor>\n [{scrollOffset + 1}-{Math.min(scrollOffset + maxVisibleLines, errorLines.length)}/{errorLines.length}] ↑↓\n </Text>\n </Box>\n )}\n \n {/* Error lines */}\n {visibleLines.length > 0 ? (\n visibleLines.map((line, index) => {\n const truncatedLine = line.length > boxWidth - 4 \n ? line.substring(0, boxWidth - 7) + '...' \n : line;\n return (\n <Text key={index} color={getLineColor(line)} wrap=\"truncate\">\n {truncatedLine}\n </Text>\n );\n })\n ) : (\n <Text color={colors.dimGray}>No error details captured</Text>\n )}\n </Box>\n\n {/* Suggestions */}\n {suggestions.length > 0 && (\n <Box flexDirection=\"column\" marginTop={1} width={boxWidth}>\n {suggestions.map((suggestion, index) => (\n <Text key={index} color={suggestion.startsWith(' ') ? colors.cyan : colors.gray}>\n {suggestion}\n </Text>\n ))}\n </Box>\n )}\n\n {/* Bottom divider */}\n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n\n {/* Keyboard shortcuts */}\n <Box marginTop={1} justifyContent=\"center\">\n {showCopiedMessage ? (\n <Text color={colors.success} bold>\n {symbols.check} Copied to clipboard! Exiting...\n </Text>\n ) : (\n <Box>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.success} bold>c</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.success}>copy & exit</Text>\n <Text> </Text>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.cyan}>q</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.gray}>quit</Text>\n {hasScroll && (\n <>\n <Text> </Text>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.cyan}>↑↓</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.gray}>scroll</Text>\n </>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n","import { useState, useCallback } from 'react';\nimport type { StepStatus } from '../components/ProgressStepper.js';\nimport type { TaskStatus } from '../components/TaskList.js';\nimport type { ConfigItem } from '../components/ConfigSummary.js';\n\nexport type InitPhase = 'repo' | 'build' | 'database' | 'ready';\n\nexport interface Task {\n id: string;\n label: string;\n status: TaskStatus;\n detail?: string;\n error?: string;\n stepId: string; // Which step this task belongs to\n}\n\nexport interface Step {\n id: string;\n label: string;\n status: StepStatus;\n}\n\nexport interface BuildErrorDetails {\n /** Raw error output lines for scrollable view */\n errorLines: string[];\n /** Suggestions for fixing */\n suggestions: string[];\n}\n\nexport interface InitState {\n phase: InitPhase;\n steps: Step[];\n tasks: Task[];\n config: ConfigItem[];\n error: {\n message: string;\n suggestions: string[];\n /** Detailed build error for full-screen view */\n buildError?: BuildErrorDetails;\n } | null;\n isComplete: boolean;\n}\n\nconst INITIAL_STEPS: Step[] = [\n { id: 'repo', label: 'Clone', status: 'pending' },\n { id: 'build', label: 'Build', status: 'pending' },\n { id: 'database', label: 'Configure', status: 'pending' },\n { id: 'ready', label: 'Finish', status: 'pending' },\n];\n\n// Tasks now have a stepId to associate them with a step\nconst INITIAL_TASKS: Task[] = [\n { id: 'clone', label: 'Cloning repository', status: 'pending', stepId: 'repo' },\n { id: 'deps', label: 'Installing dependencies', status: 'pending', stepId: 'build' },\n { id: 'build', label: 'Building packages', status: 'pending', stepId: 'build' },\n { id: 'database', label: 'Configuring database', status: 'pending', stepId: 'database' },\n { id: 'config', label: 'Saving configuration', status: 'pending', stepId: 'ready' },\n { id: 'services', label: 'Building services', status: 'pending', stepId: 'ready' },\n];\n\nexport interface UseInitFlowReturn {\n state: InitState;\n // Step management\n setStepStatus: (stepId: string, status: StepStatus) => void;\n activateStep: (stepId: string) => void;\n completeStep: (stepId: string) => void;\n failStep: (stepId: string) => void;\n // Task management\n setTaskStatus: (taskId: string, status: TaskStatus, detail?: string) => void;\n startTask: (taskId: string, detail?: string) => void;\n completeTask: (taskId: string) => void;\n failTask: (taskId: string, error: string) => void;\n // Helper to get tasks for a specific step\n getTasksForStep: (stepId: string) => Task[];\n // Helper to get currently active tasks (running or just completed in current phase)\n getActiveStepTasks: () => Task[];\n // Config management\n setConfig: (items: ConfigItem[]) => void;\n // Error management\n setError: (message: string, suggestions: string[]) => void;\n setBuildError: (message: string, errorLines: string[], suggestions: string[]) => void;\n clearError: () => void;\n // Completion\n markComplete: () => void;\n // Reset\n reset: () => void;\n}\n\nexport function useInitFlow(): UseInitFlowReturn {\n const [state, setState] = useState<InitState>({\n phase: 'repo',\n steps: INITIAL_STEPS,\n tasks: INITIAL_TASKS,\n config: [],\n error: null,\n isComplete: false,\n });\n\n // Step management\n const setStepStatus = useCallback((stepId: string, status: StepStatus) => {\n setState(prev => ({\n ...prev,\n steps: prev.steps.map(step =>\n step.id === stepId ? { ...step, status } : step\n ),\n }));\n }, []);\n\n const activateStep = useCallback((stepId: string) => {\n setState(prev => ({\n ...prev,\n phase: stepId as InitPhase,\n steps: prev.steps.map(step =>\n step.id === stepId ? { ...step, status: 'active' } : step\n ),\n }));\n }, []);\n\n const completeStep = useCallback((stepId: string) => {\n setStepStatus(stepId, 'completed');\n }, [setStepStatus]);\n\n const failStep = useCallback((stepId: string) => {\n setStepStatus(stepId, 'error');\n }, [setStepStatus]);\n\n // Task management\n const setTaskStatus = useCallback((taskId: string, status: TaskStatus, detail?: string) => {\n setState(prev => ({\n ...prev,\n tasks: prev.tasks.map(task =>\n task.id === taskId ? { ...task, status, detail: detail ?? task.detail } : task\n ),\n }));\n }, []);\n\n const startTask = useCallback((taskId: string, detail?: string) => {\n setTaskStatus(taskId, 'running', detail);\n }, [setTaskStatus]);\n\n const completeTask = useCallback((taskId: string) => {\n setTaskStatus(taskId, 'completed');\n }, [setTaskStatus]);\n\n const failTask = useCallback((taskId: string, error: string) => {\n setState(prev => ({\n ...prev,\n tasks: prev.tasks.map(task =>\n task.id === taskId ? { ...task, status: 'failed', error } : task\n ),\n }));\n }, []);\n\n // Get tasks for a specific step\n const getTasksForStep = useCallback((stepId: string): Task[] => {\n return state.tasks.filter(task => task.stepId === stepId);\n }, [state.tasks]);\n\n // Get tasks for the currently active step\n const getActiveStepTasks = useCallback((): Task[] => {\n return state.tasks.filter(task => task.stepId === state.phase);\n }, [state.tasks, state.phase]);\n\n // Config management\n const setConfig = useCallback((items: ConfigItem[]) => {\n setState(prev => ({\n ...prev,\n config: items,\n }));\n }, []);\n\n // Error management\n const setError = useCallback((message: string, suggestions: string[]) => {\n setState(prev => ({\n ...prev,\n error: { message, suggestions },\n }));\n }, []);\n\n const setBuildError = useCallback((message: string, errorLines: string[], suggestions: string[]) => {\n setState(prev => ({\n ...prev,\n error: { \n message, \n suggestions,\n buildError: {\n errorLines,\n suggestions,\n }\n },\n }));\n }, []);\n\n const clearError = useCallback(() => {\n setState(prev => ({\n ...prev,\n error: null,\n }));\n }, []);\n\n // Completion\n const markComplete = useCallback(() => {\n setState(prev => ({\n ...prev,\n isComplete: true,\n phase: 'ready',\n steps: prev.steps.map(step => ({ ...step, status: 'completed' })),\n }));\n }, []);\n\n // Reset\n const reset = useCallback(() => {\n setState({\n phase: 'repo',\n steps: INITIAL_STEPS,\n tasks: INITIAL_TASKS,\n config: [],\n error: null,\n isComplete: false,\n });\n }, []);\n\n return {\n state,\n setStepStatus,\n activateStep,\n completeStep,\n failStep,\n setTaskStatus,\n startTask,\n completeTask,\n failTask,\n getTasksForStep,\n getActiveStepTasks,\n setConfig,\n setError,\n setBuildError,\n clearError,\n markComplete,\n reset,\n };\n}\n","import { useEffect, useState } from 'react';\nimport { Box, Text, useApp, useStdout } from 'ink';\nimport { Banner, ProgressStepper, TaskStream, ConfigSummary, NextSteps, ErrorSummary, BuildErrorView } from '../components/index.js';\nimport { useInitFlow } from '../hooks/index.js';\nimport type { ConfigItem } from '../components/ConfigSummary.js';\nimport type { StreamTask } from '../components/TaskStream.js';\nimport { colors, symbols } from '../theme.js';\nimport { getVersionInfo } from '../../utils/version-info.js';\n\nexport interface InitConfig {\n workspace: string;\n monorepoPath?: string;\n databaseUrl?: string;\n apiUrl: string;\n runnerId: string;\n}\n\nexport interface InitScreenProps {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n onComplete?: (config: InitConfig) => void;\n onError?: (error: Error) => void;\n}\n\nexport interface InitCallbacks {\n // Step management\n activateStep: (stepId: string) => void;\n completeStep: (stepId: string) => void;\n failStep: (stepId: string) => void;\n // Task management\n startTask: (taskId: string, detail?: string) => void;\n completeTask: (taskId: string) => void;\n failTask: (taskId: string, error: string) => void;\n // Skip task (remove from display)\n skipTask: (taskId: string) => void;\n // Update task label\n updateTaskLabel: (taskId: string, label: string) => void;\n // Error handling\n setError: (message: string, suggestions: string[]) => void;\n // Build error with full output for scrollable view\n setBuildError: (message: string, errorLines: string[], suggestions: string[]) => void;\n}\n\n/**\n * Main init screen - fullscreen centered TUI\n * Shows progress stepper with tasks appearing under the active step\n */\nexport function InitScreen({ onInit, onComplete, onError }: InitScreenProps) {\n const { exit } = useApp();\n const { stdout } = useStdout();\n const flow = useInitFlow();\n const [finalConfig, setFinalConfig] = useState<InitConfig | null>(null);\n \n // Get version info\n const versionInfo = getVersionInfo();\n \n // Calculate vertical centering\n const terminalHeight = stdout?.rows || 24;\n const contentHeight = 20;\n const topPadding = Math.max(0, Math.floor((terminalHeight - contentHeight) / 3));\n\n // Run init flow\n useEffect(() => {\n const callbacks: InitCallbacks = {\n activateStep: flow.activateStep,\n completeStep: flow.completeStep,\n failStep: flow.failStep,\n startTask: flow.startTask,\n completeTask: flow.completeTask,\n failTask: flow.failTask,\n skipTask: (taskId: string) => {\n flow.setTaskStatus(taskId, 'completed');\n },\n updateTaskLabel: (taskId: string, label: string) => {\n flow.setTaskStatus(taskId, flow.state.tasks.find(t => t.id === taskId)?.status || 'pending');\n },\n setError: flow.setError,\n setBuildError: flow.setBuildError,\n };\n\n onInit(callbacks)\n .then((config) => {\n setFinalConfig(config);\n \n // Set config summary items\n const configItems: ConfigItem[] = [\n { label: 'Workspace', value: config.workspace },\n { label: 'Server', value: config.apiUrl },\n { label: 'Runner', value: config.runnerId },\n ];\n \n if (config.monorepoPath) {\n configItems.push({ label: 'Repository', value: config.monorepoPath });\n }\n \n flow.setConfig(configItems);\n flow.markComplete();\n \n if (onComplete) {\n onComplete(config);\n }\n })\n .catch((error) => {\n if (onError) {\n onError(error);\n }\n });\n }, []);\n\n const { state } = flow;\n \n // Get tasks for current step only, mapped to StreamTask format\n const currentStepTasks: StreamTask[] = flow.getActiveStepTasks().map(task => ({\n id: task.id,\n label: task.label,\n status: task.status,\n detail: task.detail,\n error: task.error,\n }));\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" paddingTop={topPadding}>\n {/* Banner */}\n <Banner />\n \n {/* Version - right under banner */}\n <Box marginTop={1}>\n <Text color={colors.gray} dimColor>\n {versionInfo.display}\n </Text>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={1} />\n \n {/* Progress Stepper (just dots and labels) */}\n <ProgressStepper steps={state.steps} />\n \n {/* Task Stream - shows current step's tasks with typewriter effect */}\n {!state.isComplete && !state.error && (\n <TaskStream \n stepId={state.phase}\n tasks={currentStepTasks}\n />\n )}\n \n {/* Error Display - show full BuildErrorView for build errors, simple ErrorSummary for others */}\n {state.error && state.error.buildError && (\n <BuildErrorView\n title={state.error.message}\n errorLines={state.error.buildError.errorLines}\n suggestions={state.error.buildError.suggestions}\n onExit={() => exit()}\n />\n )}\n {state.error && !state.error.buildError && (\n <Box marginTop={2}>\n <ErrorSummary \n message={state.error.message} \n suggestions={state.error.suggestions} \n />\n </Box>\n )}\n \n {/* Completion Display - show summary of all completed tasks */}\n {state.isComplete && !state.error && (\n <Box marginTop={2} flexDirection=\"column\" alignItems=\"center\">\n {/* Success message */}\n <Text color={colors.success} bold>\n {symbols.check} Setup complete!\n </Text>\n \n {/* Completed tasks summary */}\n <Box marginTop={1} flexDirection=\"column\">\n {state.tasks.filter(t => t.status === 'completed').map(task => (\n <Box key={task.id}>\n <Text color={colors.success}>{symbols.check}</Text>\n <Text color={colors.gray}> {task.label}</Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1} />\n <ConfigSummary items={state.config} />\n <NextSteps command=\"openbuilder run\" url=\"http://localhost:3000\" />\n </Box>\n )}\n </Box>\n );\n}\n","import { Box, Text, useInput, useStdout } from 'ink';\nimport { Banner } from '../components/index.js';\nimport { colors, symbols } from '../theme.js';\n\nexport interface StartPromptScreenProps {\n onSelect: (shouldStart: boolean) => void;\n}\n\n/**\n * Post-init prompt asking if user wants to start OpenBuilder now\n */\nexport function StartPromptScreen({ onSelect }: StartPromptScreenProps) {\n const { stdout } = useStdout();\n \n // Calculate vertical centering\n const terminalHeight = stdout?.rows || 24;\n const contentHeight = 14;\n const topPadding = Math.max(0, Math.floor((terminalHeight - contentHeight) / 3));\n\n useInput((input, key) => {\n const char = input.toLowerCase();\n \n // Enter = start\n if (key.return) {\n onSelect(true);\n return;\n }\n \n // Y = start\n if (char === 'y') {\n onSelect(true);\n return;\n }\n \n // N = don't start\n if (char === 'n') {\n onSelect(false);\n return;\n }\n \n // Escape = don't start\n if (key.escape) {\n onSelect(false);\n return;\n }\n });\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" paddingTop={topPadding}>\n {/* Banner */}\n <Banner />\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Success message */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.success} bold>\n {symbols.check} OpenBuilder is ready!\n </Text>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Prompt */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.white}>\n Start OpenBuilder now?\n </Text>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>\n Press <Text color={colors.cyan} bold>Y</Text> or <Text color={colors.cyan} bold>Enter</Text> to start, <Text color={colors.cyan} bold>N</Text> or <Text color={colors.cyan} bold>Esc</Text> to exit\n </Text>\n </Box>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Info about manual start */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>\n To start later, run: <Text color={colors.cyan}>openbuilder run</Text>\n </Text>\n </Box>\n </Box>\n );\n}\n","import { useState } from 'react';\nimport { render } from 'ink';\nimport { InitScreen, StartPromptScreen, type InitCallbacks, type InitConfig } from './screens/index.js';\n\nexport interface RunInitTUIOptions {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n}\n\ntype InitAppScreen = 'init' | 'prompt';\n\ninterface InitAppProps {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n onComplete: (config: InitConfig, shouldStart: boolean) => void;\n onError: (error: Error) => void;\n}\n\n/**\n * Init App component that manages the init flow screens\n */\nfunction InitApp({ onInit, onComplete, onError }: InitAppProps) {\n const [screen, setScreen] = useState<InitAppScreen>('init');\n const [config, setConfig] = useState<InitConfig | null>(null);\n\n const handleInitComplete = (initConfig: InitConfig) => {\n setConfig(initConfig);\n // Show the start prompt screen\n setScreen('prompt');\n };\n\n const handleStartChoice = (shouldStart: boolean) => {\n if (config) {\n onComplete(config, shouldStart);\n }\n };\n\n if (screen === 'prompt' && config) {\n return <StartPromptScreen onSelect={handleStartChoice} />;\n }\n\n return (\n <InitScreen\n onInit={onInit}\n onComplete={handleInitComplete}\n onError={onError}\n />\n );\n}\n\n/**\n * Render the TUI init screen\n * Returns a promise that resolves with config and whether to start\n */\nexport async function runInitTUI(options: RunInitTUIOptions): Promise<{ config: InitConfig; shouldStart: boolean }> {\n return new Promise((resolve, reject) => {\n let result: { config: InitConfig; shouldStart: boolean } | null = null;\n let error: Error | null = null;\n\n const { unmount, waitUntilExit } = render(\n <InitApp\n onInit={options.onInit}\n onComplete={(config, shouldStart) => {\n result = { config, shouldStart };\n // Give time for final render before unmounting\n setTimeout(() => {\n unmount();\n }, 100);\n }}\n onError={(err) => {\n error = err;\n // Keep error displayed, don't auto-unmount\n }}\n />,\n {\n exitOnCtrlC: true,\n }\n );\n\n waitUntilExit().then(() => {\n if (error) {\n reject(error);\n } else if (result) {\n resolve(result);\n } else {\n reject(new Error('Init cancelled'));\n }\n });\n });\n}\n","/**\n * TUI-based init command with beautiful centered interface\n * Uses Ink for React-based terminal rendering\n */\n\nimport { mkdir, writeFile } from 'node:fs/promises';\nimport { existsSync, realpathSync, rmSync } from 'node:fs';\nimport { join, resolve } from 'node:path';\nimport { randomBytes } from 'node:crypto';\nimport { runInitTUI } from '../tui/App.js';\nimport type { InitCallbacks, InitConfig } from '../tui/screens/index.js';\nimport { configManager } from '../utils/config-manager.js';\nimport { isInsideMonorepo } from '../utils/repo-detector.js';\nimport {\n cloneRepository,\n installDependencies,\n isPnpmInstalled,\n buildAgentCore\n} from '../utils/repo-cloner.js';\nimport {\n setupDatabase,\n pushDatabaseSchema,\n} from '../utils/database-setup.js';\nimport { CLIError } from '../utils/cli-error.js';\nimport { layout } from '../tui/theme.js';\n\n/**\n * Generate a secure random secret\n */\nfunction generateSecret(): string {\n return randomBytes(32).toString('hex');\n}\n\n/**\n * Check if a path is or contains the current working directory\n */\nfunction isCurrentWorkingDirectory(targetPath: string): boolean {\n try {\n const cwd = realpathSync(process.cwd());\n const target = realpathSync(resolve(targetPath));\n return cwd === target || cwd.startsWith(target + '/');\n } catch {\n const cwd = process.cwd();\n const target = resolve(targetPath);\n return cwd === target || cwd.startsWith(target + '/');\n }\n}\n\n/**\n * Normalize URL by adding protocol if missing\n */\nfunction normalizeUrl(url: string): string {\n if (!url) return url;\n if (url.match(/^https?:\\/\\//i)) return url;\n if (url.match(/^(localhost|127\\.0\\.0\\.1)(:|\\/|$)/i)) {\n return `http://${url}`;\n }\n return `https://${url}`;\n}\n\n/**\n * Get default workspace path\n */\nfunction getDefaultWorkspace(): string {\n return join(process.cwd(), 'openbuilder-workspace');\n}\n\n/**\n * Get default monorepo clone path\n */\nfunction getDefaultMonorepoPath(): string {\n return join(process.cwd(), 'openbuilder');\n}\n\n/**\n * Sleep utility for deliberate pacing\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\ninterface InitOptions {\n workspace?: string;\n url?: string;\n secret?: string;\n branch?: string;\n database?: string | boolean;\n yes?: boolean;\n nonInteractive?: boolean;\n}\n\n/**\n * Run the TUI-based init command\n */\nexport async function initTUICommand(options: InitOptions): Promise<void> {\n // Clear screen for fullscreen experience\n console.clear();\n\n try {\n const { shouldStart } = await runInitTUI({\n onInit: async (callbacks: InitCallbacks) => {\n return executeInitFlow(options, callbacks);\n },\n });\n \n if (shouldStart) {\n console.clear();\n console.log('\\n Starting OpenBuilder...\\n');\n // Import and run the start command (full TUI with web app + runner)\n const { startCommand } = await import('./start.js');\n await startCommand({});\n } else {\n console.clear();\n console.log('\\n ✨ OpenBuilder is ready!\\n');\n console.log(' To start later, run:\\n');\n console.log(' openbuilder run\\n');\n console.log(' Then open: http://localhost:3000\\n');\n }\n \n } catch (error) {\n // Error was already displayed in TUI\n console.log('\\n');\n process.exit(1);\n }\n}\n\n\n\n/**\n * Execute the init flow, calling callbacks to update UI\n */\nasync function executeInitFlow(\n options: InitOptions,\n callbacks: InitCallbacks\n): Promise<InitConfig> {\n const { activateStep, completeStep, failStep, startTask, completeTask, failTask, setError, setBuildError } = callbacks;\n\n let monorepoPath: string | undefined;\n let databaseUrl: string | undefined;\n const workspace = options.workspace || getDefaultWorkspace();\n const generatedSecret = options.secret || generateSecret();\n const apiUrl = normalizeUrl(options.url || 'http://localhost:3000');\n\n // ============================================\n // PHASE 1: Repository\n // ============================================\n activateStep('repo');\n await sleep(layout.stepTransitionDelay);\n\n // Reset config if exists\n if (configManager.isInitialized()) {\n configManager.reset();\n }\n\n // Check for existing monorepo\n startTask('clone', 'Checking for repository...');\n await sleep(300);\n\n const repoCheck = await isInsideMonorepo();\n\n if (repoCheck.inside && repoCheck.root) {\n monorepoPath = repoCheck.root;\n completeTask('clone');\n await sleep(layout.taskCompletionDelay);\n } else {\n // Need to clone\n const hasPnpm = await isPnpmInstalled();\n if (!hasPnpm) {\n failTask('clone', 'pnpm not found');\n failStep('repo');\n setError('pnpm is required', [\n 'Install pnpm: npm install -g pnpm',\n 'Then retry: openbuilder init -y',\n ]);\n throw new CLIError({\n code: 'DEPENDENCIES_INSTALL_FAILED',\n message: 'pnpm is not installed',\n });\n }\n\n const clonePath = getDefaultMonorepoPath();\n\n // Clean up existing installation\n if (existsSync(clonePath)) {\n if (isCurrentWorkingDirectory(clonePath)) {\n failTask('clone', 'Cannot remove current directory');\n failStep('repo');\n setError('Cannot remove current directory', [\n 'Run from a different directory',\n 'Or manually remove: rm -rf ' + clonePath,\n ]);\n throw new CLIError({\n code: 'CONFIG_INVALID',\n message: 'Cannot remove current working directory',\n });\n }\n rmSync(clonePath, { recursive: true, force: true });\n }\n\n try {\n // Clone repository\n startTask('clone', 'Cloning from GitHub...');\n monorepoPath = await cloneRepository({\n targetPath: clonePath,\n branch: options.branch || 'main',\n silent: true, // Suppress console output in TUI mode\n });\n completeTask('clone');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('clone', 'Clone failed');\n failStep('repo');\n setError('Failed to clone repository', [\n 'Check your internet connection',\n 'Verify git is installed: git --version',\n 'Try: git clone https://github.com/codyde/openbuilder.git',\n ]);\n throw error;\n }\n }\n\n completeStep('repo');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 2: Build\n // ============================================\n activateStep('build');\n await sleep(layout.stepTransitionDelay);\n\n // Install dependencies\n startTask('deps', 'Running pnpm install...');\n try {\n await installDependencies(monorepoPath!, true); // silent mode\n completeTask('deps');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('deps', 'Install failed');\n failStep('build');\n setError('Failed to install dependencies', [\n 'Check pnpm is installed: pnpm --version',\n 'Try manually: cd ' + monorepoPath + ' && pnpm install',\n ]);\n throw error;\n }\n\n // Build packages\n startTask('build', '@openbuilder/agent-core');\n try {\n await buildAgentCore(monorepoPath!, true); // silent mode\n completeTask('build');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('build', 'Build failed');\n failStep('build');\n setError('Failed to build packages', [\n 'Try manually: cd ' + monorepoPath + ' && pnpm build',\n ]);\n throw error;\n }\n\n completeStep('build');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 3: Database\n // ============================================\n activateStep('database');\n await sleep(layout.stepTransitionDelay);\n\n startTask('database', 'Setting up Neon database...');\n\n // Handle database options\n const dbOption = options.database;\n const isConnectionString = typeof dbOption === 'string' &&\n (dbOption.startsWith('postgres://') || dbOption.startsWith('postgresql://'));\n\n try {\n if (isConnectionString) {\n databaseUrl = dbOption as string;\n await pushDatabaseSchema(monorepoPath!, databaseUrl, true); // silent mode\n } else {\n // Default: setup Neon database\n databaseUrl = await setupDatabase(monorepoPath!, true) || undefined; // silent mode\n if (databaseUrl) {\n await pushDatabaseSchema(monorepoPath!, databaseUrl, true); // silent mode\n }\n }\n completeTask('database');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n // Database setup is optional, don't fail hard\n completeTask('database');\n await sleep(layout.taskCompletionDelay);\n }\n\n completeStep('database');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 4: Configuration & Ready\n // ============================================\n activateStep('ready');\n await sleep(layout.stepTransitionDelay);\n\n // Create workspace directory\n if (!existsSync(workspace)) {\n await mkdir(workspace, { recursive: true });\n }\n\n // Save configuration\n startTask('config', 'Writing configuration...');\n try {\n configManager.set('workspace', workspace);\n if (monorepoPath) {\n configManager.set('monorepoPath', monorepoPath);\n }\n if (databaseUrl) {\n configManager.set('databaseUrl', databaseUrl);\n }\n configManager.set('apiUrl', apiUrl);\n \n const wsProtocol = apiUrl.startsWith('https://') ? 'wss://' : 'ws://';\n const hostPath = apiUrl.replace(/^https?:\\/\\//, '').replace(/\\/$/, '');\n const wsUrl = `${wsProtocol}${hostPath}/ws/runner`;\n \n configManager.set('server', {\n wsUrl: wsUrl,\n secret: generatedSecret,\n });\n configManager.set('runner', {\n id: 'local',\n reconnectAttempts: 5,\n heartbeatInterval: 15000,\n });\n configManager.set('tunnel', {\n provider: 'cloudflare',\n autoCreate: true,\n });\n\n // Create .env.local\n if (monorepoPath) {\n const envLocalPath = join(monorepoPath, 'apps', 'openbuilder', '.env.local');\n const envContent = [\n '# Auto-generated by openbuilder CLI',\n `# Generated at: ${new Date().toISOString()}`,\n '',\n 'OPENBUILDER_LOCAL_MODE=true',\n `RUNNER_SHARED_SECRET=${generatedSecret}`,\n `WORKSPACE_ROOT=${workspace}`,\n 'RUNNER_ID=local',\n 'RUNNER_DEFAULT_ID=local',\n `DATABASE_URL=${databaseUrl || ''}`,\n '',\n ].join('\\n');\n \n await writeFile(envLocalPath, envContent);\n }\n\n completeTask('config');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('config', 'Config save failed');\n failStep('ready');\n setError('Failed to save configuration', [\n 'Check file permissions',\n 'Try running from a different directory',\n ]);\n throw error;\n }\n\n // Build all services for production\n if (monorepoPath) {\n startTask('services', 'Building services (this may take a minute)...');\n \n // Track build output for error reporting (capture both stdout and stderr)\n let buildOutput = '';\n let buildError = '';\n \n try {\n const { spawn } = await import('child_process');\n \n await new Promise<void>((resolve, reject) => {\n const buildProcess = spawn('pnpm', ['build:all'], {\n cwd: monorepoPath,\n stdio: 'pipe',\n shell: true,\n });\n \n // Capture stdout - many build tools output errors here\n buildProcess.stdout?.on('data', (data: Buffer) => {\n buildOutput += data.toString();\n });\n \n // Capture stderr\n buildProcess.stderr?.on('data', (data: Buffer) => {\n buildError += data.toString();\n });\n \n buildProcess.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Build failed with code ${code}`));\n });\n buildProcess.on('error', reject);\n });\n completeTask('services');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n // Build failed - surface the error to the user\n failTask('services', 'Build failed');\n failStep('ready');\n \n // Combine all output for analysis\n const allOutput = (buildOutput + '\\n' + buildError).trim();\n const allLines = allOutput.split('\\n');\n \n // Find the most relevant error lines with better patterns\n const errorPatterns = [\n /error TS\\d+:/i, // TypeScript errors\n /error:/i, // General errors\n /Error:/, // Error messages\n /ERR!/, // npm/pnpm errors\n /failed/i, // Failed messages\n /Cannot find/i, // Module not found\n /Module not found/i, // Webpack/Next.js errors\n /SyntaxError/i, // Syntax errors\n /TypeError/i, // Type errors\n /ReferenceError/i, // Reference errors\n /ENOENT/i, // File not found\n /✖|✗|×/, // Error symbols\n ];\n \n // Find lines that match error patterns\n const relevantLines: string[] = [];\n let inErrorBlock = false;\n \n for (let i = 0; i < allLines.length; i++) {\n const line = allLines[i];\n const isErrorLine = errorPatterns.some(pattern => pattern.test(line));\n \n if (isErrorLine) {\n inErrorBlock = true;\n // Include 1 line before for context if available\n if (i > 0 && relevantLines.length === 0) {\n const prevLine = allLines[i - 1].trim();\n if (prevLine && !prevLine.startsWith('>')) {\n relevantLines.push(prevLine);\n }\n }\n }\n \n if (inErrorBlock) {\n relevantLines.push(line.trim());\n // Collect more lines for scrollable view (max 50 lines)\n if (relevantLines.length >= 50) break;\n }\n \n // End error block on empty line or success indicators\n if (inErrorBlock && (line.trim() === '' || /successfully|completed/i.test(line))) {\n // Keep going in case there are more errors\n inErrorBlock = false;\n }\n }\n \n // If no specific errors found, show last 30 lines of output\n const displayLines = relevantLines.length > 0 \n ? relevantLines\n : allLines.slice(-30);\n \n const suggestions = [\n 'To debug further, run manually:',\n ` cd ${monorepoPath} && pnpm build:all`,\n '',\n 'Common fixes:',\n ' - Run: pnpm install (missing dependencies)',\n ' - Check for TypeScript errors in the files mentioned above',\n ' - Ensure all environment variables are set',\n ];\n \n // Use setBuildError to show full-screen scrollable error view\n setBuildError('Production build failed', displayLines, suggestions);\n \n throw new CLIError({\n code: 'BUILD_FAILED',\n message: 'Failed to build services for production',\n suggestions: [\n `Run manually: cd ${monorepoPath} && pnpm build:all`,\n 'Check for TypeScript errors in the output above',\n 'Ensure all dependencies are installed: pnpm install',\n ],\n });\n }\n }\n\n // Validate configuration\n const validation = configManager.validate();\n if (!validation.valid) {\n failStep('ready');\n setError('Configuration invalid', validation.errors);\n throw new CLIError({\n code: 'CONFIG_INVALID',\n message: 'Configuration validation failed',\n });\n }\n\n completeStep('ready');\n\n return {\n workspace,\n monorepoPath,\n databaseUrl,\n apiUrl,\n runnerId: 'local',\n };\n}\n"],"names":["_jsxs","_jsx","Fragment","useState","useRef","useEffect","useCallback","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-tui-tZtLISA4.js","sources":["../../src/cli/tui/components/ProgressStepper.tsx","../../src/cli/tui/components/TaskStream.tsx","../../src/cli/tui/components/ConfigSummary.tsx","../../src/cli/tui/components/BuildErrorView.tsx","../../src/cli/tui/hooks/useInitFlow.ts","../../src/cli/tui/screens/InitScreen.tsx","../../src/cli/tui/screens/StartPromptScreen.tsx","../../src/cli/tui/App.tsx","../../src/cli/commands/init-tui.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'error';\n\nexport interface Step {\n id: string;\n label: string;\n status: StepStatus;\n}\n\n// Keep for backwards compatibility\nexport interface StepTask {\n id: string;\n label: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n detail?: string;\n error?: string;\n}\n\ninterface ProgressStepperProps {\n steps: Step[];\n}\n\n/**\n * Horizontal progress stepper - just the dots and labels\n * \n * ●───────────●───────────○───────────○\n * Setup Install Database Finalize\n */\nexport function ProgressStepper({ steps }: ProgressStepperProps) {\n const getStepColor = (status: StepStatus): string => {\n switch (status) {\n case 'completed':\n return colors.success;\n case 'active':\n return colors.cyan;\n case 'error':\n return colors.error;\n default:\n return colors.dimGray;\n }\n };\n\n const getStepSymbol = (status: StepStatus): string => {\n switch (status) {\n case 'error':\n return symbols.errorDot;\n case 'completed':\n case 'active':\n return symbols.filledDot;\n default:\n return symbols.hollowDot;\n }\n };\n\n // Cell and connector sizing\n const cellWidth = 10;\n const connectorWidth = 7;\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n {/* Dots row */}\n <Box>\n {steps.map((step, index) => (\n <Fragment key={step.id}>\n <Box width={cellWidth} justifyContent=\"center\">\n <Text color={getStepColor(step.status)}>\n {getStepSymbol(step.status)}\n </Text>\n </Box>\n {index < steps.length - 1 && (\n <Text color={colors.dimGray}>\n {symbols.horizontalLine.repeat(connectorWidth)}\n </Text>\n )}\n </Fragment>\n ))}\n </Box>\n \n {/* Labels row */}\n <Box>\n {steps.map((step, index) => (\n <Fragment key={step.id}>\n <Box width={cellWidth} justifyContent=\"center\">\n <Text \n color={step.status === 'pending' ? colors.dimGray : colors.gray}\n dimColor={step.status === 'pending'}\n >\n {step.label}\n </Text>\n </Box>\n {index < steps.length - 1 && (\n <Box width={connectorWidth} />\n )}\n </Fragment>\n ))}\n </Box>\n </Box>\n );\n}\n","import { useState, useEffect, useRef } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols, layout } from '../theme.js';\n\nexport interface StreamTask {\n id: string;\n label: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n detail?: string;\n error?: string;\n}\n\ninterface TaskStreamProps {\n /** Current step ID - clears stream when this changes */\n stepId: string;\n /** Tasks for the current step */\n tasks: StreamTask[];\n /** Called when typewriter animation completes for a detail */\n onTypewriterComplete?: (taskId: string) => void;\n}\n\ninterface DisplayLine {\n id: string;\n text: string;\n displayedText: string;\n color: string;\n prefix: string;\n prefixColor: string;\n showCursor: boolean;\n checkmark?: boolean; // Show green checkmark after prefix\n}\n\n// Match the stepper width: cellWidth(10) * 4 + connectorWidth(7) * 3 = 61\nconst BOX_WIDTH = 61;\nconst BOX_INNER_WIDTH = BOX_WIDTH - 4; // Account for \"│ \" and \" │\"\n\n/**\n * TaskStream - Shows current step's tasks in a terminal-style box\n * \n * ┌───────────────────────────────────────────────────────────┐\n * │ ⠋ Configuring database │\n * │ └── Setting up Neon database...▌ │\n * └───────────────────────────────────────────────────────────┘\n */\nexport function TaskStream({ stepId, tasks, onTypewriterComplete }: TaskStreamProps) {\n const [spinnerIndex, setSpinnerIndex] = useState(0);\n const [cursorVisible, setCursorVisible] = useState(true);\n const [typedChars, setTypedChars] = useState<Record<string, number>>({});\n const [completedTyping, setCompletedTyping] = useState<Set<string>>(new Set());\n const prevStepRef = useRef(stepId);\n \n // Reset typed chars when step changes\n useEffect(() => {\n if (stepId !== prevStepRef.current) {\n setTypedChars({});\n setCompletedTyping(new Set());\n prevStepRef.current = stepId;\n }\n }, [stepId]);\n \n // Spinner animation - runs independently\n useEffect(() => {\n let mounted = true;\n const animate = () => {\n if (!mounted) return;\n setSpinnerIndex(prev => (prev + 1) % symbols.spinnerFrames.length);\n setTimeout(animate, layout.spinnerInterval);\n };\n const timeout = setTimeout(animate, layout.spinnerInterval);\n return () => {\n mounted = false;\n clearTimeout(timeout);\n };\n }, []);\n \n // Cursor blink - runs independently \n useEffect(() => {\n let mounted = true;\n const blink = () => {\n if (!mounted) return;\n setCursorVisible(prev => !prev);\n setTimeout(blink, 400);\n };\n const timeout = setTimeout(blink, 400);\n return () => {\n mounted = false;\n clearTimeout(timeout);\n };\n }, []);\n \n // Find tasks by status\n const runningTask = tasks.find(t => t.status === 'running');\n const failedTask = tasks.find(t => t.status === 'failed');\n const completedTasks = tasks.filter(t => t.status === 'completed');\n \n // Primary task: running > failed > last completed (to prevent visual jump)\n const primaryTask = runningTask || failedTask || completedTasks[completedTasks.length - 1];\n \n // Previous completed tasks (all except the one shown as primary)\n const previousCompleted = primaryTask?.status === 'completed' \n ? completedTasks.slice(0, -1) \n : completedTasks;\n \n // Build display lines\n const lines: DisplayLine[] = [];\n \n // Main task line (running, failed, or last completed)\n if (primaryTask) {\n const isRunning = primaryTask.status === 'running';\n const isCompleted = primaryTask.status === 'completed';\n const isFailed = primaryTask.status === 'failed';\n \n let prefix: string;\n let prefixColor: string;\n let textColor: string;\n \n if (isRunning) {\n prefix = `${symbols.spinnerFrames[spinnerIndex]} `;\n prefixColor = colors.cyan;\n textColor = colors.white;\n } else if (isCompleted) {\n prefix = `${symbols.check} `;\n prefixColor = colors.success;\n textColor = colors.white;\n } else {\n prefix = `${symbols.cross} `;\n prefixColor = colors.error;\n textColor = colors.error;\n }\n \n lines.push({\n id: `main-${primaryTask.id}`,\n text: primaryTask.label,\n displayedText: primaryTask.label,\n color: textColor,\n prefix,\n prefixColor,\n showCursor: false,\n });\n }\n \n // Previous completed tasks as subtasks - with green checkmark\n previousCompleted.forEach((task, index) => {\n const hasMore = primaryTask?.detail || primaryTask?.error || index < previousCompleted.length - 1;\n const connector = hasMore ? '├──' : '└──';\n \n lines.push({\n id: `completed-${task.id}`,\n text: task.label,\n displayedText: task.label,\n color: colors.white,\n prefix: ` ${connector} `,\n prefixColor: colors.dimGray,\n showCursor: false,\n checkmark: true,\n });\n });\n \n // Detail line (no typewriter for progress updates - show immediately)\n if (primaryTask?.detail && primaryTask.status === 'running') {\n lines.push({\n id: `detail-${primaryTask.id}`,\n text: primaryTask.detail,\n displayedText: primaryTask.detail, // Show full text immediately for progress updates\n color: colors.dimGray,\n prefix: ' └── ',\n prefixColor: colors.dimGray,\n showCursor: false, // No cursor for instant updates\n });\n }\n \n // Error line (typewriter effect)\n if (primaryTask?.error && primaryTask.status === 'failed') {\n const errorId = `error-${primaryTask.id}`;\n const currentChars = typedChars[errorId] || 0;\n const displayedText = primaryTask.error.slice(0, currentChars);\n const isTyping = currentChars < primaryTask.error.length;\n \n lines.push({\n id: errorId,\n text: primaryTask.error,\n displayedText,\n color: colors.error,\n prefix: ' └── ',\n prefixColor: colors.dimGray,\n showCursor: isTyping && cursorVisible,\n });\n }\n \n // Typewriter animation - only for errors now (details show instantly for progress)\n const errorToType = primaryTask?.error && primaryTask.status === 'failed' ? primaryTask.error : null;\n const textToType = errorToType;\n const typeId = errorToType ? `error-${primaryTask?.id}` : null;\n \n useEffect(() => {\n if (!typeId || !textToType) return;\n \n const currentChars = typedChars[typeId] || 0;\n \n // Check if we just finished typing\n if (currentChars >= textToType.length) {\n // Fire callback once when typing completes\n if (!completedTyping.has(typeId) && onTypewriterComplete && primaryTask) {\n setCompletedTyping(prev => new Set(prev).add(typeId));\n onTypewriterComplete(primaryTask.id);\n }\n return;\n }\n \n // Continue typing animation\n const timeout = setTimeout(() => {\n setTypedChars(prev => ({\n ...prev,\n [typeId]: (prev[typeId] || 0) + 1,\n }));\n }, 30);\n \n return () => clearTimeout(timeout);\n }, [typeId, textToType, typedChars[typeId || ''], completedTyping, onTypewriterComplete, primaryTask]);\n \n // Empty state - show empty box to maintain layout\n if (lines.length === 0) {\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box flexDirection=\"column\" width={BOX_WIDTH}>\n <Text color={colors.dimGray}>┌{'─'.repeat(BOX_WIDTH - 2)}┐</Text>\n <Box>\n <Text color={colors.dimGray}>│</Text>\n <Text>{' '.repeat(BOX_WIDTH - 2)}</Text>\n <Text color={colors.dimGray}>│</Text>\n </Box>\n <Text color={colors.dimGray}>└{'─'.repeat(BOX_WIDTH - 2)}┘</Text>\n </Box>\n </Box>\n );\n }\n \n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box flexDirection=\"column\" width={BOX_WIDTH}>\n {/* Top border */}\n <Text color={colors.dimGray}>┌{'─'.repeat(BOX_WIDTH - 2)}┐</Text>\n \n {/* Content lines */}\n {lines.map(line => {\n const checkmarkStr = line.checkmark ? `${symbols.check} ` : '';\n const content = `${line.prefix}${checkmarkStr}${line.displayedText}`;\n const cursor = line.showCursor ? '▌' : '';\n const paddingNeeded = Math.max(0, BOX_INNER_WIDTH - content.length - cursor.length);\n \n return (\n <Box key={line.id}>\n <Text color={colors.dimGray}>│ </Text>\n <Text color={line.prefixColor}>{line.prefix}</Text>\n {line.checkmark && <Text color={colors.success}>{symbols.check} </Text>}\n <Text color={line.color}>{line.displayedText}</Text>\n {line.showCursor && <Text color={colors.cyan}>▌</Text>}\n <Text>{' '.repeat(paddingNeeded)}</Text>\n <Text color={colors.dimGray}> │</Text>\n </Box>\n );\n })}\n \n {/* Bottom border */}\n <Text color={colors.dimGray}>└{'─'.repeat(BOX_WIDTH - 2)}┘</Text>\n </Box>\n </Box>\n );\n}\n","import { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\nexport interface ConfigItem {\n label: string;\n value: string;\n}\n\ninterface ConfigSummaryProps {\n items: ConfigItem[];\n title?: string;\n}\n\n/**\n * Configuration summary display\n * ───────────────────────────────────\n * Workspace ~/openbuilder-workspace\n * Server http://localhost:3000\n * Runner local\n * ───────────────────────────────────\n */\nexport function ConfigSummary({ items, title }: ConfigSummaryProps) {\n const dividerWidth = 40;\n const divider = symbols.horizontalLine.repeat(dividerWidth);\n \n // Find the longest label for alignment\n const maxLabelLength = Math.max(...items.map(item => item.label.length));\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>{divider}</Text>\n \n {title && (\n <Box marginTop={1} marginBottom={1}>\n <Text color={colors.white} bold>{title}</Text>\n </Box>\n )}\n \n <Box flexDirection=\"column\" alignItems=\"flex-start\" marginTop={title ? 0 : 1}>\n {items.map((item, index) => (\n <Box key={index}>\n <Text color={colors.gray}>\n {item.label.padEnd(maxLabelLength + 3)}\n </Text>\n <Text color={colors.cyan}>{item.value}</Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n </Box>\n );\n}\n\ninterface NextStepsProps {\n command: string;\n url: string;\n}\n\n/**\n * Next steps display for completion screen\n */\nexport function NextSteps({ command, url }: NextStepsProps) {\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" marginTop={1}>\n <Box>\n <Text color={colors.gray}>Run: </Text>\n <Text color={colors.cyan} bold>{command}</Text>\n </Box>\n <Box>\n <Text color={colors.gray}>Open: </Text>\n <Text color={colors.cyan}>{url}</Text>\n </Box>\n </Box>\n );\n}\n\ninterface ErrorSummaryProps {\n message?: string;\n suggestions: string[];\n}\n\n/**\n * Error display with message and recovery suggestions\n */\nexport function ErrorSummary({ message, suggestions }: ErrorSummaryProps) {\n const dividerWidth = 44;\n const divider = symbols.horizontalLine.repeat(dividerWidth);\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>{divider}</Text>\n \n {/* Error message header */}\n {message && (\n <Box marginTop={1} marginBottom={1}>\n <Text color={colors.error} bold>{symbols.cross} {message}</Text>\n </Box>\n )}\n \n {/* Suggestions/details */}\n <Box flexDirection=\"column\" alignItems=\"flex-start\" marginTop={message ? 0 : 1}>\n {suggestions.map((suggestion, index) => (\n <Box key={index}>\n <Text color={suggestion.startsWith(' ') ? colors.cyan : colors.gray}>\n {suggestion}\n </Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n </Box>\n );\n}\n","/**\n * BuildErrorView - Compact scrollable view for build errors\n * Designed to fit in the center of the init screen, not full-screen\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { Box, Text, useInput, useApp, useStdout } from 'ink';\nimport { colors, symbols } from '../theme.js';\n\ninterface BuildErrorViewProps {\n /** Error title/message */\n title: string;\n /** Array of error lines to display */\n errorLines: string[];\n /** Suggestions for fixing the error */\n suggestions?: string[];\n /** Callback when user exits */\n onExit?: () => void;\n}\n\n/**\n * Compact build error viewer with scrolling and copy support\n * Displays in the center area, half-width, with scrollable content\n */\nexport function BuildErrorView({ \n title, \n errorLines, \n suggestions = [],\n onExit \n}: BuildErrorViewProps) {\n const { exit } = useApp();\n const { stdout } = useStdout();\n const terminalWidth = stdout?.columns || 80;\n\n const [scrollOffset, setScrollOffset] = useState(0);\n const [showCopiedMessage, setShowCopiedMessage] = useState(false);\n\n // Fixed dimensions for compact view\n const boxWidth = Math.min(70, Math.floor(terminalWidth * 0.6));\n const maxVisibleLines = 12; // Show 12 lines of errors max\n \n // Calculate max scroll\n const maxScroll = Math.max(0, errorLines.length - maxVisibleLines);\n\n // Get visible lines\n const visibleLines = errorLines.slice(scrollOffset, scrollOffset + maxVisibleLines);\n\n // Copy all error content to clipboard\n const copyToClipboard = useCallback(async () => {\n const content = [\n `Build Error: ${title}`,\n '─'.repeat(60),\n ...errorLines,\n '─'.repeat(60),\n '',\n ...suggestions,\n ].join('\\n');\n\n try {\n const { exec } = await import('child_process');\n\n // Detect platform and use appropriate clipboard command\n const platform = process.platform;\n let clipboardCmd: string;\n\n if (platform === 'darwin') {\n clipboardCmd = 'pbcopy';\n } else if (platform === 'win32') {\n clipboardCmd = 'clip';\n } else {\n clipboardCmd = 'xclip -selection clipboard';\n }\n\n // Write to clipboard\n const child = exec(clipboardCmd);\n child.stdin?.write(content);\n child.stdin?.end();\n\n setShowCopiedMessage(true);\n\n // Show success message then exit after delay\n setTimeout(() => {\n if (onExit) {\n onExit();\n } else {\n exit();\n }\n }, 1500);\n } catch (error) {\n // Clipboard failed - still show message\n setShowCopiedMessage(true);\n setTimeout(() => setShowCopiedMessage(false), 2000);\n }\n }, [title, errorLines, suggestions, onExit, exit]);\n\n // Handle keyboard input\n useInput((input, key) => {\n if (input === 'c' || input === 'C') {\n copyToClipboard();\n } else if (key.upArrow) {\n setScrollOffset(prev => Math.max(0, prev - 1));\n } else if (key.downArrow) {\n setScrollOffset(prev => Math.min(maxScroll, prev + 1));\n } else if (key.pageUp) {\n setScrollOffset(prev => Math.max(0, prev - maxVisibleLines));\n } else if (key.pageDown) {\n setScrollOffset(prev => Math.min(maxScroll, prev + maxVisibleLines));\n } else if (input === 'q' || key.escape) {\n if (onExit) {\n onExit();\n } else {\n exit();\n }\n }\n });\n\n // Color error lines based on content\n const getLineColor = (line: string): string => {\n if (/error|Error|ERR!/i.test(line)) return colors.error;\n if (/warning|warn/i.test(line)) return colors.warning;\n if (/:\\d+:\\d+/.test(line)) return colors.cyan;\n if (line.startsWith('─') || line.startsWith('openbuilder:')) return colors.dimGray;\n return colors.gray;\n };\n\n const divider = symbols.horizontalLine.repeat(boxWidth - 2);\n const hasScroll = errorLines.length > maxVisibleLines;\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" width=\"100%\">\n {/* Top divider */}\n <Text color={colors.dimGray}>{divider}</Text>\n \n {/* Error header */}\n <Box marginTop={1} marginBottom={1} width={boxWidth} justifyContent=\"center\">\n <Text color={colors.error} bold>{symbols.cross} {title}</Text>\n </Box>\n\n {/* Scrollable error content */}\n <Box \n flexDirection=\"column\" \n width={boxWidth}\n borderStyle=\"round\"\n borderColor={colors.error}\n paddingX={1}\n paddingY={0}\n >\n {/* Scroll indicator header */}\n {hasScroll && (\n <Box justifyContent=\"flex-end\" marginBottom={0}>\n <Text color={colors.dimGray} dimColor>\n [{scrollOffset + 1}-{Math.min(scrollOffset + maxVisibleLines, errorLines.length)}/{errorLines.length}] ↑↓\n </Text>\n </Box>\n )}\n \n {/* Error lines */}\n {visibleLines.length > 0 ? (\n visibleLines.map((line, index) => {\n const truncatedLine = line.length > boxWidth - 4 \n ? line.substring(0, boxWidth - 7) + '...' \n : line;\n return (\n <Text key={index} color={getLineColor(line)} wrap=\"truncate\">\n {truncatedLine}\n </Text>\n );\n })\n ) : (\n <Text color={colors.dimGray}>No error details captured</Text>\n )}\n </Box>\n\n {/* Suggestions */}\n {suggestions.length > 0 && (\n <Box flexDirection=\"column\" marginTop={1} width={boxWidth}>\n {suggestions.map((suggestion, index) => (\n <Text key={index} color={suggestion.startsWith(' ') ? colors.cyan : colors.gray}>\n {suggestion}\n </Text>\n ))}\n </Box>\n )}\n\n {/* Bottom divider */}\n <Box marginTop={1}>\n <Text color={colors.dimGray}>{divider}</Text>\n </Box>\n\n {/* Keyboard shortcuts */}\n <Box marginTop={1} justifyContent=\"center\">\n {showCopiedMessage ? (\n <Text color={colors.success} bold>\n {symbols.check} Copied to clipboard! Exiting...\n </Text>\n ) : (\n <Box>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.success} bold>c</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.success}>copy & exit</Text>\n <Text> </Text>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.cyan}>q</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.gray}>quit</Text>\n {hasScroll && (\n <>\n <Text> </Text>\n <Text color={colors.dimGray}>[</Text>\n <Text color={colors.cyan}>↑↓</Text>\n <Text color={colors.dimGray}>]</Text>\n <Text color={colors.gray}>scroll</Text>\n </>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n","import { useState, useCallback } from 'react';\nimport type { StepStatus } from '../components/ProgressStepper.js';\nimport type { TaskStatus } from '../components/TaskList.js';\nimport type { ConfigItem } from '../components/ConfigSummary.js';\n\nexport type InitPhase = 'repo' | 'build' | 'database' | 'ready';\n\nexport interface Task {\n id: string;\n label: string;\n status: TaskStatus;\n detail?: string;\n error?: string;\n stepId: string; // Which step this task belongs to\n}\n\nexport interface Step {\n id: string;\n label: string;\n status: StepStatus;\n}\n\nexport interface BuildErrorDetails {\n /** Raw error output lines for scrollable view */\n errorLines: string[];\n /** Suggestions for fixing */\n suggestions: string[];\n}\n\nexport interface InitState {\n phase: InitPhase;\n steps: Step[];\n tasks: Task[];\n config: ConfigItem[];\n error: {\n message: string;\n suggestions: string[];\n /** Detailed build error for full-screen view */\n buildError?: BuildErrorDetails;\n } | null;\n isComplete: boolean;\n}\n\nconst INITIAL_STEPS: Step[] = [\n { id: 'repo', label: 'Clone', status: 'pending' },\n { id: 'build', label: 'Build', status: 'pending' },\n { id: 'database', label: 'Configure', status: 'pending' },\n { id: 'ready', label: 'Finish', status: 'pending' },\n];\n\n// Tasks now have a stepId to associate them with a step\nconst INITIAL_TASKS: Task[] = [\n { id: 'clone', label: 'Cloning repository', status: 'pending', stepId: 'repo' },\n { id: 'deps', label: 'Installing dependencies', status: 'pending', stepId: 'build' },\n { id: 'build', label: 'Building packages', status: 'pending', stepId: 'build' },\n { id: 'database', label: 'Configuring database', status: 'pending', stepId: 'database' },\n { id: 'config', label: 'Saving configuration', status: 'pending', stepId: 'ready' },\n { id: 'services', label: 'Building services', status: 'pending', stepId: 'ready' },\n];\n\nexport interface UseInitFlowReturn {\n state: InitState;\n // Step management\n setStepStatus: (stepId: string, status: StepStatus) => void;\n activateStep: (stepId: string) => void;\n completeStep: (stepId: string) => void;\n failStep: (stepId: string) => void;\n // Task management\n setTaskStatus: (taskId: string, status: TaskStatus, detail?: string) => void;\n startTask: (taskId: string, detail?: string) => void;\n completeTask: (taskId: string) => void;\n failTask: (taskId: string, error: string) => void;\n // Helper to get tasks for a specific step\n getTasksForStep: (stepId: string) => Task[];\n // Helper to get currently active tasks (running or just completed in current phase)\n getActiveStepTasks: () => Task[];\n // Config management\n setConfig: (items: ConfigItem[]) => void;\n // Error management\n setError: (message: string, suggestions: string[]) => void;\n setBuildError: (message: string, errorLines: string[], suggestions: string[]) => void;\n clearError: () => void;\n // Completion\n markComplete: () => void;\n // Reset\n reset: () => void;\n}\n\nexport function useInitFlow(): UseInitFlowReturn {\n const [state, setState] = useState<InitState>({\n phase: 'repo',\n steps: INITIAL_STEPS,\n tasks: INITIAL_TASKS,\n config: [],\n error: null,\n isComplete: false,\n });\n\n // Step management\n const setStepStatus = useCallback((stepId: string, status: StepStatus) => {\n setState(prev => ({\n ...prev,\n steps: prev.steps.map(step =>\n step.id === stepId ? { ...step, status } : step\n ),\n }));\n }, []);\n\n const activateStep = useCallback((stepId: string) => {\n setState(prev => ({\n ...prev,\n phase: stepId as InitPhase,\n steps: prev.steps.map(step =>\n step.id === stepId ? { ...step, status: 'active' } : step\n ),\n }));\n }, []);\n\n const completeStep = useCallback((stepId: string) => {\n setStepStatus(stepId, 'completed');\n }, [setStepStatus]);\n\n const failStep = useCallback((stepId: string) => {\n setStepStatus(stepId, 'error');\n }, [setStepStatus]);\n\n // Task management\n const setTaskStatus = useCallback((taskId: string, status: TaskStatus, detail?: string) => {\n setState(prev => ({\n ...prev,\n tasks: prev.tasks.map(task =>\n task.id === taskId ? { ...task, status, detail: detail ?? task.detail } : task\n ),\n }));\n }, []);\n\n const startTask = useCallback((taskId: string, detail?: string) => {\n setTaskStatus(taskId, 'running', detail);\n }, [setTaskStatus]);\n\n const completeTask = useCallback((taskId: string) => {\n setTaskStatus(taskId, 'completed');\n }, [setTaskStatus]);\n\n const failTask = useCallback((taskId: string, error: string) => {\n setState(prev => ({\n ...prev,\n tasks: prev.tasks.map(task =>\n task.id === taskId ? { ...task, status: 'failed', error } : task\n ),\n }));\n }, []);\n\n // Get tasks for a specific step\n const getTasksForStep = useCallback((stepId: string): Task[] => {\n return state.tasks.filter(task => task.stepId === stepId);\n }, [state.tasks]);\n\n // Get tasks for the currently active step\n const getActiveStepTasks = useCallback((): Task[] => {\n return state.tasks.filter(task => task.stepId === state.phase);\n }, [state.tasks, state.phase]);\n\n // Config management\n const setConfig = useCallback((items: ConfigItem[]) => {\n setState(prev => ({\n ...prev,\n config: items,\n }));\n }, []);\n\n // Error management\n const setError = useCallback((message: string, suggestions: string[]) => {\n setState(prev => ({\n ...prev,\n error: { message, suggestions },\n }));\n }, []);\n\n const setBuildError = useCallback((message: string, errorLines: string[], suggestions: string[]) => {\n setState(prev => ({\n ...prev,\n error: { \n message, \n suggestions,\n buildError: {\n errorLines,\n suggestions,\n }\n },\n }));\n }, []);\n\n const clearError = useCallback(() => {\n setState(prev => ({\n ...prev,\n error: null,\n }));\n }, []);\n\n // Completion\n const markComplete = useCallback(() => {\n setState(prev => ({\n ...prev,\n isComplete: true,\n phase: 'ready',\n steps: prev.steps.map(step => ({ ...step, status: 'completed' })),\n }));\n }, []);\n\n // Reset\n const reset = useCallback(() => {\n setState({\n phase: 'repo',\n steps: INITIAL_STEPS,\n tasks: INITIAL_TASKS,\n config: [],\n error: null,\n isComplete: false,\n });\n }, []);\n\n return {\n state,\n setStepStatus,\n activateStep,\n completeStep,\n failStep,\n setTaskStatus,\n startTask,\n completeTask,\n failTask,\n getTasksForStep,\n getActiveStepTasks,\n setConfig,\n setError,\n setBuildError,\n clearError,\n markComplete,\n reset,\n };\n}\n","import { useEffect, useState } from 'react';\nimport { Box, Text, useApp, useStdout } from 'ink';\nimport { Banner, ProgressStepper, TaskStream, ConfigSummary, NextSteps, ErrorSummary, BuildErrorView } from '../components/index.js';\nimport { useInitFlow } from '../hooks/index.js';\nimport type { ConfigItem } from '../components/ConfigSummary.js';\nimport type { StreamTask } from '../components/TaskStream.js';\nimport { colors, symbols } from '../theme.js';\nimport { getVersionInfo } from '../../utils/version-info.js';\n\nexport interface InitConfig {\n workspace: string;\n monorepoPath?: string;\n databaseUrl?: string;\n apiUrl: string;\n runnerId: string;\n}\n\nexport interface InitScreenProps {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n onComplete?: (config: InitConfig) => void;\n onError?: (error: Error) => void;\n}\n\nexport interface InitCallbacks {\n // Step management\n activateStep: (stepId: string) => void;\n completeStep: (stepId: string) => void;\n failStep: (stepId: string) => void;\n // Task management\n startTask: (taskId: string, detail?: string) => void;\n completeTask: (taskId: string) => void;\n failTask: (taskId: string, error: string) => void;\n // Skip task (remove from display)\n skipTask: (taskId: string) => void;\n // Update task label\n updateTaskLabel: (taskId: string, label: string) => void;\n // Error handling\n setError: (message: string, suggestions: string[]) => void;\n // Build error with full output for scrollable view\n setBuildError: (message: string, errorLines: string[], suggestions: string[]) => void;\n}\n\n/**\n * Main init screen - fullscreen centered TUI\n * Shows progress stepper with tasks appearing under the active step\n */\nexport function InitScreen({ onInit, onComplete, onError }: InitScreenProps) {\n const { exit } = useApp();\n const { stdout } = useStdout();\n const flow = useInitFlow();\n const [finalConfig, setFinalConfig] = useState<InitConfig | null>(null);\n \n // Get version info\n const versionInfo = getVersionInfo();\n \n // Calculate vertical centering\n const terminalHeight = stdout?.rows || 24;\n const contentHeight = 20;\n const topPadding = Math.max(0, Math.floor((terminalHeight - contentHeight) / 3));\n\n // Run init flow\n useEffect(() => {\n const callbacks: InitCallbacks = {\n activateStep: flow.activateStep,\n completeStep: flow.completeStep,\n failStep: flow.failStep,\n startTask: flow.startTask,\n completeTask: flow.completeTask,\n failTask: flow.failTask,\n skipTask: (taskId: string) => {\n flow.setTaskStatus(taskId, 'completed');\n },\n updateTaskLabel: (taskId: string, label: string) => {\n flow.setTaskStatus(taskId, flow.state.tasks.find(t => t.id === taskId)?.status || 'pending');\n },\n setError: flow.setError,\n setBuildError: flow.setBuildError,\n };\n\n onInit(callbacks)\n .then((config) => {\n setFinalConfig(config);\n \n // Set config summary items\n const configItems: ConfigItem[] = [\n { label: 'Workspace', value: config.workspace },\n { label: 'Server', value: config.apiUrl },\n { label: 'Runner', value: config.runnerId },\n ];\n \n if (config.monorepoPath) {\n configItems.push({ label: 'Repository', value: config.monorepoPath });\n }\n \n flow.setConfig(configItems);\n flow.markComplete();\n \n if (onComplete) {\n onComplete(config);\n }\n })\n .catch((error) => {\n if (onError) {\n onError(error);\n }\n });\n }, []);\n\n const { state } = flow;\n \n // Get tasks for current step only, mapped to StreamTask format\n const currentStepTasks: StreamTask[] = flow.getActiveStepTasks().map(task => ({\n id: task.id,\n label: task.label,\n status: task.status,\n detail: task.detail,\n error: task.error,\n }));\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" paddingTop={topPadding}>\n {/* Banner */}\n <Banner />\n \n {/* Version - right under banner */}\n <Box marginTop={1}>\n <Text color={colors.gray} dimColor>\n {versionInfo.display}\n </Text>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={1} />\n \n {/* Progress Stepper (just dots and labels) */}\n <ProgressStepper steps={state.steps} />\n \n {/* Task Stream - shows current step's tasks with typewriter effect */}\n {!state.isComplete && !state.error && (\n <TaskStream \n stepId={state.phase}\n tasks={currentStepTasks}\n />\n )}\n \n {/* Error Display - show full BuildErrorView for build errors, simple ErrorSummary for others */}\n {state.error && state.error.buildError && (\n <BuildErrorView\n title={state.error.message}\n errorLines={state.error.buildError.errorLines}\n suggestions={state.error.buildError.suggestions}\n onExit={() => exit()}\n />\n )}\n {state.error && !state.error.buildError && (\n <Box marginTop={2}>\n <ErrorSummary \n message={state.error.message} \n suggestions={state.error.suggestions} \n />\n </Box>\n )}\n \n {/* Completion Display - show summary of all completed tasks */}\n {state.isComplete && !state.error && (\n <Box marginTop={2} flexDirection=\"column\" alignItems=\"center\">\n {/* Success message */}\n <Text color={colors.success} bold>\n {symbols.check} Setup complete!\n </Text>\n \n {/* Completed tasks summary */}\n <Box marginTop={1} flexDirection=\"column\">\n {state.tasks.filter(t => t.status === 'completed').map(task => (\n <Box key={task.id}>\n <Text color={colors.success}>{symbols.check}</Text>\n <Text color={colors.gray}> {task.label}</Text>\n </Box>\n ))}\n </Box>\n \n <Box marginTop={1} />\n <ConfigSummary items={state.config} />\n <NextSteps command=\"openbuilder run\" url=\"http://localhost:3000\" />\n </Box>\n )}\n </Box>\n );\n}\n","import { Box, Text, useInput, useStdout } from 'ink';\nimport { Banner } from '../components/index.js';\nimport { colors, symbols } from '../theme.js';\n\nexport interface StartPromptScreenProps {\n onSelect: (shouldStart: boolean) => void;\n}\n\n/**\n * Post-init prompt asking if user wants to start OpenBuilder now\n */\nexport function StartPromptScreen({ onSelect }: StartPromptScreenProps) {\n const { stdout } = useStdout();\n \n // Calculate vertical centering\n const terminalHeight = stdout?.rows || 24;\n const contentHeight = 14;\n const topPadding = Math.max(0, Math.floor((terminalHeight - contentHeight) / 3));\n\n useInput((input, key) => {\n const char = input.toLowerCase();\n \n // Enter = start\n if (key.return) {\n onSelect(true);\n return;\n }\n \n // Y = start\n if (char === 'y') {\n onSelect(true);\n return;\n }\n \n // N = don't start\n if (char === 'n') {\n onSelect(false);\n return;\n }\n \n // Escape = don't start\n if (key.escape) {\n onSelect(false);\n return;\n }\n });\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" paddingTop={topPadding}>\n {/* Banner */}\n <Banner />\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Success message */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.success} bold>\n {symbols.check} OpenBuilder is ready!\n </Text>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Prompt */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.white}>\n Start OpenBuilder now?\n </Text>\n \n <Box marginTop={1}>\n <Text color={colors.dimGray}>\n Press <Text color={colors.cyan} bold>Y</Text> or <Text color={colors.cyan} bold>Enter</Text> to start, <Text color={colors.cyan} bold>N</Text> or <Text color={colors.cyan} bold>Esc</Text> to exit\n </Text>\n </Box>\n </Box>\n \n {/* Spacer */}\n <Box marginTop={2} />\n \n {/* Info about manual start */}\n <Box flexDirection=\"column\" alignItems=\"center\">\n <Text color={colors.dimGray}>\n To start later, run: <Text color={colors.cyan}>openbuilder run</Text>\n </Text>\n </Box>\n </Box>\n );\n}\n","import { useState } from 'react';\nimport { render } from 'ink';\nimport { InitScreen, StartPromptScreen, type InitCallbacks, type InitConfig } from './screens/index.js';\n\nexport interface RunInitTUIOptions {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n}\n\ntype InitAppScreen = 'init' | 'prompt';\n\ninterface InitAppProps {\n onInit: (callbacks: InitCallbacks) => Promise<InitConfig>;\n onComplete: (config: InitConfig, shouldStart: boolean) => void;\n onError: (error: Error) => void;\n}\n\n/**\n * Init App component that manages the init flow screens\n */\nfunction InitApp({ onInit, onComplete, onError }: InitAppProps) {\n const [screen, setScreen] = useState<InitAppScreen>('init');\n const [config, setConfig] = useState<InitConfig | null>(null);\n\n const handleInitComplete = (initConfig: InitConfig) => {\n setConfig(initConfig);\n // Show the start prompt screen\n setScreen('prompt');\n };\n\n const handleStartChoice = (shouldStart: boolean) => {\n if (config) {\n onComplete(config, shouldStart);\n }\n };\n\n if (screen === 'prompt' && config) {\n return <StartPromptScreen onSelect={handleStartChoice} />;\n }\n\n return (\n <InitScreen\n onInit={onInit}\n onComplete={handleInitComplete}\n onError={onError}\n />\n );\n}\n\n/**\n * Render the TUI init screen\n * Returns a promise that resolves with config and whether to start\n */\nexport async function runInitTUI(options: RunInitTUIOptions): Promise<{ config: InitConfig; shouldStart: boolean }> {\n return new Promise((resolve, reject) => {\n let result: { config: InitConfig; shouldStart: boolean } | null = null;\n let error: Error | null = null;\n\n const { unmount, waitUntilExit } = render(\n <InitApp\n onInit={options.onInit}\n onComplete={(config, shouldStart) => {\n result = { config, shouldStart };\n // Give time for final render before unmounting\n setTimeout(() => {\n unmount();\n }, 100);\n }}\n onError={(err) => {\n error = err;\n // Keep error displayed, don't auto-unmount\n }}\n />,\n {\n exitOnCtrlC: true,\n }\n );\n\n waitUntilExit().then(() => {\n if (error) {\n reject(error);\n } else if (result) {\n resolve(result);\n } else {\n reject(new Error('Init cancelled'));\n }\n });\n });\n}\n","/**\n * TUI-based init command with beautiful centered interface\n * Uses Ink for React-based terminal rendering\n */\n\nimport { mkdir, writeFile } from 'node:fs/promises';\nimport { existsSync, realpathSync, rmSync } from 'node:fs';\nimport { join, resolve } from 'node:path';\nimport { randomBytes } from 'node:crypto';\nimport { runInitTUI } from '../tui/App.js';\nimport type { InitCallbacks, InitConfig } from '../tui/screens/index.js';\nimport { configManager } from '../utils/config-manager.js';\nimport { isInsideMonorepo } from '../utils/repo-detector.js';\nimport {\n cloneRepository,\n installDependencies,\n isPnpmInstalled,\n buildAgentCore\n} from '../utils/repo-cloner.js';\nimport {\n setupDatabase,\n pushDatabaseSchema,\n} from '../utils/database-setup.js';\nimport { CLIError } from '../utils/cli-error.js';\nimport { layout } from '../tui/theme.js';\n\n/**\n * Generate a secure random secret\n */\nfunction generateSecret(): string {\n return randomBytes(32).toString('hex');\n}\n\n/**\n * Check if a path is or contains the current working directory\n */\nfunction isCurrentWorkingDirectory(targetPath: string): boolean {\n try {\n const cwd = realpathSync(process.cwd());\n const target = realpathSync(resolve(targetPath));\n return cwd === target || cwd.startsWith(target + '/');\n } catch {\n const cwd = process.cwd();\n const target = resolve(targetPath);\n return cwd === target || cwd.startsWith(target + '/');\n }\n}\n\n/**\n * Normalize URL by adding protocol if missing\n */\nfunction normalizeUrl(url: string): string {\n if (!url) return url;\n if (url.match(/^https?:\\/\\//i)) return url;\n if (url.match(/^(localhost|127\\.0\\.0\\.1)(:|\\/|$)/i)) {\n return `http://${url}`;\n }\n return `https://${url}`;\n}\n\n/**\n * Get default workspace path\n */\nfunction getDefaultWorkspace(): string {\n return join(process.cwd(), 'openbuilder-workspace');\n}\n\n/**\n * Get default monorepo clone path\n */\nfunction getDefaultMonorepoPath(): string {\n return join(process.cwd(), 'openbuilder');\n}\n\n/**\n * Sleep utility for deliberate pacing\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\ninterface InitOptions {\n workspace?: string;\n url?: string;\n secret?: string;\n branch?: string;\n database?: string | boolean;\n yes?: boolean;\n nonInteractive?: boolean;\n}\n\n/**\n * Run the TUI-based init command\n */\nexport async function initTUICommand(options: InitOptions): Promise<void> {\n // Clear screen for fullscreen experience\n console.clear();\n\n try {\n const { shouldStart } = await runInitTUI({\n onInit: async (callbacks: InitCallbacks) => {\n return executeInitFlow(options, callbacks);\n },\n });\n \n if (shouldStart) {\n console.clear();\n console.log('\\n Starting OpenBuilder...\\n');\n // Import and run the start command (full TUI with web app + runner)\n const { startCommand } = await import('./start.js');\n await startCommand({});\n } else {\n console.clear();\n console.log('\\n ✨ OpenBuilder is ready!\\n');\n console.log(' To start later, run:\\n');\n console.log(' openbuilder run\\n');\n console.log(' Then open: http://localhost:3000\\n');\n }\n \n } catch (error) {\n // Error was already displayed in TUI\n console.log('\\n');\n process.exit(1);\n }\n}\n\n\n\n/**\n * Execute the init flow, calling callbacks to update UI\n */\nasync function executeInitFlow(\n options: InitOptions,\n callbacks: InitCallbacks\n): Promise<InitConfig> {\n const { activateStep, completeStep, failStep, startTask, completeTask, failTask, setError, setBuildError } = callbacks;\n\n let monorepoPath: string | undefined;\n let databaseUrl: string | undefined;\n const workspace = options.workspace || getDefaultWorkspace();\n const generatedSecret = options.secret || generateSecret();\n const apiUrl = normalizeUrl(options.url || 'http://localhost:3000');\n\n // ============================================\n // PHASE 1: Repository\n // ============================================\n activateStep('repo');\n await sleep(layout.stepTransitionDelay);\n\n // Reset config if exists\n if (configManager.isInitialized()) {\n configManager.reset();\n }\n\n // Check for existing monorepo\n startTask('clone', 'Checking for repository...');\n await sleep(300);\n\n const repoCheck = await isInsideMonorepo();\n\n if (repoCheck.inside && repoCheck.root) {\n monorepoPath = repoCheck.root;\n completeTask('clone');\n await sleep(layout.taskCompletionDelay);\n } else {\n // Need to clone\n const hasPnpm = await isPnpmInstalled();\n if (!hasPnpm) {\n failTask('clone', 'pnpm not found');\n failStep('repo');\n setError('pnpm is required', [\n 'Install pnpm: npm install -g pnpm',\n 'Then retry: openbuilder init -y',\n ]);\n throw new CLIError({\n code: 'DEPENDENCIES_INSTALL_FAILED',\n message: 'pnpm is not installed',\n });\n }\n\n const clonePath = getDefaultMonorepoPath();\n\n // Clean up existing installation\n if (existsSync(clonePath)) {\n if (isCurrentWorkingDirectory(clonePath)) {\n failTask('clone', 'Cannot remove current directory');\n failStep('repo');\n setError('Cannot remove current directory', [\n 'Run from a different directory',\n 'Or manually remove: rm -rf ' + clonePath,\n ]);\n throw new CLIError({\n code: 'CONFIG_INVALID',\n message: 'Cannot remove current working directory',\n });\n }\n rmSync(clonePath, { recursive: true, force: true });\n }\n\n try {\n // Clone repository\n startTask('clone', 'Cloning from GitHub...');\n monorepoPath = await cloneRepository({\n targetPath: clonePath,\n branch: options.branch || 'main',\n silent: true, // Suppress console output in TUI mode\n });\n completeTask('clone');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('clone', 'Clone failed');\n failStep('repo');\n setError('Failed to clone repository', [\n 'Check your internet connection',\n 'Verify git is installed: git --version',\n 'Try: git clone https://github.com/codyde/openbuilder.git',\n ]);\n throw error;\n }\n }\n\n completeStep('repo');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 2: Build\n // ============================================\n activateStep('build');\n await sleep(layout.stepTransitionDelay);\n\n // Install dependencies\n startTask('deps', 'Running pnpm install...');\n try {\n await installDependencies(monorepoPath!, true); // silent mode\n completeTask('deps');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('deps', 'Install failed');\n failStep('build');\n setError('Failed to install dependencies', [\n 'Check pnpm is installed: pnpm --version',\n 'Try manually: cd ' + monorepoPath + ' && pnpm install',\n ]);\n throw error;\n }\n\n // Build packages\n startTask('build', '@openbuilder/agent-core');\n try {\n await buildAgentCore(monorepoPath!, true); // silent mode\n completeTask('build');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('build', 'Build failed');\n failStep('build');\n setError('Failed to build packages', [\n 'Try manually: cd ' + monorepoPath + ' && pnpm build',\n ]);\n throw error;\n }\n\n completeStep('build');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 3: Database\n // ============================================\n activateStep('database');\n await sleep(layout.stepTransitionDelay);\n\n startTask('database', 'Setting up Neon database...');\n\n // Handle database options\n const dbOption = options.database;\n const isConnectionString = typeof dbOption === 'string' &&\n (dbOption.startsWith('postgres://') || dbOption.startsWith('postgresql://'));\n\n try {\n if (isConnectionString) {\n databaseUrl = dbOption as string;\n await pushDatabaseSchema(monorepoPath!, databaseUrl, true); // silent mode\n } else {\n // Default: setup Neon database\n databaseUrl = await setupDatabase(monorepoPath!, true) || undefined; // silent mode\n if (databaseUrl) {\n await pushDatabaseSchema(monorepoPath!, databaseUrl, true); // silent mode\n }\n }\n completeTask('database');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n // Database setup is optional, don't fail hard\n completeTask('database');\n await sleep(layout.taskCompletionDelay);\n }\n\n completeStep('database');\n await sleep(layout.stepTransitionDelay);\n\n // ============================================\n // PHASE 4: Configuration & Ready\n // ============================================\n activateStep('ready');\n await sleep(layout.stepTransitionDelay);\n\n // Create workspace directory\n if (!existsSync(workspace)) {\n await mkdir(workspace, { recursive: true });\n }\n\n // Save configuration\n startTask('config', 'Writing configuration...');\n try {\n configManager.set('workspace', workspace);\n if (monorepoPath) {\n configManager.set('monorepoPath', monorepoPath);\n }\n if (databaseUrl) {\n configManager.set('databaseUrl', databaseUrl);\n }\n configManager.set('apiUrl', apiUrl);\n \n const wsProtocol = apiUrl.startsWith('https://') ? 'wss://' : 'ws://';\n const hostPath = apiUrl.replace(/^https?:\\/\\//, '').replace(/\\/$/, '');\n const wsUrl = `${wsProtocol}${hostPath}/ws/runner`;\n \n configManager.set('server', {\n wsUrl: wsUrl,\n secret: generatedSecret,\n });\n configManager.set('runner', {\n id: 'local',\n reconnectAttempts: 5,\n heartbeatInterval: 15000,\n });\n configManager.set('tunnel', {\n provider: 'cloudflare',\n autoCreate: true,\n });\n\n // Create .env.local\n if (monorepoPath) {\n const envLocalPath = join(monorepoPath, 'apps', 'openbuilder', '.env.local');\n const envContent = [\n '# Auto-generated by openbuilder CLI',\n `# Generated at: ${new Date().toISOString()}`,\n '',\n 'OPENBUILDER_LOCAL_MODE=true',\n `RUNNER_SHARED_SECRET=${generatedSecret}`,\n `WORKSPACE_ROOT=${workspace}`,\n 'RUNNER_ID=local',\n 'RUNNER_DEFAULT_ID=local',\n `DATABASE_URL=${databaseUrl || ''}`,\n '',\n ].join('\\n');\n \n await writeFile(envLocalPath, envContent);\n }\n\n completeTask('config');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n failTask('config', 'Config save failed');\n failStep('ready');\n setError('Failed to save configuration', [\n 'Check file permissions',\n 'Try running from a different directory',\n ]);\n throw error;\n }\n\n // Build all services for production\n if (monorepoPath) {\n startTask('services', 'Building services (this may take a minute)...');\n \n // Track build output for error reporting (capture both stdout and stderr)\n let buildOutput = '';\n let buildError = '';\n \n try {\n const { spawn } = await import('child_process');\n \n await new Promise<void>((resolve, reject) => {\n const buildProcess = spawn('pnpm', ['build:all'], {\n cwd: monorepoPath,\n stdio: 'pipe',\n shell: true,\n });\n \n // Capture stdout - many build tools output errors here\n buildProcess.stdout?.on('data', (data: Buffer) => {\n buildOutput += data.toString();\n });\n \n // Capture stderr\n buildProcess.stderr?.on('data', (data: Buffer) => {\n buildError += data.toString();\n });\n \n buildProcess.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Build failed with code ${code}`));\n });\n buildProcess.on('error', reject);\n });\n completeTask('services');\n await sleep(layout.taskCompletionDelay);\n } catch (error) {\n // Build failed - surface the error to the user\n failTask('services', 'Build failed');\n failStep('ready');\n \n // Combine all output for analysis\n const allOutput = (buildOutput + '\\n' + buildError).trim();\n const allLines = allOutput.split('\\n');\n \n // Find the most relevant error lines with better patterns\n const errorPatterns = [\n /error TS\\d+:/i, // TypeScript errors\n /error:/i, // General errors\n /Error:/, // Error messages\n /ERR!/, // npm/pnpm errors\n /failed/i, // Failed messages\n /Cannot find/i, // Module not found\n /Module not found/i, // Webpack/Next.js errors\n /SyntaxError/i, // Syntax errors\n /TypeError/i, // Type errors\n /ReferenceError/i, // Reference errors\n /ENOENT/i, // File not found\n /✖|✗|×/, // Error symbols\n ];\n \n // Find lines that match error patterns\n const relevantLines: string[] = [];\n let inErrorBlock = false;\n \n for (let i = 0; i < allLines.length; i++) {\n const line = allLines[i];\n const isErrorLine = errorPatterns.some(pattern => pattern.test(line));\n \n if (isErrorLine) {\n inErrorBlock = true;\n // Include 1 line before for context if available\n if (i > 0 && relevantLines.length === 0) {\n const prevLine = allLines[i - 1].trim();\n if (prevLine && !prevLine.startsWith('>')) {\n relevantLines.push(prevLine);\n }\n }\n }\n \n if (inErrorBlock) {\n relevantLines.push(line.trim());\n // Collect more lines for scrollable view (max 50 lines)\n if (relevantLines.length >= 50) break;\n }\n \n // End error block on empty line or success indicators\n if (inErrorBlock && (line.trim() === '' || /successfully|completed/i.test(line))) {\n // Keep going in case there are more errors\n inErrorBlock = false;\n }\n }\n \n // If no specific errors found, show last 30 lines of output\n const displayLines = relevantLines.length > 0 \n ? relevantLines\n : allLines.slice(-30);\n \n const suggestions = [\n 'To debug further, run manually:',\n ` cd ${monorepoPath} && pnpm build:all`,\n '',\n 'Common fixes:',\n ' - Run: pnpm install (missing dependencies)',\n ' - Check for TypeScript errors in the files mentioned above',\n ' - Ensure all environment variables are set',\n ];\n \n // Use setBuildError to show full-screen scrollable error view\n setBuildError('Production build failed', displayLines, suggestions);\n \n throw new CLIError({\n code: 'BUILD_FAILED',\n message: 'Failed to build services for production',\n suggestions: [\n `Run manually: cd ${monorepoPath} && pnpm build:all`,\n 'Check for TypeScript errors in the output above',\n 'Ensure all dependencies are installed: pnpm install',\n ],\n });\n }\n }\n\n // Validate configuration\n const validation = configManager.validate();\n if (!validation.valid) {\n failStep('ready');\n setError('Configuration invalid', validation.errors);\n throw new CLIError({\n code: 'CONFIG_INVALID',\n message: 'Configuration validation failed',\n });\n }\n\n completeStep('ready');\n\n return {\n workspace,\n monorepoPath,\n databaseUrl,\n apiUrl,\n runnerId: 'local',\n };\n}\n"],"names":["_jsxs","_jsx","Fragment","useState","useRef","useEffect","useCallback","_Fragment"],"mappings":"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"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
// OpenBuilder CLI - Built with Rollup
|
|
2
|
-
import { r as reactExports, j as jsxRuntimeExports, c as colors, s as symbols } from './theme-
|
|
3
|
-
import
|
|
2
|
+
import { r as reactExports, u as useInput, j as jsxRuntimeExports, B as Box, T as Text, c as colors, s as symbols, a as useStdout, b as render } from './theme-CktnrDZj.js';
|
|
3
|
+
import 'chalk';
|
|
4
4
|
import { userInfo, homedir } from 'node:os';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import { B as Banner } from './Banner-
|
|
7
|
-
import TextInput from 'ink-text-input';
|
|
6
|
+
import { B as Banner } from './Banner-BlktOjfl.js';
|
|
8
7
|
import 'node:fs';
|
|
9
8
|
import 'node:events';
|
|
10
|
-
import '
|
|
9
|
+
import 'node:stream';
|
|
10
|
+
import 'node:process';
|
|
11
|
+
import { T as TextInput } from './index-oFqGtEeF.js';
|
|
11
12
|
import { c as configManager } from './config-manager-BkbjtN-H.js';
|
|
12
|
-
import './_commonjsHelpers-
|
|
13
|
+
import './_commonjsHelpers-h-Bqc03Z.js';
|
|
14
|
+
import 'assert';
|
|
15
|
+
import 'events';
|
|
16
|
+
import 'module';
|
|
17
|
+
import 'node:buffer';
|
|
13
18
|
import 'node:child_process';
|
|
14
19
|
import 'node:url';
|
|
15
20
|
import 'conf';
|
|
@@ -600,7 +605,7 @@ async function startRunner(config) {
|
|
|
600
605
|
console.log('\n Starting OpenBuilder Runner...\n');
|
|
601
606
|
console.log(` Runner ID: ${config.runnerId}`);
|
|
602
607
|
console.log(' Connecting to remote server...\n');
|
|
603
|
-
const { runCommand } = await import('./run-
|
|
608
|
+
const { runCommand } = await import('./run-9mP5QnpK.js');
|
|
604
609
|
await runCommand({
|
|
605
610
|
secret: config.key,
|
|
606
611
|
runnerId: config.runnerId,
|
|
@@ -611,7 +616,7 @@ async function startRunner(config) {
|
|
|
611
616
|
*/
|
|
612
617
|
async function startLocalMode() {
|
|
613
618
|
console.log('\n Starting OpenBuilder in Local Mode...\n');
|
|
614
|
-
const { startCommand } = await import('./start-
|
|
619
|
+
const { startCommand } = await import('./start-CQKEEma-.js');
|
|
615
620
|
await startCommand({});
|
|
616
621
|
}
|
|
617
622
|
/**
|
|
@@ -622,7 +627,7 @@ async function runInitialization(config) {
|
|
|
622
627
|
const workspace = config.workspace.startsWith('~')
|
|
623
628
|
? config.workspace.replace('~', homedir())
|
|
624
629
|
: config.workspace;
|
|
625
|
-
const { initTUICommand } = await import('./init-tui-
|
|
630
|
+
const { initTUICommand } = await import('./init-tui-tZtLISA4.js');
|
|
626
631
|
// Build options based on form input
|
|
627
632
|
const options = {
|
|
628
633
|
workspace,
|
|
@@ -640,4 +645,4 @@ async function runInitialization(config) {
|
|
|
640
645
|
}
|
|
641
646
|
|
|
642
647
|
export { mainTUICommand };
|
|
643
|
-
//# sourceMappingURL=main-tui-
|
|
648
|
+
//# sourceMappingURL=main-tui-Bar2Jb2S.js.map
|