brainrot-cli 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/AchievementNotification.d.ts.map +1 -1
  2. package/dist/AchievementNotification.js.map +1 -1
  3. package/dist/DynamicInterviewFlow.d.ts +66 -0
  4. package/dist/DynamicInterviewFlow.d.ts.map +1 -0
  5. package/dist/DynamicInterviewFlow.js +352 -0
  6. package/dist/DynamicInterviewFlow.js.map +1 -0
  7. package/dist/FeaturePromptScreen.d.ts +24 -0
  8. package/dist/FeaturePromptScreen.d.ts.map +1 -0
  9. package/dist/FeaturePromptScreen.js +117 -0
  10. package/dist/FeaturePromptScreen.js.map +1 -0
  11. package/dist/GameSelector.d.ts +9 -1
  12. package/dist/GameSelector.d.ts.map +1 -1
  13. package/dist/GameSelector.js +116 -19
  14. package/dist/GameSelector.js.map +1 -1
  15. package/dist/HelpOverlay.d.ts.map +1 -1
  16. package/dist/HelpOverlay.js +5 -2
  17. package/dist/HelpOverlay.js.map +1 -1
  18. package/dist/InterviewQuestion.d.ts +36 -0
  19. package/dist/InterviewQuestion.d.ts.map +1 -0
  20. package/dist/InterviewQuestion.js +148 -0
  21. package/dist/InterviewQuestion.js.map +1 -0
  22. package/dist/Layout.d.ts +1 -1
  23. package/dist/Layout.d.ts.map +1 -1
  24. package/dist/Layout.js +4 -4
  25. package/dist/Layout.js.map +1 -1
  26. package/dist/LogViewer.d.ts.map +1 -1
  27. package/dist/LogViewer.js +2 -2
  28. package/dist/LogViewer.js.map +1 -1
  29. package/dist/LoopAlertOverlay.d.ts +1 -1
  30. package/dist/LoopAlertOverlay.d.ts.map +1 -1
  31. package/dist/LoopAlertOverlay.js +1 -1
  32. package/dist/LoopAlertOverlay.js.map +1 -1
  33. package/dist/LoopManagementPanel.d.ts.map +1 -1
  34. package/dist/LoopManagementPanel.js.map +1 -1
  35. package/dist/OnboardingTutorial.d.ts +23 -0
  36. package/dist/OnboardingTutorial.d.ts.map +1 -0
  37. package/dist/OnboardingTutorial.js +165 -0
  38. package/dist/OnboardingTutorial.js.map +1 -0
  39. package/dist/PrdGenerationScreen.d.ts +43 -0
  40. package/dist/PrdGenerationScreen.d.ts.map +1 -0
  41. package/dist/PrdGenerationScreen.js +411 -0
  42. package/dist/PrdGenerationScreen.js.map +1 -0
  43. package/dist/PrdOverlay.d.ts +29 -0
  44. package/dist/PrdOverlay.d.ts.map +1 -0
  45. package/dist/PrdOverlay.js +174 -0
  46. package/dist/PrdOverlay.js.map +1 -0
  47. package/dist/PreStartReviewScreen.d.ts +29 -0
  48. package/dist/PreStartReviewScreen.d.ts.map +1 -0
  49. package/dist/PreStartReviewScreen.js +161 -0
  50. package/dist/PreStartReviewScreen.js.map +1 -0
  51. package/dist/ResumeOverlay.d.ts +26 -0
  52. package/dist/ResumeOverlay.d.ts.map +1 -0
  53. package/dist/ResumeOverlay.js +163 -0
  54. package/dist/ResumeOverlay.js.map +1 -0
  55. package/dist/SettingsMenu.d.ts.map +1 -1
  56. package/dist/SettingsMenu.js +14 -7
  57. package/dist/SettingsMenu.js.map +1 -1
  58. package/dist/SetupWizard.d.ts +41 -0
  59. package/dist/SetupWizard.d.ts.map +1 -0
  60. package/dist/SetupWizard.js +167 -0
  61. package/dist/SetupWizard.js.map +1 -0
  62. package/dist/SplitPane.d.ts.map +1 -1
  63. package/dist/SplitPane.js +6 -2
  64. package/dist/SplitPane.js.map +1 -1
  65. package/dist/StatsMenu.d.ts.map +1 -1
  66. package/dist/StatsMenu.js +24 -6
  67. package/dist/StatsMenu.js.map +1 -1
  68. package/dist/StatusBar.d.ts +45 -2
  69. package/dist/StatusBar.d.ts.map +1 -1
  70. package/dist/StatusBar.js +193 -23
  71. package/dist/StatusBar.js.map +1 -1
  72. package/dist/TaskBreakdownScreen.d.ts +27 -0
  73. package/dist/TaskBreakdownScreen.d.ts.map +1 -0
  74. package/dist/TaskBreakdownScreen.js +96 -0
  75. package/dist/TaskBreakdownScreen.js.map +1 -0
  76. package/dist/cli.d.ts.map +1 -1
  77. package/dist/cli.js +3 -1
  78. package/dist/cli.js.map +1 -1
  79. package/dist/config.d.ts.map +1 -1
  80. package/dist/config.js.map +1 -1
  81. package/dist/games/MinesweeperGame.d.ts +1 -1
  82. package/dist/games/MinesweeperGame.d.ts.map +1 -1
  83. package/dist/games/MinesweeperGame.js +30 -10
  84. package/dist/games/MinesweeperGame.js.map +1 -1
  85. package/dist/games/PongGame.d.ts +1 -1
  86. package/dist/games/PongGame.d.ts.map +1 -1
  87. package/dist/games/PongGame.js +7 -2
  88. package/dist/games/PongGame.js.map +1 -1
  89. package/dist/games/SnakeGame.d.ts +1 -1
  90. package/dist/games/SnakeGame.d.ts.map +1 -1
  91. package/dist/games/SnakeGame.js +12 -4
  92. package/dist/games/SnakeGame.js.map +1 -1
  93. package/dist/games/TetrisGame.d.ts +1 -1
  94. package/dist/games/TetrisGame.d.ts.map +1 -1
  95. package/dist/games/TetrisGame.js +22 -5
  96. package/dist/games/TetrisGame.js.map +1 -1
  97. package/dist/high-scores.d.ts.map +1 -1
  98. package/dist/high-scores.js.map +1 -1
  99. package/dist/index.js +228 -15
  100. package/dist/index.js.map +1 -1
  101. package/dist/loop-state.d.ts +137 -0
  102. package/dist/loop-state.d.ts.map +1 -0
  103. package/dist/loop-state.js +228 -0
  104. package/dist/loop-state.js.map +1 -0
  105. package/dist/ralph-loop-parser.d.ts.map +1 -1
  106. package/dist/ralph-loop-parser.js +4 -2
  107. package/dist/ralph-loop-parser.js.map +1 -1
  108. package/dist/stats.d.ts.map +1 -1
  109. package/dist/stats.js.map +1 -1
  110. package/dist/styled-components.d.ts +1 -1
  111. package/dist/styled-components.d.ts.map +1 -1
  112. package/dist/styled-components.js +5 -3
  113. package/dist/styled-components.js.map +1 -1
  114. package/dist/theme.d.ts.map +1 -1
  115. package/dist/theme.js +15 -2
  116. package/dist/theme.js.map +1 -1
  117. package/dist/themes.d.ts.map +1 -1
  118. package/dist/themes.js.map +1 -1
  119. package/dist/use-claude-code.d.ts.map +1 -1
  120. package/dist/use-claude-code.js +7 -1
  121. package/dist/use-claude-code.js.map +1 -1
  122. package/dist/use-config.d.ts.map +1 -1
  123. package/dist/use-config.js.map +1 -1
  124. package/dist/use-loop-state.d.ts +55 -0
  125. package/dist/use-loop-state.d.ts.map +1 -0
  126. package/dist/use-loop-state.js +208 -0
  127. package/dist/use-loop-state.js.map +1 -0
  128. package/dist/use-stats.d.ts.map +1 -1
  129. package/dist/use-stats.js.map +1 -1
  130. package/dist/useTheme.d.ts.map +1 -1
  131. package/dist/useTheme.js.map +1 -1
  132. package/package.json +1 -1
  133. package/dist/__tests__/ralph-loop-parser.test.d.ts +0 -2
  134. package/dist/__tests__/ralph-loop-parser.test.d.ts.map +0 -1
  135. package/dist/__tests__/ralph-loop-parser.test.js +0 -143
  136. package/dist/__tests__/ralph-loop-parser.test.js.map +0 -1
