@openbuilder/cli 0.50.18 → 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 -6
- package/scripts/prepare-release.js +12 -0
- 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
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// OpenBuilder CLI - Built with Rollup
|
|
2
|
+
import { r as reactExports, A as AppContext } from './theme-CktnrDZj.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
`useApp` is a React hook that exposes a method to manually exit the app (unmount).
|
|
6
|
+
*/
|
|
7
|
+
const useApp = () => reactExports.useContext(AppContext);
|
|
8
|
+
|
|
9
|
+
export { useApp as u };
|
|
10
|
+
//# sourceMappingURL=use-app-Cj2bzWaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-app-Cj2bzWaw.js","sources":["../../../../node_modules/.pnpm/ink@6.5.1_@types+react@19.2.7_react@19.1.0/node_modules/ink/build/hooks/use-app.js"],"sourcesContent":["import { useContext } from 'react';\nimport AppContext from '../components/AppContext.js';\n/**\n`useApp` is a React hook that exposes a method to manually exit the app (unmount).\n*/\nconst useApp = () => useContext(AppContext);\nexport default useApp;\n//# sourceMappingURL=use-app.js.map"],"names":["useContext"],"mappings":";;;AAEA;AACA;AACA;AACK,MAAC,MAAM,GAAG,MAAMA,uBAAU,CAAC,UAAU;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,9 +1,10 @@
|
|
|
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
|
|
4
|
-
import
|
|
5
|
-
import 'node:events';
|
|
2
|
+
import { r as reactExports, j as jsxRuntimeExports, B as Box, c as colors, T as Text, s as symbols } from './theme-CktnrDZj.js';
|
|
3
|
+
import 'node:stream';
|
|
4
|
+
import 'node:process';
|
|
6
5
|
import 'chalk';
|
|
6
|
+
import 'node:events';
|
|
7
|
+
import { b as getLogger, g as getLogBuffer } from './runner-logger-instance-nDWv2h2T.js';
|
|
7
8
|
|
|
8
9
|
function BuildPanel({ build, width, height }) {
|
|
9
10
|
const [elapsedTime, setElapsedTime] = reactExports.useState(0);
|
|
@@ -326,4 +327,4 @@ function useLogEntries(maxEntries = 100) {
|
|
|
326
327
|
}
|
|
327
328
|
|
|
328
329
|
export { BuildPanel as B, useLogEntries as a, useBuildState as u };
|
|
329
|
-
//# sourceMappingURL=useBuildState-
|
|
330
|
+
//# sourceMappingURL=useBuildState-pcDGDakI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildState-BZuezCb6.js","sources":["../../src/cli/tui/components/BuildPanel.tsx","../../src/cli/tui/hooks/useBuildState.ts"],"sourcesContent":["/**\n * BuildPanel - Left panel showing current build info and todo list\n * Takes up 20% of width, shows:\n * - Project name\n * - Template name\n * - Agent/model\n * - Elapsed time\n * - Todo list with status indicators\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\nimport type { BuildInfo, TodoItem } from '../../../lib/logging/types.js';\n\ninterface BuildPanelProps {\n build: BuildInfo | null;\n width: number;\n height?: number;\n}\n\nexport function BuildPanel({ build, width, height }: BuildPanelProps) {\n const [elapsedTime, setElapsedTime] = useState(0);\n\n // Update elapsed time every second\n useEffect(() => {\n if (!build || build.status !== 'running') {\n setElapsedTime(0);\n return;\n }\n\n const startTime = build.startTime;\n const updateElapsed = () => {\n const now = Date.now();\n setElapsedTime(Math.floor((now - startTime) / 1000));\n };\n\n updateElapsed();\n const interval = setInterval(updateElapsed, 1000);\n return () => clearInterval(interval);\n }, [build?.id, build?.status, build?.startTime]);\n\n // Don't render if no build\n if (!build) {\n return null;\n }\n\n const truncate = (str: string, maxLen: number) => {\n if (str.length <= maxLen) return str;\n return str.substring(0, maxLen - 3) + '...';\n };\n\n const formatDuration = (seconds: number): string => {\n if (seconds < 60) return `${seconds}s`;\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}m ${secs}s`;\n };\n\n // Determine elapsed time to show\n const displayElapsed = build.status === 'running' \n ? elapsedTime \n : build.endTime \n ? Math.floor((build.endTime - build.startTime) / 1000)\n : 0;\n\n return (\n <Box\n flexDirection=\"column\"\n width={width}\n height={height}\n borderStyle=\"single\"\n borderColor={colors.darkGray}\n paddingX={1}\n >\n {/* Header */}\n <Box marginBottom={1}>\n <Text color={colors.cyan} bold>BUILD</Text>\n </Box>\n\n {/* Project name */}\n <Box>\n <Text color={colors.white}>{truncate(build.projectSlug, width - 4)}</Text>\n </Box>\n\n {/* Template */}\n {build.template && (\n <Box>\n <Text color={colors.gray}>{truncate(build.template, width - 4)}</Text>\n </Box>\n )}\n\n {/* Agent/model */}\n <Box>\n <Text color={colors.gray}>\n {build.agent === 'claude-code' ? build.model : build.agent}\n </Text>\n </Box>\n\n {/* Elapsed time with status */}\n <Box marginTop={1}>\n {build.status === 'running' && (\n <Text color={colors.cyan}>\n {symbols.spinnerFrames[Math.floor(Date.now() / 120) % symbols.spinnerFrames.length]} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'completed' && (\n <Text color={colors.success}>\n {symbols.check} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'failed' && (\n <Text color={colors.error}>\n {symbols.cross} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'pending' && (\n <Text color={colors.gray}>Pending...</Text>\n )}\n </Box>\n\n {/* Todo list */}\n {build.todos.length > 0 && (\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color={colors.dimGray} bold>TASKS</Text>\n <TodoList todos={build.todos} maxWidth={width - 6} maxVisible={10} />\n </Box>\n )}\n\n {/* Error message if failed */}\n {build.status === 'failed' && build.error && (\n <Box marginTop={1}>\n <Text color={colors.error} wrap=\"truncate\">\n {truncate(build.error, width - 4)}\n </Text>\n </Box>\n )}\n </Box>\n );\n}\n\n/**\n * TodoList - Smart display of todo items\n * - Shows up to maxVisible items (default 10)\n * - Prioritizes in_progress and pending tasks\n * - Hides completed tasks when space is needed\n * - Shows count of hidden completed tasks\n */\nfunction TodoList({ todos, maxWidth, maxVisible = 10 }: { \n todos: TodoItem[]; \n maxWidth: number;\n maxVisible?: number;\n}) {\n // Separate todos by status\n const inProgress = todos.filter(t => t.status === 'in_progress');\n const pending = todos.filter(t => t.status === 'pending');\n const completed = todos.filter(t => t.status === 'completed');\n const cancelled = todos.filter(t => t.status === 'cancelled');\n \n // Calculate how many slots we have for each category\n // Priority: in_progress > pending > completed > cancelled\n const activeCount = inProgress.length + pending.length;\n \n let visibleTodos: TodoItem[] = [];\n let hiddenCompletedCount = 0;\n \n if (todos.length <= maxVisible) {\n // All todos fit - show them in order\n visibleTodos = todos;\n } else {\n // Need to prioritize - always show in_progress and pending first\n visibleTodos = [...inProgress, ...pending];\n \n // Calculate remaining slots for completed tasks\n const remainingSlots = maxVisible - visibleTodos.length;\n \n if (remainingSlots > 0) {\n // Show as many completed as we can fit\n visibleTodos = [...visibleTodos, ...completed.slice(0, remainingSlots)];\n hiddenCompletedCount = Math.max(0, completed.length - remainingSlots);\n } else {\n hiddenCompletedCount = completed.length;\n }\n \n // Add cancelled if there's still room\n const slotsAfterCompleted = maxVisible - visibleTodos.length;\n if (slotsAfterCompleted > 0) {\n visibleTodos = [...visibleTodos, ...cancelled.slice(0, slotsAfterCompleted)];\n }\n }\n \n // Sort visible todos to maintain logical order (by original index)\n visibleTodos.sort((a, b) => {\n const aIndex = todos.findIndex(t => t.id === a.id);\n const bIndex = todos.findIndex(t => t.id === b.id);\n return aIndex - bIndex;\n });\n \n return (\n <>\n {visibleTodos.map((todo) => (\n <TodoRow key={todo.id} todo={todo} maxWidth={maxWidth} />\n ))}\n {hiddenCompletedCount > 0 && (\n <Text color={colors.dimGray}>✓ {hiddenCompletedCount} completed</Text>\n )}\n </>\n );\n}\n\n// Todo row component\nfunction TodoRow({ todo, maxWidth }: { todo: TodoItem; maxWidth: number }) {\n const statusIcon = {\n pending: <Text color={colors.dimGray}>{symbols.hollowDot}</Text>,\n in_progress: <Text color={colors.cyan}>{symbols.spinnerFrames[Math.floor(Date.now() / 120) % symbols.spinnerFrames.length]}</Text>,\n completed: <Text color={colors.success}>{symbols.check}</Text>,\n cancelled: <Text color={colors.dimGray}>⊘</Text>,\n }[todo.status];\n\n const textColor = {\n pending: colors.dimGray,\n in_progress: colors.white,\n completed: colors.gray,\n cancelled: colors.dimGray,\n }[todo.status];\n\n const truncatedContent = todo.content.length > maxWidth - 3\n ? todo.content.substring(0, maxWidth - 6) + '...'\n : todo.content;\n\n return (\n <Box>\n {statusIcon}\n <Text color={textColor}> {truncatedContent}</Text>\n </Box>\n );\n}\n","/**\n * useBuildState - Hook to track build state and todos\n * \n * Manages:\n * - Active builds list\n * - Current build selection (for multi-build navigation)\n * - Todo list updates\n * - Build lifecycle events\n * \n * Subscribes to RunnerLogger events to automatically update state.\n * \n * IMPORTANT: Uses refs for event handlers to prevent race conditions\n * where events could be missed during re-subscriptions caused by\n * callback dependency changes.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport type { BuildInfo, TodoItem, LogEntry } from '../../../lib/logging/types.js';\nimport { getLogBuffer } from '../../../lib/logging/log-buffer.js';\nimport { getLogger } from '../../../lib/logging/index.js';\n\nexport interface BuildState {\n builds: BuildInfo[];\n currentBuildIndex: number;\n currentBuild: BuildInfo | null;\n isConnected: boolean;\n isVerbose: boolean;\n}\n\nexport interface BuildStateActions {\n nextBuild: () => void;\n prevBuild: () => void;\n setVerbose: (verbose: boolean) => void;\n toggleVerbose: () => void;\n addBuild: (build: BuildInfo) => void;\n updateBuild: (buildId: string, updates: Partial<BuildInfo>) => void;\n updateTodos: (buildId: string, todos: TodoItem[]) => void;\n setConnected: (connected: boolean) => void;\n}\n\nexport function useBuildState(): [BuildState, BuildStateActions] {\n const [builds, setBuilds] = useState<BuildInfo[]>([]);\n const [currentBuildIndex, setCurrentBuildIndex] = useState(0);\n const [isConnected, setIsConnected] = useState(false);\n const [isVerbose, setIsVerbose] = useState(false);\n\n // Derive current build from index\n const currentBuild = builds.length > 0 ? builds[currentBuildIndex] ?? null : null;\n\n // Navigation between builds\n const nextBuild = useCallback(() => {\n setCurrentBuildIndex(prev => {\n if (builds.length === 0) return 0;\n return (prev + 1) % builds.length;\n });\n }, [builds.length]);\n\n const prevBuild = useCallback(() => {\n setCurrentBuildIndex(prev => {\n if (builds.length === 0) return 0;\n return prev === 0 ? builds.length - 1 : prev - 1;\n });\n }, [builds.length]);\n\n // Verbose toggle - updates both UI state and logger\n const toggleVerbose = useCallback(() => {\n setIsVerbose(prev => {\n const newValue = !prev;\n // Also update the logger's verbose flag\n try {\n const logger = getLogger();\n logger.setVerbose(newValue);\n } catch {\n // Logger not initialized yet\n }\n return newValue;\n });\n }, []);\n\n // Track when a new build is added to auto-select it\n const [pendingNewBuildId, setPendingNewBuildId] = useState<string | null>(null);\n\n // Add a new build\n const addBuild = useCallback((build: BuildInfo) => {\n setBuilds(prev => {\n // Check if build already exists\n const exists = prev.some(b => b.id === build.id);\n if (exists) {\n // Update existing build\n return prev.map(b => b.id === build.id ? { ...b, ...build } : b);\n }\n // Mark this as a new build to auto-select\n setPendingNewBuildId(build.id);\n // Add new build\n return [...prev, build];\n });\n }, []);\n\n // Auto-select newly added builds\n useEffect(() => {\n if (pendingNewBuildId) {\n const index = builds.findIndex(b => b.id === pendingNewBuildId);\n if (index !== -1) {\n setCurrentBuildIndex(index);\n }\n setPendingNewBuildId(null);\n }\n }, [builds, pendingNewBuildId]);\n\n // Update an existing build\n const updateBuild = useCallback((buildId: string, updates: Partial<BuildInfo>) => {\n setBuilds(prev => prev.map(build => \n build.id === buildId ? { ...build, ...updates } : build\n ));\n }, []);\n\n // Update todos for a build\n const updateTodos = useCallback((buildId: string, todos: TodoItem[]) => {\n setBuilds(prev => prev.map(build =>\n build.id === buildId ? { ...build, todos } : build\n ));\n }, []);\n\n // Connection status\n const setConnected = useCallback((connected: boolean) => {\n setIsConnected(connected);\n }, []);\n\n // Use refs to store the latest callbacks so event handlers always call current versions\n // This prevents race conditions where events could be missed during re-subscriptions\n const addBuildRef = useRef(addBuild);\n const updateBuildRef = useRef(updateBuild);\n const updateTodosRef = useRef(updateTodos);\n \n // Keep refs up to date\n useEffect(() => {\n addBuildRef.current = addBuild;\n }, [addBuild]);\n \n useEffect(() => {\n updateBuildRef.current = updateBuild;\n }, [updateBuild]);\n \n useEffect(() => {\n updateTodosRef.current = updateTodos;\n }, [updateTodos]);\n\n // Subscribe to RunnerLogger events - only runs ONCE on mount\n // Uses refs for callbacks to avoid re-subscription race conditions\n useEffect(() => {\n const logger = getLogger();\n \n // Sync initial state from logger (in case events already fired)\n setIsConnected(logger.isConnected());\n setIsVerbose(logger.isVerbose());\n \n // Load any existing builds\n const existingBuilds = logger.getAllBuilds();\n if (existingBuilds.length > 0) {\n for (const build of existingBuilds) {\n addBuildRef.current(build);\n }\n }\n \n // Handle build start events - use ref to get latest callback\n const handleBuildStart = (build: BuildInfo) => {\n addBuildRef.current(build);\n };\n \n // Handle build update events\n const handleBuildUpdate = (build: BuildInfo) => {\n updateBuildRef.current(build.id, build);\n };\n \n // Handle build complete events\n const handleBuildComplete = (build: BuildInfo) => {\n updateBuildRef.current(build.id, { ...build, status: build.status });\n };\n \n // Handle todo updates\n const handleTodoUpdate = (buildId: string, todos: TodoItem[]) => {\n updateTodosRef.current(buildId, todos);\n };\n \n // Handle connection events\n const handleConnected = () => {\n setIsConnected(true);\n };\n \n const handleDisconnected = () => {\n setIsConnected(false);\n };\n \n // Handle verbose change\n const handleVerboseChange = (verbose: boolean) => {\n setIsVerbose(verbose);\n };\n \n // Subscribe to events\n logger.on('buildStart', handleBuildStart);\n logger.on('buildUpdate', handleBuildUpdate);\n logger.on('buildComplete', handleBuildComplete);\n logger.on('todoUpdate', handleTodoUpdate);\n logger.on('connected', handleConnected);\n logger.on('disconnected', handleDisconnected);\n logger.on('verboseChange', handleVerboseChange);\n \n // Cleanup - only runs on unmount\n return () => {\n logger.off('buildStart', handleBuildStart);\n logger.off('buildUpdate', handleBuildUpdate);\n logger.off('buildComplete', handleBuildComplete);\n logger.off('todoUpdate', handleTodoUpdate);\n logger.off('connected', handleConnected);\n logger.off('disconnected', handleDisconnected);\n logger.off('verboseChange', handleVerboseChange);\n };\n }, []); // Empty deps - only subscribe once on mount\n\n const state: BuildState = {\n builds,\n currentBuildIndex,\n currentBuild,\n isConnected,\n isVerbose,\n };\n\n const actions: BuildStateActions = {\n nextBuild,\n prevBuild,\n setVerbose: setIsVerbose,\n toggleVerbose,\n addBuild,\n updateBuild,\n updateTodos,\n setConnected,\n };\n\n return [state, actions];\n}\n\n/**\n * Hook to subscribe to log entries from the buffer\n */\nexport function useLogEntries(maxEntries: number = 100): LogEntry[] {\n const [entries, setEntries] = useState<LogEntry[]>([]);\n\n useEffect(() => {\n const buffer = getLogBuffer();\n \n // Initialize with current entries\n setEntries(buffer.getRecent(maxEntries));\n\n // Subscribe to new entries\n const unsubscribe = buffer.onLog((entry) => {\n setEntries(prev => {\n const newEntries = [...prev, entry];\n // Keep only the most recent entries\n if (newEntries.length > maxEntries) {\n return newEntries.slice(-maxEntries);\n }\n return newEntries;\n });\n });\n\n return unsubscribe;\n }, [maxEntries]);\n\n return entries;\n}\n"],"names":["useState","useEffect","_jsxs","_jsx","useCallback","useRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useBuildState-pcDGDakI.js","sources":["../../src/cli/tui/components/BuildPanel.tsx","../../src/cli/tui/hooks/useBuildState.ts"],"sourcesContent":["/**\n * BuildPanel - Left panel showing current build info and todo list\n * Takes up 20% of width, shows:\n * - Project name\n * - Template name\n * - Agent/model\n * - Elapsed time\n * - Todo list with status indicators\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { Box, Text } from 'ink';\nimport { colors, symbols } from '../theme.js';\nimport type { BuildInfo, TodoItem } from '../../../lib/logging/types.js';\n\ninterface BuildPanelProps {\n build: BuildInfo | null;\n width: number;\n height?: number;\n}\n\nexport function BuildPanel({ build, width, height }: BuildPanelProps) {\n const [elapsedTime, setElapsedTime] = useState(0);\n\n // Update elapsed time every second\n useEffect(() => {\n if (!build || build.status !== 'running') {\n setElapsedTime(0);\n return;\n }\n\n const startTime = build.startTime;\n const updateElapsed = () => {\n const now = Date.now();\n setElapsedTime(Math.floor((now - startTime) / 1000));\n };\n\n updateElapsed();\n const interval = setInterval(updateElapsed, 1000);\n return () => clearInterval(interval);\n }, [build?.id, build?.status, build?.startTime]);\n\n // Don't render if no build\n if (!build) {\n return null;\n }\n\n const truncate = (str: string, maxLen: number) => {\n if (str.length <= maxLen) return str;\n return str.substring(0, maxLen - 3) + '...';\n };\n\n const formatDuration = (seconds: number): string => {\n if (seconds < 60) return `${seconds}s`;\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}m ${secs}s`;\n };\n\n // Determine elapsed time to show\n const displayElapsed = build.status === 'running' \n ? elapsedTime \n : build.endTime \n ? Math.floor((build.endTime - build.startTime) / 1000)\n : 0;\n\n return (\n <Box\n flexDirection=\"column\"\n width={width}\n height={height}\n borderStyle=\"single\"\n borderColor={colors.darkGray}\n paddingX={1}\n >\n {/* Header */}\n <Box marginBottom={1}>\n <Text color={colors.cyan} bold>BUILD</Text>\n </Box>\n\n {/* Project name */}\n <Box>\n <Text color={colors.white}>{truncate(build.projectSlug, width - 4)}</Text>\n </Box>\n\n {/* Template */}\n {build.template && (\n <Box>\n <Text color={colors.gray}>{truncate(build.template, width - 4)}</Text>\n </Box>\n )}\n\n {/* Agent/model */}\n <Box>\n <Text color={colors.gray}>\n {build.agent === 'claude-code' ? build.model : build.agent}\n </Text>\n </Box>\n\n {/* Elapsed time with status */}\n <Box marginTop={1}>\n {build.status === 'running' && (\n <Text color={colors.cyan}>\n {symbols.spinnerFrames[Math.floor(Date.now() / 120) % symbols.spinnerFrames.length]} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'completed' && (\n <Text color={colors.success}>\n {symbols.check} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'failed' && (\n <Text color={colors.error}>\n {symbols.cross} {formatDuration(displayElapsed)}\n </Text>\n )}\n {build.status === 'pending' && (\n <Text color={colors.gray}>Pending...</Text>\n )}\n </Box>\n\n {/* Todo list */}\n {build.todos.length > 0 && (\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color={colors.dimGray} bold>TASKS</Text>\n <TodoList todos={build.todos} maxWidth={width - 6} maxVisible={10} />\n </Box>\n )}\n\n {/* Error message if failed */}\n {build.status === 'failed' && build.error && (\n <Box marginTop={1}>\n <Text color={colors.error} wrap=\"truncate\">\n {truncate(build.error, width - 4)}\n </Text>\n </Box>\n )}\n </Box>\n );\n}\n\n/**\n * TodoList - Smart display of todo items\n * - Shows up to maxVisible items (default 10)\n * - Prioritizes in_progress and pending tasks\n * - Hides completed tasks when space is needed\n * - Shows count of hidden completed tasks\n */\nfunction TodoList({ todos, maxWidth, maxVisible = 10 }: { \n todos: TodoItem[]; \n maxWidth: number;\n maxVisible?: number;\n}) {\n // Separate todos by status\n const inProgress = todos.filter(t => t.status === 'in_progress');\n const pending = todos.filter(t => t.status === 'pending');\n const completed = todos.filter(t => t.status === 'completed');\n const cancelled = todos.filter(t => t.status === 'cancelled');\n \n // Calculate how many slots we have for each category\n // Priority: in_progress > pending > completed > cancelled\n const activeCount = inProgress.length + pending.length;\n \n let visibleTodos: TodoItem[] = [];\n let hiddenCompletedCount = 0;\n \n if (todos.length <= maxVisible) {\n // All todos fit - show them in order\n visibleTodos = todos;\n } else {\n // Need to prioritize - always show in_progress and pending first\n visibleTodos = [...inProgress, ...pending];\n \n // Calculate remaining slots for completed tasks\n const remainingSlots = maxVisible - visibleTodos.length;\n \n if (remainingSlots > 0) {\n // Show as many completed as we can fit\n visibleTodos = [...visibleTodos, ...completed.slice(0, remainingSlots)];\n hiddenCompletedCount = Math.max(0, completed.length - remainingSlots);\n } else {\n hiddenCompletedCount = completed.length;\n }\n \n // Add cancelled if there's still room\n const slotsAfterCompleted = maxVisible - visibleTodos.length;\n if (slotsAfterCompleted > 0) {\n visibleTodos = [...visibleTodos, ...cancelled.slice(0, slotsAfterCompleted)];\n }\n }\n \n // Sort visible todos to maintain logical order (by original index)\n visibleTodos.sort((a, b) => {\n const aIndex = todos.findIndex(t => t.id === a.id);\n const bIndex = todos.findIndex(t => t.id === b.id);\n return aIndex - bIndex;\n });\n \n return (\n <>\n {visibleTodos.map((todo) => (\n <TodoRow key={todo.id} todo={todo} maxWidth={maxWidth} />\n ))}\n {hiddenCompletedCount > 0 && (\n <Text color={colors.dimGray}>✓ {hiddenCompletedCount} completed</Text>\n )}\n </>\n );\n}\n\n// Todo row component\nfunction TodoRow({ todo, maxWidth }: { todo: TodoItem; maxWidth: number }) {\n const statusIcon = {\n pending: <Text color={colors.dimGray}>{symbols.hollowDot}</Text>,\n in_progress: <Text color={colors.cyan}>{symbols.spinnerFrames[Math.floor(Date.now() / 120) % symbols.spinnerFrames.length]}</Text>,\n completed: <Text color={colors.success}>{symbols.check}</Text>,\n cancelled: <Text color={colors.dimGray}>⊘</Text>,\n }[todo.status];\n\n const textColor = {\n pending: colors.dimGray,\n in_progress: colors.white,\n completed: colors.gray,\n cancelled: colors.dimGray,\n }[todo.status];\n\n const truncatedContent = todo.content.length > maxWidth - 3\n ? todo.content.substring(0, maxWidth - 6) + '...'\n : todo.content;\n\n return (\n <Box>\n {statusIcon}\n <Text color={textColor}> {truncatedContent}</Text>\n </Box>\n );\n}\n","/**\n * useBuildState - Hook to track build state and todos\n * \n * Manages:\n * - Active builds list\n * - Current build selection (for multi-build navigation)\n * - Todo list updates\n * - Build lifecycle events\n * \n * Subscribes to RunnerLogger events to automatically update state.\n * \n * IMPORTANT: Uses refs for event handlers to prevent race conditions\n * where events could be missed during re-subscriptions caused by\n * callback dependency changes.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport type { BuildInfo, TodoItem, LogEntry } from '../../../lib/logging/types.js';\nimport { getLogBuffer } from '../../../lib/logging/log-buffer.js';\nimport { getLogger } from '../../../lib/logging/index.js';\n\nexport interface BuildState {\n builds: BuildInfo[];\n currentBuildIndex: number;\n currentBuild: BuildInfo | null;\n isConnected: boolean;\n isVerbose: boolean;\n}\n\nexport interface BuildStateActions {\n nextBuild: () => void;\n prevBuild: () => void;\n setVerbose: (verbose: boolean) => void;\n toggleVerbose: () => void;\n addBuild: (build: BuildInfo) => void;\n updateBuild: (buildId: string, updates: Partial<BuildInfo>) => void;\n updateTodos: (buildId: string, todos: TodoItem[]) => void;\n setConnected: (connected: boolean) => void;\n}\n\nexport function useBuildState(): [BuildState, BuildStateActions] {\n const [builds, setBuilds] = useState<BuildInfo[]>([]);\n const [currentBuildIndex, setCurrentBuildIndex] = useState(0);\n const [isConnected, setIsConnected] = useState(false);\n const [isVerbose, setIsVerbose] = useState(false);\n\n // Derive current build from index\n const currentBuild = builds.length > 0 ? builds[currentBuildIndex] ?? null : null;\n\n // Navigation between builds\n const nextBuild = useCallback(() => {\n setCurrentBuildIndex(prev => {\n if (builds.length === 0) return 0;\n return (prev + 1) % builds.length;\n });\n }, [builds.length]);\n\n const prevBuild = useCallback(() => {\n setCurrentBuildIndex(prev => {\n if (builds.length === 0) return 0;\n return prev === 0 ? builds.length - 1 : prev - 1;\n });\n }, [builds.length]);\n\n // Verbose toggle - updates both UI state and logger\n const toggleVerbose = useCallback(() => {\n setIsVerbose(prev => {\n const newValue = !prev;\n // Also update the logger's verbose flag\n try {\n const logger = getLogger();\n logger.setVerbose(newValue);\n } catch {\n // Logger not initialized yet\n }\n return newValue;\n });\n }, []);\n\n // Track when a new build is added to auto-select it\n const [pendingNewBuildId, setPendingNewBuildId] = useState<string | null>(null);\n\n // Add a new build\n const addBuild = useCallback((build: BuildInfo) => {\n setBuilds(prev => {\n // Check if build already exists\n const exists = prev.some(b => b.id === build.id);\n if (exists) {\n // Update existing build\n return prev.map(b => b.id === build.id ? { ...b, ...build } : b);\n }\n // Mark this as a new build to auto-select\n setPendingNewBuildId(build.id);\n // Add new build\n return [...prev, build];\n });\n }, []);\n\n // Auto-select newly added builds\n useEffect(() => {\n if (pendingNewBuildId) {\n const index = builds.findIndex(b => b.id === pendingNewBuildId);\n if (index !== -1) {\n setCurrentBuildIndex(index);\n }\n setPendingNewBuildId(null);\n }\n }, [builds, pendingNewBuildId]);\n\n // Update an existing build\n const updateBuild = useCallback((buildId: string, updates: Partial<BuildInfo>) => {\n setBuilds(prev => prev.map(build => \n build.id === buildId ? { ...build, ...updates } : build\n ));\n }, []);\n\n // Update todos for a build\n const updateTodos = useCallback((buildId: string, todos: TodoItem[]) => {\n setBuilds(prev => prev.map(build =>\n build.id === buildId ? { ...build, todos } : build\n ));\n }, []);\n\n // Connection status\n const setConnected = useCallback((connected: boolean) => {\n setIsConnected(connected);\n }, []);\n\n // Use refs to store the latest callbacks so event handlers always call current versions\n // This prevents race conditions where events could be missed during re-subscriptions\n const addBuildRef = useRef(addBuild);\n const updateBuildRef = useRef(updateBuild);\n const updateTodosRef = useRef(updateTodos);\n \n // Keep refs up to date\n useEffect(() => {\n addBuildRef.current = addBuild;\n }, [addBuild]);\n \n useEffect(() => {\n updateBuildRef.current = updateBuild;\n }, [updateBuild]);\n \n useEffect(() => {\n updateTodosRef.current = updateTodos;\n }, [updateTodos]);\n\n // Subscribe to RunnerLogger events - only runs ONCE on mount\n // Uses refs for callbacks to avoid re-subscription race conditions\n useEffect(() => {\n const logger = getLogger();\n \n // Sync initial state from logger (in case events already fired)\n setIsConnected(logger.isConnected());\n setIsVerbose(logger.isVerbose());\n \n // Load any existing builds\n const existingBuilds = logger.getAllBuilds();\n if (existingBuilds.length > 0) {\n for (const build of existingBuilds) {\n addBuildRef.current(build);\n }\n }\n \n // Handle build start events - use ref to get latest callback\n const handleBuildStart = (build: BuildInfo) => {\n addBuildRef.current(build);\n };\n \n // Handle build update events\n const handleBuildUpdate = (build: BuildInfo) => {\n updateBuildRef.current(build.id, build);\n };\n \n // Handle build complete events\n const handleBuildComplete = (build: BuildInfo) => {\n updateBuildRef.current(build.id, { ...build, status: build.status });\n };\n \n // Handle todo updates\n const handleTodoUpdate = (buildId: string, todos: TodoItem[]) => {\n updateTodosRef.current(buildId, todos);\n };\n \n // Handle connection events\n const handleConnected = () => {\n setIsConnected(true);\n };\n \n const handleDisconnected = () => {\n setIsConnected(false);\n };\n \n // Handle verbose change\n const handleVerboseChange = (verbose: boolean) => {\n setIsVerbose(verbose);\n };\n \n // Subscribe to events\n logger.on('buildStart', handleBuildStart);\n logger.on('buildUpdate', handleBuildUpdate);\n logger.on('buildComplete', handleBuildComplete);\n logger.on('todoUpdate', handleTodoUpdate);\n logger.on('connected', handleConnected);\n logger.on('disconnected', handleDisconnected);\n logger.on('verboseChange', handleVerboseChange);\n \n // Cleanup - only runs on unmount\n return () => {\n logger.off('buildStart', handleBuildStart);\n logger.off('buildUpdate', handleBuildUpdate);\n logger.off('buildComplete', handleBuildComplete);\n logger.off('todoUpdate', handleTodoUpdate);\n logger.off('connected', handleConnected);\n logger.off('disconnected', handleDisconnected);\n logger.off('verboseChange', handleVerboseChange);\n };\n }, []); // Empty deps - only subscribe once on mount\n\n const state: BuildState = {\n builds,\n currentBuildIndex,\n currentBuild,\n isConnected,\n isVerbose,\n };\n\n const actions: BuildStateActions = {\n nextBuild,\n prevBuild,\n setVerbose: setIsVerbose,\n toggleVerbose,\n addBuild,\n updateBuild,\n updateTodos,\n setConnected,\n };\n\n return [state, actions];\n}\n\n/**\n * Hook to subscribe to log entries from the buffer\n */\nexport function useLogEntries(maxEntries: number = 100): LogEntry[] {\n const [entries, setEntries] = useState<LogEntry[]>([]);\n\n useEffect(() => {\n const buffer = getLogBuffer();\n \n // Initialize with current entries\n setEntries(buffer.getRecent(maxEntries));\n\n // Subscribe to new entries\n const unsubscribe = buffer.onLog((entry) => {\n setEntries(prev => {\n const newEntries = [...prev, entry];\n // Keep only the most recent entries\n if (newEntries.length > maxEntries) {\n return newEntries.slice(-maxEntries);\n }\n return newEntries;\n });\n });\n\n return unsubscribe;\n }, [maxEntries]);\n\n return entries;\n}\n"],"names":["useState","useEffect","_jsxs","_jsx","useCallback","useRef"],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -516,12 +516,12 @@ program
|
|
|
516
516
|
// Default action when no subcommand is provided
|
|
517
517
|
if (options.runner) {
|
|
518
518
|
// Start runner only (legacy flag)
|
|
519
|
-
const { runCommand } = await import('../chunks/run-
|
|
519
|
+
const { runCommand } = await import('../chunks/run-9mP5QnpK.js');
|
|
520
520
|
await runCommand({});
|
|
521
521
|
}
|
|
522
522
|
else {
|
|
523
523
|
// Show TUI main menu
|
|
524
|
-
const { mainTUICommand } = await import('../chunks/main-tui-
|
|
524
|
+
const { mainTUICommand } = await import('../chunks/main-tui-Bar2Jb2S.js');
|
|
525
525
|
await mainTUICommand();
|
|
526
526
|
}
|
|
527
527
|
}
|
|
@@ -542,7 +542,7 @@ program
|
|
|
542
542
|
.option('--non-interactive', 'Use defaults without prompts (alias for -y)')
|
|
543
543
|
.action(async (options) => {
|
|
544
544
|
try {
|
|
545
|
-
const { initCommand } = await import('../chunks/init-
|
|
545
|
+
const { initCommand } = await import('../chunks/init-DDtrxZ0M.js');
|
|
546
546
|
await initCommand(options);
|
|
547
547
|
}
|
|
548
548
|
catch (error) {
|
|
@@ -560,7 +560,7 @@ program
|
|
|
560
560
|
.option('-v, --verbose', 'Enable verbose logging (show debug info)')
|
|
561
561
|
.action(async (options) => {
|
|
562
562
|
try {
|
|
563
|
-
const { startCommand } = await import('../chunks/start-
|
|
563
|
+
const { startCommand } = await import('../chunks/start-CQKEEma-.js');
|
|
564
564
|
await startCommand(options);
|
|
565
565
|
}
|
|
566
566
|
catch (error) {
|
|
@@ -593,7 +593,7 @@ program
|
|
|
593
593
|
.option('--no-tui', 'Disable TUI dashboard, use plain text logs')
|
|
594
594
|
.action(async (options) => {
|
|
595
595
|
try {
|
|
596
|
-
const { runCommand } = await import('../chunks/run-
|
|
596
|
+
const { runCommand } = await import('../chunks/run-9mP5QnpK.js');
|
|
597
597
|
await runCommand(options);
|
|
598
598
|
}
|
|
599
599
|
catch (error) {
|
package/dist/instrument.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module';
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
|
|
5
|
-
import { g as getAugmentedNamespace, a as getDefaultExportFromCjs } from './chunks/_commonjsHelpers-
|
|
5
|
+
import { g as getAugmentedNamespace, a as getDefaultExportFromCjs } from './chunks/_commonjsHelpers-h-Bqc03Z.js';
|
|
6
6
|
import require$$0$2, { inspect, types as types$4 } from 'util';
|
|
7
7
|
import require$$2$2 from 'url';
|
|
8
8
|
import * as path$1 from 'path';
|
|
@@ -23,7 +23,7 @@ import diagch__default from 'diagnostics_channel';
|
|
|
23
23
|
import * as net from 'node:net';
|
|
24
24
|
import require$$1$5 from 'async_hooks';
|
|
25
25
|
import { execFile } from 'node:child_process';
|
|
26
|
-
import
|
|
26
|
+
import fs__default, { readdir, readFile, createReadStream, existsSync, readFileSync as readFileSync$1 } from 'node:fs';
|
|
27
27
|
import * as os from 'node:os';
|
|
28
28
|
import os__default from 'node:os';
|
|
29
29
|
import require$$1$3, { join, dirname as dirname$1, posix, sep as sep$1 } from 'node:path';
|
|
@@ -38225,7 +38225,7 @@ var hasRequiredGetPackageVersion;
|
|
|
38225
38225
|
function requireGetPackageVersion () {
|
|
38226
38226
|
if (hasRequiredGetPackageVersion) return getPackageVersion_1;
|
|
38227
38227
|
hasRequiredGetPackageVersion = 1;
|
|
38228
|
-
const { readFileSync } =
|
|
38228
|
+
const { readFileSync } = fs__default;
|
|
38229
38229
|
const { join } = require$$1$3;
|
|
38230
38230
|
|
|
38231
38231
|
const packageVersions = new Map();
|
|
@@ -38321,7 +38321,7 @@ function requireTracingHooks () {
|
|
|
38321
38321
|
function dump(code, filename) {
|
|
38322
38322
|
const os = os__default;
|
|
38323
38323
|
const path = require$$1$3;
|
|
38324
|
-
const fs =
|
|
38324
|
+
const fs = fs__default;
|
|
38325
38325
|
|
|
38326
38326
|
const base = process.env.TRACING_DUMP_DIR ?? os.tmpdir();
|
|
38327
38327
|
const dirname = path.dirname(filename);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openbuilder/cli",
|
|
3
|
-
"version": "0.50.
|
|
3
|
+
"version": "0.50.20",
|
|
4
4
|
"description": "OpenBuilder CLI - AI-powered application builder",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -67,16 +67,11 @@
|
|
|
67
67
|
"drizzle-orm": "^0.44.5",
|
|
68
68
|
"express": "^5.1.0",
|
|
69
69
|
"http-proxy": "^1.18.1",
|
|
70
|
-
"ink": "^6.3.1",
|
|
71
|
-
"ink-select-input": "^6.2.0",
|
|
72
|
-
"ink-spinner": "^5.0.0",
|
|
73
|
-
"ink-text-input": "^6.0.0",
|
|
74
70
|
"inquirer": "^12.9.6",
|
|
75
71
|
"jsonc-parser": "^3.3.1",
|
|
76
72
|
"ora": "^9.0.0",
|
|
77
73
|
"pg": "^8.13.1",
|
|
78
74
|
"picocolors": "^1.1.1",
|
|
79
|
-
"react": "19.1.0",
|
|
80
75
|
"simple-git": "^3.28.0",
|
|
81
76
|
"ws": "^8.18.0",
|
|
82
77
|
"zod": "^4.0.0"
|
|
@@ -51,6 +51,18 @@ for (const dep of workspaceDeps) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
// REMOVE react and ink ecosystem - they're bundled by rollup to prevent multiple React instances
|
|
55
|
+
// When these are both bundled AND listed as dependencies, multiple React instances get loaded
|
|
56
|
+
// causing "Cannot read properties of null (reading 'useState')" errors
|
|
57
|
+
const bundledReactEcosystem = ['react', 'ink', 'ink-select-input', 'ink-spinner', 'ink-text-input'];
|
|
58
|
+
for (const dep of bundledReactEcosystem) {
|
|
59
|
+
if (packageJson.dependencies[dep]) {
|
|
60
|
+
console.log(` Removing ${dep} (bundled by rollup to prevent multiple React instances)`);
|
|
61
|
+
delete packageJson.dependencies[dep];
|
|
62
|
+
modified = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
54
66
|
// Remove bundledDependencies if it exists (no longer needed)
|
|
55
67
|
if (packageJson.bundledDependencies) {
|
|
56
68
|
console.log(` Removing bundledDependencies (agent-core is inlined, not bundled)`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_commonjsHelpers-DcsQGttR.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|