brainrot-cli 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppNew.d.ts +11 -0
- package/dist/AppNew.d.ts.map +1 -0
- package/dist/AppNew.js +437 -0
- package/dist/AppNew.js.map +1 -0
- package/dist/AttentionOverlay.d.ts +28 -0
- package/dist/AttentionOverlay.d.ts.map +1 -0
- package/dist/AttentionOverlay.js +92 -0
- package/dist/AttentionOverlay.js.map +1 -0
- package/dist/ClaudeChat.d.ts +38 -0
- package/dist/ClaudeChat.d.ts.map +1 -0
- package/dist/ClaudeChat.js +81 -0
- package/dist/ClaudeChat.js.map +1 -0
- package/dist/FeatureInput.d.ts +20 -0
- package/dist/FeatureInput.d.ts.map +1 -0
- package/dist/FeatureInput.js +66 -0
- package/dist/FeatureInput.js.map +1 -0
- package/dist/GameSelectScreen.d.ts +24 -0
- package/dist/GameSelectScreen.d.ts.map +1 -0
- package/dist/GameSelectScreen.js +78 -0
- package/dist/GameSelectScreen.js.map +1 -0
- package/dist/GameSelectorOverlay.d.ts +21 -0
- package/dist/GameSelectorOverlay.d.ts.map +1 -0
- package/dist/GameSelectorOverlay.js +98 -0
- package/dist/GameSelectorOverlay.js.map +1 -0
- package/dist/LoopComplete.d.ts +42 -0
- package/dist/LoopComplete.d.ts.map +1 -0
- package/dist/LoopComplete.js +69 -0
- package/dist/LoopComplete.js.map +1 -0
- package/dist/ResumePrompt.d.ts +32 -0
- package/dist/ResumePrompt.d.ts.map +1 -0
- package/dist/ResumePrompt.js +65 -0
- package/dist/ResumePrompt.js.map +1 -0
- package/dist/SidePanel.d.ts +26 -0
- package/dist/SidePanel.d.ts.map +1 -0
- package/dist/SidePanel.js +90 -0
- package/dist/SidePanel.js.map +1 -0
- package/dist/StatusBarMinimal.d.ts +26 -0
- package/dist/StatusBarMinimal.d.ts.map +1 -0
- package/dist/StatusBarMinimal.js +111 -0
- package/dist/StatusBarMinimal.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -449
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,453 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import { render, Box, Text, useInput, useApp } from "ink";
|
|
4
|
-
import { useState, useCallback, useMemo, useEffect, createContext, useContext, } from "react";
|
|
5
|
-
import { useClaudeCode } from "./use-claude-code.js";
|
|
6
|
-
import { useRalphLoopWithClaudeOutput } from "./use-ralph-loop.js";
|
|
7
|
-
import { Layout, useTerminalSize } from "./Layout.js";
|
|
8
|
-
import { LoopManagementPanel } from "./LoopManagementPanel.js";
|
|
9
|
-
import { LogViewer } from "./LogViewer.js";
|
|
10
|
-
import { GameSelector } from "./GameSelector.js";
|
|
11
|
-
import { SettingsMenu } from "./SettingsMenu.js";
|
|
12
|
-
import { StatsMenu } from "./StatsMenu.js";
|
|
13
|
-
import { useAchievementNotifications } from "./AchievementNotification.js";
|
|
14
|
-
import { getGameList, getGameById } from "./games/index.js";
|
|
15
|
-
import { useConfig } from "./use-config.js";
|
|
16
|
-
import { getLayoutOptions, getClaudeCodeOptions, deepMerge, saveConfig, } from "./config.js";
|
|
17
|
-
import { parseCLI, printHelp, printVersion, printError } from "./cli.js";
|
|
18
|
-
import { recordSessionStart } from "./stats.js";
|
|
19
|
-
import { useLoopState, useLoopStateExists } from "./use-loop-state.js";
|
|
20
|
-
import { ResumeOverlay } from "./ResumeOverlay.js";
|
|
21
|
-
import { SetupWizard, } from "./SetupWizard.js";
|
|
22
|
-
import { PrdOverlay } from "./PrdOverlay.js";
|
|
23
|
-
import { ThemeProvider, useThemeColors } from "./useTheme.js";
|
|
24
|
-
import { StatusBar, GameStatusProvider, useGameStatus, LoopInfoProvider, useLoopInfo, } from "./StatusBar.js";
|
|
25
|
-
import { HelpOverlay } from "./HelpOverlay.js";
|
|
26
|
-
// ============================================================================
|
|
27
|
-
// CLI OVERRIDE CONTEXT
|
|
28
|
-
// ============================================================================
|
|
29
|
-
/**
|
|
30
|
-
* Context for passing CLI overrides to the app
|
|
31
|
-
*/
|
|
32
|
-
const CLIOverridesContext = createContext({});
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
33
3
|
/**
|
|
34
|
-
*
|
|
4
|
+
* BrainRot CLI Entry Point
|
|
5
|
+
*
|
|
6
|
+
* A terminal-native CLI that wraps Claude Code with built-in games
|
|
7
|
+
* to play while agents work.
|
|
35
8
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
/** Game area with mode switching between menu, logs, settings, stats, and active game */
|
|
40
|
-
function GameArea({ logs, hasFocus, dimensions, loopAttention, onLoopAlertDismiss, config, onConfigChange, onConfigSave, onAchievementUnlock: _onAchievementUnlock, onGameStateChange, gamesEnabled, hasActiveLoop, onStartNewLoop, onViewCurrentLoop, }) {
|
|
41
|
-
const [mode, setMode] = useState("menu");
|
|
42
|
-
const [selectedGameId, setSelectedGameId] = useState(null);
|
|
43
|
-
const colors = useThemeColors();
|
|
44
|
-
const { setGameState, clearGameState } = useGameStatus();
|
|
45
|
-
const games = useMemo(() => getGameList(), []);
|
|
46
|
-
const handleSelectGame = useCallback((gameId) => {
|
|
47
|
-
setSelectedGameId(gameId);
|
|
48
|
-
setMode("game");
|
|
49
|
-
// Set game name in status bar
|
|
50
|
-
const gameInfo = getGameById(gameId);
|
|
51
|
-
if (gameInfo) {
|
|
52
|
-
setGameState({ gameId, gameName: gameInfo.info.name });
|
|
53
|
-
}
|
|
54
|
-
}, [setGameState]);
|
|
55
|
-
const handleExitGame = useCallback(() => {
|
|
56
|
-
setSelectedGameId(null);
|
|
57
|
-
setMode("menu");
|
|
58
|
-
// Clear game state from status bar
|
|
59
|
-
clearGameState();
|
|
60
|
-
}, [clearGameState]);
|
|
61
|
-
const handleCloseSettings = useCallback(() => {
|
|
62
|
-
setMode("menu");
|
|
63
|
-
}, []);
|
|
64
|
-
const handleOpenStats = useCallback(() => {
|
|
65
|
-
setMode("stats");
|
|
66
|
-
}, []);
|
|
67
|
-
const handleCloseStats = useCallback(() => {
|
|
68
|
-
setMode("menu");
|
|
69
|
-
}, []);
|
|
70
|
-
// Handle mode switching with keyboard
|
|
71
|
-
useInput((input, key) => {
|
|
72
|
-
if (!hasFocus)
|
|
73
|
-
return;
|
|
74
|
-
// Ctrl+, to open settings (from menu only)
|
|
75
|
-
if (key.ctrl && input === "," && mode === "menu") {
|
|
76
|
-
setMode("settings");
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
// 'L' to switch to logs view
|
|
80
|
-
if ((input === "l" || input === "L") &&
|
|
81
|
-
mode !== "game" &&
|
|
82
|
-
mode !== "settings" &&
|
|
83
|
-
mode !== "stats") {
|
|
84
|
-
setMode(mode === "logs" ? "menu" : "logs");
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
// 'Q' or Escape to go back to menu from logs
|
|
88
|
-
if ((input === "q" || input === "Q") && mode === "logs") {
|
|
89
|
-
setMode("menu");
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
}, {
|
|
93
|
-
isActive: hasFocus && mode !== "game" && mode !== "settings" && mode !== "stats",
|
|
94
|
-
});
|
|
95
|
-
// Render based on current mode
|
|
96
|
-
if (mode === "logs") {
|
|
97
|
-
return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsxs(Box, { paddingX: 1, marginBottom: 1, children: [_jsx(Text, { bold: true, color: colors.primary, children: "Live Logs" }), _jsx(Text, { dimColor: true, children: " | L: Back to Games | Q: Menu" })] }), _jsx(LogViewer, { logs: logs, hasFocus: hasFocus, initialViewMode: "condensed" })] }));
|
|
98
|
-
}
|
|
99
|
-
if (mode === "settings") {
|
|
100
|
-
return (_jsx(SettingsMenu, { config: config, hasFocus: hasFocus, onConfigChange: onConfigChange, onSave: onConfigSave, onClose: handleCloseSettings }));
|
|
101
|
-
}
|
|
102
|
-
if (mode === "stats") {
|
|
103
|
-
return _jsx(StatsMenu, { hasFocus: hasFocus, onClose: handleCloseStats });
|
|
104
|
-
}
|
|
105
|
-
if (mode === "game" && selectedGameId) {
|
|
106
|
-
const gameEntry = getGameById(selectedGameId);
|
|
107
|
-
if (gameEntry) {
|
|
108
|
-
const GameComponent = gameEntry.component;
|
|
109
|
-
return (_jsx(GameComponent, { hasFocus: hasFocus, dimensions: dimensions, onExit: handleExitGame, loopAttention: loopAttention, onLoopAlertDismiss: onLoopAlertDismiss, onGameStateChange: onGameStateChange }));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Default: show game selector menu
|
|
113
|
-
return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsx(GameSelector, { games: games, hasFocus: hasFocus, dimensions: dimensions, onSelectGame: handleSelectGame, onOpenStats: handleOpenStats, gamesEnabled: gamesEnabled, hasActiveLoop: hasActiveLoop, onStartNewLoop: onStartNewLoop, onViewCurrentLoop: onViewCurrentLoop }), _jsx(Box, { paddingX: 1, children: _jsx(Text, { dimColor: true, children: "L: View Logs | Ctrl+,: Settings | N: Loop" }) })] }));
|
|
114
|
-
}
|
|
115
|
-
/** Header component */
|
|
116
|
-
function Header() {
|
|
117
|
-
const colors = useThemeColors();
|
|
118
|
-
return (_jsxs(Box, { borderStyle: "round", borderColor: colors.primary, paddingX: 2, children: [_jsx(Text, { bold: true, color: colors.primary, children: "BRAINROT CLI" }), _jsx(Text, { children: " - " }), _jsx(Text, { children: "Play games while Claude Code works" })] }));
|
|
119
|
-
}
|
|
120
|
-
/** Status bar footer - needs to be inside GameStatusProvider */
|
|
121
|
-
function StatusBarFooter({ loopStatus, needsAttention, hotkeyContext, }) {
|
|
122
|
-
return (_jsx(StatusBar, { loopStatus: loopStatus, needsAttention: needsAttention, condensed: true, hotkeyContext: hotkeyContext }));
|
|
123
|
-
}
|
|
124
|
-
function AppContent() {
|
|
125
|
-
const { exit } = useApp();
|
|
126
|
-
const { config: fileConfig } = useConfig();
|
|
127
|
-
const cliOverrides = useCLIOverrides();
|
|
128
|
-
const { addAchievements, NotificationComponent, hasNotifications } = useAchievementNotifications();
|
|
129
|
-
// Local config state for live preview (before saving)
|
|
130
|
-
const [localConfigOverrides, setLocalConfigOverrides] = useState({});
|
|
131
|
-
// Record session start on mount
|
|
132
|
-
useEffect(() => {
|
|
133
|
-
void recordSessionStart();
|
|
134
|
-
}, []);
|
|
135
|
-
// Merge: file config -> local overrides -> CLI overrides (CLI takes precedence)
|
|
136
|
-
const config = useMemo(() => deepMerge(deepMerge(fileConfig, localConfigOverrides), cliOverrides), [fileConfig, localConfigOverrides, cliOverrides]);
|
|
137
|
-
// Handle config changes from settings menu (immediate preview)
|
|
138
|
-
const handleConfigChange = useCallback((updates) => {
|
|
139
|
-
setLocalConfigOverrides((prev) => deepMerge(prev, updates));
|
|
140
|
-
}, []);
|
|
141
|
-
// Handle saving config to disk
|
|
142
|
-
const handleConfigSave = useCallback(async () => {
|
|
143
|
-
// Merge current file config with local overrides and save
|
|
144
|
-
const configToSave = deepMerge(fileConfig, localConfigOverrides);
|
|
145
|
-
await saveConfig(configToSave);
|
|
146
|
-
// Clear local overrides since they're now persisted
|
|
147
|
-
setLocalConfigOverrides({});
|
|
148
|
-
}, [fileConfig, localConfigOverrides]);
|
|
149
|
-
// Get config-derived options
|
|
150
|
-
const layoutOptions = useMemo(() => getLayoutOptions(config), [config]);
|
|
151
|
-
const claudeCodeOptions = useMemo(() => getClaudeCodeOptions(config), [config]);
|
|
152
|
-
const { status, output, spawn, stop } = useClaudeCode(claudeCodeOptions);
|
|
153
|
-
const [focusedPane, setFocusedPane] = useState(0);
|
|
154
|
-
const [loopAlertDismissed, setLoopAlertDismissed] = useState(false);
|
|
155
|
-
const [showHelpOverlay, setShowHelpOverlay] = useState(false);
|
|
156
|
-
const [showSetupWizard, setShowSetupWizard] = useState(false);
|
|
157
|
-
const [skipOnboarding, setSkipOnboarding] = useState(false);
|
|
158
|
-
const [showResumeOverlay, setShowResumeOverlay] = useState(false);
|
|
159
|
-
const [resumeOverlayDismissed, setResumeOverlayDismissed] = useState(false);
|
|
160
|
-
const [showPrdOverlay, setShowPrdOverlay] = useState(false);
|
|
161
|
-
const terminalSize = useTerminalSize();
|
|
162
|
-
// Check if this is a first-time user (no existing loop state)
|
|
163
|
-
const { exists: loopStateExists, isChecking: isCheckingLoopState } = useLoopStateExists();
|
|
164
|
-
// Use loop state persistence - loads on startup and auto-saves changes
|
|
165
|
-
const loopState = useLoopState();
|
|
166
|
-
// Show setup wizard for first-time users
|
|
167
|
-
// Show resume overlay for returning users with existing loop state
|
|
168
|
-
useEffect(() => {
|
|
169
|
-
// Only trigger after we've checked loop state existence
|
|
170
|
-
if (!isCheckingLoopState && !resumeOverlayDismissed) {
|
|
171
|
-
if (loopStateExists === false && !showSetupWizard) {
|
|
172
|
-
// First-time user: show setup wizard (starts with onboarding)
|
|
173
|
-
setSkipOnboarding(false);
|
|
174
|
-
setShowSetupWizard(true);
|
|
175
|
-
}
|
|
176
|
-
else if (loopStateExists === true && loopState.hasLoop) {
|
|
177
|
-
// Returning user with previous loop: show resume overlay
|
|
178
|
-
setShowResumeOverlay(true);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}, [
|
|
182
|
-
isCheckingLoopState,
|
|
183
|
-
loopStateExists,
|
|
184
|
-
resumeOverlayDismissed,
|
|
185
|
-
loopState.hasLoop,
|
|
186
|
-
showSetupWizard,
|
|
187
|
-
]);
|
|
188
|
-
// Handle setup wizard completion - start loop with collected data
|
|
189
|
-
const handleSetupWizardComplete = useCallback((result) => {
|
|
190
|
-
setShowSetupWizard(false);
|
|
191
|
-
const { featureDescription, interviewResult, generatedPrd } = result;
|
|
192
|
-
// Store the generated PRD and tasks in loop state
|
|
193
|
-
loopState.setPrdAndTasks({
|
|
194
|
-
name: featureDescription,
|
|
195
|
-
description: generatedPrd.overview,
|
|
196
|
-
content: generatedPrd.fullContent,
|
|
197
|
-
raw: {
|
|
198
|
-
interview: interviewResult,
|
|
199
|
-
generated: generatedPrd,
|
|
200
|
-
},
|
|
201
|
-
}, generatedPrd.taskBreakdown);
|
|
202
|
-
}, [loopState]);
|
|
203
|
-
// Handle setup wizard cancellation
|
|
204
|
-
const handleSetupWizardCancel = useCallback(() => {
|
|
205
|
-
setShowSetupWizard(false);
|
|
206
|
-
}, []);
|
|
207
|
-
// Handle resume overlay action selection
|
|
208
|
-
const handleResumeAction = useCallback((action) => {
|
|
209
|
-
setShowResumeOverlay(false);
|
|
210
|
-
setResumeOverlayDismissed(true);
|
|
211
|
-
switch (action) {
|
|
212
|
-
case "resume":
|
|
213
|
-
// Resume the previous loop - just dismiss the overlay
|
|
214
|
-
// The loop state is already loaded
|
|
215
|
-
break;
|
|
216
|
-
case "new":
|
|
217
|
-
// Start a new loop - clear the existing state and show setup wizard
|
|
218
|
-
loopState.clear();
|
|
219
|
-
setSkipOnboarding(true); // Skip onboarding for returning users
|
|
220
|
-
setShowSetupWizard(true);
|
|
221
|
-
break;
|
|
222
|
-
case "history":
|
|
223
|
-
// View history - for now, dismiss and let user navigate to stats
|
|
224
|
-
// In a more complete implementation, this could open a history view
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
}, [loopState]);
|
|
228
|
-
// Use Ralph loop parsing for the output
|
|
229
|
-
const ralphLoop = useRalphLoopWithClaudeOutput(output);
|
|
230
|
-
// Sync Ralph loop status to persistent state when it changes
|
|
231
|
-
useEffect(() => {
|
|
232
|
-
if (ralphLoop.state.status !== loopState.state.loopStatus) {
|
|
233
|
-
loopState.setLoopStatus(ralphLoop.state.status);
|
|
234
|
-
}
|
|
235
|
-
}, [ralphLoop.state.status, loopState]);
|
|
236
|
-
// Use loop info context to update status bar
|
|
237
|
-
const { setLoopInfo } = useLoopInfo();
|
|
238
|
-
// Sync loop state to loop info context for status bar display
|
|
239
|
-
useEffect(() => {
|
|
240
|
-
const { tasks, progress, startedAt } = loopState.state;
|
|
241
|
-
// Find the current task (in_progress status)
|
|
242
|
-
const currentTask = tasks.find((t) => t.status === "in_progress") ?? null;
|
|
243
|
-
setLoopInfo({
|
|
244
|
-
currentTask,
|
|
245
|
-
progress: progress.totalTasks > 0 ? progress : null,
|
|
246
|
-
startedAt: tasks.length > 0 ? startedAt : null,
|
|
247
|
-
});
|
|
248
|
-
}, [loopState.state, setLoopInfo]);
|
|
249
|
-
// Calculate game area dimensions (accounting for layout chrome)
|
|
250
|
-
const gameDimensions = useMemo(() => {
|
|
251
|
-
// Account for header (3), footer (2), help (1), borders, and split pane divider
|
|
252
|
-
const availableHeight = Math.max(terminalSize.height - 8, 10);
|
|
253
|
-
const availableWidth = Math.max(Math.floor(terminalSize.width * 0.5) - 4, 20);
|
|
254
|
-
return { width: availableWidth, height: availableHeight };
|
|
255
|
-
}, [terminalSize.width, terminalSize.height]);
|
|
256
|
-
// Create loop attention object for games
|
|
257
|
-
const loopAttention = useMemo(() => ({
|
|
258
|
-
needsAttention: ralphLoop.needsAttention && !loopAlertDismissed,
|
|
259
|
-
reason: ralphLoop.state.userAttention.reason,
|
|
260
|
-
type: ralphLoop.state.userAttention.type,
|
|
261
|
-
prompt: ralphLoop.state.userAttention.prompt,
|
|
262
|
-
}), [
|
|
263
|
-
ralphLoop.needsAttention,
|
|
264
|
-
ralphLoop.state.userAttention,
|
|
265
|
-
loopAlertDismissed,
|
|
266
|
-
]);
|
|
267
|
-
// Reset dismiss state when attention changes
|
|
268
|
-
const handleLoopAlertDismiss = useCallback(() => {
|
|
269
|
-
setLoopAlertDismissed(true);
|
|
270
|
-
}, []);
|
|
271
|
-
// Toggle help overlay
|
|
272
|
-
const handleToggleHelp = useCallback(() => {
|
|
273
|
-
setShowHelpOverlay((prev) => !prev);
|
|
274
|
-
}, []);
|
|
275
|
-
// Close help overlay
|
|
276
|
-
const handleCloseHelp = useCallback(() => {
|
|
277
|
-
setShowHelpOverlay(false);
|
|
278
|
-
}, []);
|
|
279
|
-
// Toggle PRD overlay
|
|
280
|
-
const handleTogglePrdOverlay = useCallback(() => {
|
|
281
|
-
setShowPrdOverlay((prev) => !prev);
|
|
282
|
-
}, []);
|
|
283
|
-
// Close PRD overlay
|
|
284
|
-
const handleClosePrdOverlay = useCallback(() => {
|
|
285
|
-
setShowPrdOverlay(false);
|
|
286
|
-
}, []);
|
|
287
|
-
// Handle PRD overlay action
|
|
288
|
-
const handlePrdOverlayAction = useCallback((action) => {
|
|
289
|
-
setShowPrdOverlay(false);
|
|
290
|
-
switch (action) {
|
|
291
|
-
case "resume":
|
|
292
|
-
// Resume the loop - just close the overlay
|
|
293
|
-
break;
|
|
294
|
-
case "new_loop":
|
|
295
|
-
// Clear existing loop and start setup wizard
|
|
296
|
-
loopState.clear();
|
|
297
|
-
setSkipOnboarding(true); // Skip onboarding for users starting new loops
|
|
298
|
-
setShowSetupWizard(true);
|
|
299
|
-
break;
|
|
300
|
-
case "full_prd":
|
|
301
|
-
// For now, just close - could open a detailed PRD view in the future
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
304
|
-
}, [loopState]);
|
|
305
|
-
// Reset dismiss state when a new attention request comes in
|
|
306
|
-
useEffect(() => {
|
|
307
|
-
if (ralphLoop.needsAttention) {
|
|
308
|
-
setLoopAlertDismissed(false);
|
|
309
|
-
}
|
|
310
|
-
}, [
|
|
311
|
-
ralphLoop.needsAttention,
|
|
312
|
-
ralphLoop.state.userAttention.reason,
|
|
313
|
-
ralphLoop.state.userAttention.prompt,
|
|
314
|
-
]);
|
|
315
|
-
useInput((input, key) => {
|
|
316
|
-
// Ctrl+C always works to exit
|
|
317
|
-
if (key.ctrl && input === "c") {
|
|
318
|
-
void stop().then(() => exit());
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
// When setup wizard or resume overlay is shown, only handle Ctrl+C (above)
|
|
322
|
-
// These components handle their own keyboard input
|
|
323
|
-
if (showSetupWizard || showResumeOverlay) {
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
// Help overlay toggle with ? key (works globally)
|
|
327
|
-
if (input === "?") {
|
|
328
|
-
handleToggleHelp();
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
// PRD overlay toggle with P key (works globally when no other modal is open)
|
|
332
|
-
if ((input === "p" || input === "P") && !showHelpOverlay) {
|
|
333
|
-
handleTogglePrdOverlay();
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
// When help overlay is shown, only handle escape and ? to close
|
|
337
|
-
if (showHelpOverlay) {
|
|
338
|
-
if (key.escape) {
|
|
339
|
-
handleCloseHelp();
|
|
340
|
-
}
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
// When PRD overlay is shown, only handle escape and P to close
|
|
344
|
-
if (showPrdOverlay) {
|
|
345
|
-
if (key.escape) {
|
|
346
|
-
handleClosePrdOverlay();
|
|
347
|
-
}
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
if (key.ctrl && input === "s") {
|
|
351
|
-
// Toggle start/stop with Ctrl+S
|
|
352
|
-
if (status === "idle" || status === "stopped" || status === "crashed") {
|
|
353
|
-
spawn();
|
|
354
|
-
}
|
|
355
|
-
else if (status === "running") {
|
|
356
|
-
void stop();
|
|
357
|
-
}
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
// Track focus changes via Tab key
|
|
361
|
-
if (key.tab) {
|
|
362
|
-
setFocusedPane((current) => (current === 0 ? 1 : 0));
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
// Handler for game state updates from games
|
|
367
|
-
const { setGameState } = useGameStatus();
|
|
368
|
-
const handleGameStateChange = useCallback((update) => {
|
|
369
|
-
setGameState(update);
|
|
370
|
-
}, [setGameState]);
|
|
371
|
-
// Handler for starting a new loop from game selector menu
|
|
372
|
-
const handleStartNewLoop = useCallback(() => {
|
|
373
|
-
// Clear any existing loop state and start setup wizard
|
|
374
|
-
loopState.clear();
|
|
375
|
-
setSkipOnboarding(true); // Skip onboarding for users starting new loops
|
|
376
|
-
setShowSetupWizard(true);
|
|
377
|
-
}, [loopState]);
|
|
378
|
-
// Handler for viewing current loop from game selector menu
|
|
379
|
-
const handleViewCurrentLoop = useCallback(() => {
|
|
380
|
-
// Show the PRD overlay to view current loop details
|
|
381
|
-
setShowPrdOverlay(true);
|
|
382
|
-
}, []);
|
|
383
|
-
// Determine effective loop status for status bar
|
|
384
|
-
const effectiveLoopStatus = useMemo(() => {
|
|
385
|
-
// If process is running, use ralph loop status, otherwise use process status
|
|
386
|
-
if (status === "running") {
|
|
387
|
-
return ralphLoop.state.status;
|
|
388
|
-
}
|
|
389
|
-
return status;
|
|
390
|
-
}, [status, ralphLoop.state.status]);
|
|
391
|
-
// Determine if games are enabled (only after explicit loop start)
|
|
392
|
-
// Games are disabled during: setup wizard, resume overlay
|
|
393
|
-
// Games are enabled only after explicit loop start (user completes setup wizard)
|
|
394
|
-
const gamesEnabled = useMemo(() => {
|
|
395
|
-
// Games are disabled during any setup flow
|
|
396
|
-
if (showSetupWizard || showResumeOverlay) {
|
|
397
|
-
return false;
|
|
398
|
-
}
|
|
399
|
-
// Games are enabled only when there's an active loop with tasks
|
|
400
|
-
// (set by handleSetupWizardComplete or by resuming an existing loop)
|
|
401
|
-
return loopState.hasLoop && loopState.state.tasks.length > 0;
|
|
402
|
-
}, [showSetupWizard, showResumeOverlay, loopState.hasLoop, loopState.state.tasks.length]);
|
|
403
|
-
// Determine current hotkey context for status bar
|
|
404
|
-
const currentHotkeyContext = useMemo(() => {
|
|
405
|
-
// Setup wizard (interview/onboarding flows) take highest priority
|
|
406
|
-
if (showSetupWizard) {
|
|
407
|
-
return "interview";
|
|
408
|
-
}
|
|
409
|
-
// Overlays/modals
|
|
410
|
-
if (showHelpOverlay || showPrdOverlay || showResumeOverlay) {
|
|
411
|
-
return "overlay";
|
|
412
|
-
}
|
|
413
|
-
// Loop is active and running
|
|
414
|
-
if (status === "running") {
|
|
415
|
-
return "loop";
|
|
416
|
-
}
|
|
417
|
-
// Default state - game context is auto-detected by StatusBar based on gameState
|
|
418
|
-
return "default";
|
|
419
|
-
}, [showSetupWizard, showHelpOverlay, showPrdOverlay, showResumeOverlay, status]);
|
|
420
|
-
return (_jsxs(ThemeProvider, { config: config, children: [showSetupWizard && (_jsx(Box, { position: "absolute", width: terminalSize.width, height: terminalSize.height, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsx(SetupWizard, { isVisible: showSetupWizard, skipOnboarding: skipOnboarding, onComplete: handleSetupWizardComplete, onCancel: handleSetupWizardCancel, hasFocus: showSetupWizard, dimensions: {
|
|
421
|
-
width: terminalSize.width,
|
|
422
|
-
height: terminalSize.height,
|
|
423
|
-
} }) })), showResumeOverlay && !showSetupWizard && (_jsx(Box, { position: "absolute", width: terminalSize.width, height: terminalSize.height, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsx(ResumeOverlay, { isVisible: showResumeOverlay, loopState: loopState.state, onAction: handleResumeAction, hasFocus: showResumeOverlay, dimensions: {
|
|
424
|
-
width: terminalSize.width,
|
|
425
|
-
height: terminalSize.height,
|
|
426
|
-
} }) })), showPrdOverlay && !showSetupWizard && !showResumeOverlay && (_jsx(Box, { position: "absolute", width: terminalSize.width, height: terminalSize.height, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsx(PrdOverlay, { isVisible: showPrdOverlay, loopState: loopState.state, onAction: handlePrdOverlayAction, onClose: handleClosePrdOverlay, hasFocus: showPrdOverlay, dimensions: {
|
|
427
|
-
width: terminalSize.width,
|
|
428
|
-
height: terminalSize.height,
|
|
429
|
-
} }) })), showHelpOverlay &&
|
|
430
|
-
!showSetupWizard &&
|
|
431
|
-
!showResumeOverlay &&
|
|
432
|
-
!showPrdOverlay && (_jsx(Box, { position: "absolute", marginTop: 1, marginLeft: 2, children: _jsx(HelpOverlay, { hasFocus: showHelpOverlay, onClose: handleCloseHelp }) })), hasNotifications &&
|
|
433
|
-
!showSetupWizard &&
|
|
434
|
-
!showResumeOverlay &&
|
|
435
|
-
!showPrdOverlay && (_jsx(Box, { position: "absolute", marginTop: 3, marginLeft: 5, children: NotificationComponent })), _jsx(Layout, { gameArea: _jsx(GameArea, { logs: output, hasFocus: focusedPane === 0 &&
|
|
436
|
-
!showHelpOverlay &&
|
|
437
|
-
!showSetupWizard &&
|
|
438
|
-
!showResumeOverlay &&
|
|
439
|
-
!showPrdOverlay, dimensions: gameDimensions, loopAttention: loopAttention, onLoopAlertDismiss: handleLoopAlertDismiss, config: config, onConfigChange: handleConfigChange, onConfigSave: handleConfigSave, onAchievementUnlock: addAchievements, onGameStateChange: handleGameStateChange, gamesEnabled: gamesEnabled, hasActiveLoop: loopState.hasLoop && loopState.state.tasks.length > 0, onStartNewLoop: handleStartNewLoop, onViewCurrentLoop: handleViewCurrentLoop }), managementArea: _jsx(LoopManagementPanel, { loopState: ralphLoop.state, needsAttention: ralphLoop.needsAttention, statusMessage: ralphLoop.statusMessage, progressString: ralphLoop.progressString, processStatus: status, onStart: spawn, onStop: () => void stop() }), gameTitle: "Games", managementTitle: "Loop Management", header: _jsx(Header, {}), footer: _jsx(StatusBarFooter, { loopStatus: effectiveLoopStatus, needsAttention: ralphLoop.needsAttention, hotkeyContext: currentHotkeyContext }), layoutOptions: layoutOptions, handleInput: !showHelpOverlay &&
|
|
440
|
-
!showSetupWizard &&
|
|
441
|
-
!showResumeOverlay &&
|
|
442
|
-
!showPrdOverlay })] }));
|
|
443
|
-
}
|
|
444
|
-
/** App wrapper that provides GameStatusProvider and LoopInfoProvider context */
|
|
445
|
-
function App() {
|
|
446
|
-
return (_jsx(GameStatusProvider, { children: _jsx(LoopInfoProvider, { children: _jsx(AppContent, {}) }) }));
|
|
447
|
-
}
|
|
448
|
-
// ============================================================================
|
|
449
|
-
// CLI PARSING AND STARTUP
|
|
450
|
-
// ============================================================================
|
|
9
|
+
import { render } from "ink";
|
|
10
|
+
import { parseCLI, printHelp, printVersion, printError } from "./cli.js";
|
|
11
|
+
import { AppNew } from "./AppNew.js";
|
|
451
12
|
/**
|
|
452
13
|
* Main entry point - parses CLI args and renders the app
|
|
453
14
|
*/
|
|
@@ -469,8 +30,8 @@ function main() {
|
|
|
469
30
|
printVersion();
|
|
470
31
|
process.exit(0);
|
|
471
32
|
}
|
|
472
|
-
// Render the app
|
|
473
|
-
render(_jsx(
|
|
33
|
+
// Render the app
|
|
34
|
+
render(_jsx(AppNew, {}));
|
|
474
35
|
}
|
|
475
36
|
// Run main
|
|
476
37
|
main();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;AACA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,SAAS,IAAI;IACX,sBAAsB;IACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEnC,wBAAwB;IACxB,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,KAAC,MAAM,KAAG,CAAC,CAAC;AACrB,CAAC;AAED,WAAW;AACX,IAAI,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brainrot-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "A terminal-native CLI that wraps Claude Code with built-in games to play while agents work",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -54,5 +54,6 @@
|
|
|
54
54
|
"typescript": "^5.9.3",
|
|
55
55
|
"typescript-eslint": "^8.53.0",
|
|
56
56
|
"vitest": "^4.0.17"
|
|
57
|
-
}
|
|
57
|
+
},
|
|
58
|
+
"packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
|
|
58
59
|
}
|