@@ -1,143 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { createInitialState, parseOutput, parseOutputLines, needsUserAttention, getStatusMessage, getProgressString, } from "../ralph-loop-parser.js";
3
- describe("ralph-loop-parser", () => {
4
- describe("createInitialState", () => {
5
- it("should create a state with idle status", () => {
6
- const state = createInitialState();
7
- expect(state.status).toBe("idle");
8
- });
9
- it("should create a state with no user attention needed", () => {
10
- const state = createInitialState();
11
- expect(state.userAttention.needed).toBe(false);
12
- });
13
- it("should create a state with zero progress", () => {
14
- const state = createInitialState();
15
- expect(state.progress.currentStep).toBe(0);
16
- expect(state.progress.totalSteps).toBeNull();
17
- });
18
- });
19
- describe("parseOutput", () => {
20
- it("should detect loop started status", () => {
21
- const state = createInitialState();
22
- const newState = parseOutput("ralph loop started", state);
23
- expect(newState.status).toBe("running");
24
- });
25
- it("should detect loop completed status", () => {
26
- const state = createInitialState();
27
- const newState = parseOutput("loop completed successfully", state);
28
- expect(newState.status).toBe("completed");
29
- });
30
- it("should detect loop errored status", () => {
31
- const state = createInitialState();
32
- const newState = parseOutput("loop error: something went wrong", state);
33
- expect(newState.status).toBe("errored");
34
- });
35
- it("should detect waiting for input status", () => {
36
- const state = createInitialState();
37
- const newState = parseOutput("waiting for user input", state);
38
- expect(newState.status).toBe("waiting_for_input");
39
- });
40
- it("should parse step progress", () => {
41
- const state = createInitialState();
42
- const newState = parseOutput("Step 3 of 10", state);
43
- expect(newState.progress.currentStep).toBe(3);
44
- expect(newState.progress.totalSteps).toBe(10);
45
- expect(newState.progress.percentage).toBe(30);
46
- });
47
- it("should parse todo progress", () => {
48
- const state = createInitialState();
49
- const newState = parseOutput("Todos: 5/20", state);
50
- expect(newState.progress.currentStep).toBe(5);
51
- expect(newState.progress.totalSteps).toBe(20);
52
- expect(newState.progress.percentage).toBe(25);
53
- });
54
- it("should detect tool usage", () => {
55
- const state = createInitialState();
56
- const newState = parseOutput("using tool: ReadFile", state);
57
- expect(newState.agentActivity.isActive).toBe(true);
58
- expect(newState.agentActivity.toolName).toBe("ReadFile");
59
- });
60
- it("should detect error messages requiring attention", () => {
61
- const state = createInitialState();
62
- const newState = parseOutput("Error: file not found", state);
63
- expect(newState.userAttention.needed).toBe(true);
64
- expect(newState.userAttention.type).toBe("error");
65
- });
66
- it("should handle empty output gracefully", () => {
67
- const state = createInitialState();
68
- const newState = parseOutput("", state);
69
- expect(newState).toEqual(state);
70
- });
71
- it("should strip ANSI escape sequences", () => {
72
- const state = createInitialState();
73
- const newState = parseOutput("\x1b[32mloop started\x1b[0m", state);
74
- expect(newState.status).toBe("running");
75
- });
76
- });
77
- describe("parseOutputLines", () => {
78
- it("should accumulate state across multiple lines", () => {
79
- const lines = ["ralph loop started", "Step 2 of 5", "using tool: Write"];
80
- const state = parseOutputLines(lines);
81
- expect(state.status).toBe("running");
82
- expect(state.progress.currentStep).toBe(2);
83
- expect(state.agentActivity.toolName).toBe("Write");
84
- });
85
- });
86
- describe("needsUserAttention", () => {
87
- it("should return true when userAttention.needed is true", () => {
88
- const state = createInitialState();
89
- state.userAttention.needed = true;
90
- expect(needsUserAttention(state)).toBe(true);
91
- });
92
- it("should return true when status is waiting_for_input", () => {
93
- const state = createInitialState();
94
- state.status = "waiting_for_input";
95
- expect(needsUserAttention(state)).toBe(true);
96
- });
97
- it("should return true when status is errored", () => {
98
- const state = createInitialState();
99
- state.status = "errored";
100
- expect(needsUserAttention(state)).toBe(true);
101
- });
102
- it("should return false for normal running state", () => {
103
- const state = createInitialState();
104
- state.status = "running";
105
- expect(needsUserAttention(state)).toBe(false);
106
- });
107
- });
108
- describe("getStatusMessage", () => {
109
- it("should return 'Ready to start' for idle status", () => {
110
- const state = createInitialState();
111
- expect(getStatusMessage(state)).toBe("Ready to start");
112
- });
113
- it("should return 'Completed' for completed status", () => {
114
- const state = createInitialState();
115
- state.status = "completed";
116
- expect(getStatusMessage(state)).toBe("Completed");
117
- });
118
- it("should return current action when running with activity", () => {
119
- const state = createInitialState();
120
- state.status = "running";
121
- state.agentActivity.currentAction = "Reading files";
122
- expect(getStatusMessage(state)).toBe("Reading files");
123
- });
124
- });
125
- describe("getProgressString", () => {
126
- it("should return step progress format", () => {
127
- const state = createInitialState();
128
- state.progress.currentStep = 3;
129
- state.progress.totalSteps = 10;
130
- expect(getProgressString(state)).toBe("3/10");
131
- });
132
- it("should return percentage format when no total steps", () => {
133
- const state = createInitialState();
134
- state.progress.percentage = 75;
135
- expect(getProgressString(state)).toBe("75%");
136
- });
137
- it("should return null when no progress info", () => {
138
- const state = createInitialState();
139
- expect(getProgressString(state)).toBeNull();
140
- });
141
- });
142
- });
143
- //# sourceMappingURL=ralph-loop-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ralph-loop-parser.test.js","sourceRoot":"","sources":["../../src/__tests__/ralph-loop-parser.test.ts"],"names":[],"mappings":"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"}