ralph-cursor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +724 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +60 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/doctor.d.ts +3 -0
  7. package/dist/commands/doctor.d.ts.map +1 -0
  8. package/dist/commands/doctor.js +69 -0
  9. package/dist/commands/doctor.js.map +1 -0
  10. package/dist/commands/init.d.ts +3 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +162 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/logs.d.ts +3 -0
  15. package/dist/commands/logs.d.ts.map +1 -0
  16. package/dist/commands/logs.js +28 -0
  17. package/dist/commands/logs.js.map +1 -0
  18. package/dist/commands/loop.d.ts +3 -0
  19. package/dist/commands/loop.d.ts.map +1 -0
  20. package/dist/commands/loop.js +186 -0
  21. package/dist/commands/loop.js.map +1 -0
  22. package/dist/commands/once.d.ts +3 -0
  23. package/dist/commands/once.d.ts.map +1 -0
  24. package/dist/commands/once.js +187 -0
  25. package/dist/commands/once.js.map +1 -0
  26. package/dist/commands/run.d.ts +3 -0
  27. package/dist/commands/run.d.ts.map +1 -0
  28. package/dist/commands/run.js +328 -0
  29. package/dist/commands/run.js.map +1 -0
  30. package/dist/commands/status.d.ts +3 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +33 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/commands/task.d.ts +3 -0
  35. package/dist/commands/task.d.ts.map +1 -0
  36. package/dist/commands/task.js +161 -0
  37. package/dist/commands/task.js.map +1 -0
  38. package/dist/lib/config.d.ts +8 -0
  39. package/dist/lib/config.d.ts.map +1 -0
  40. package/dist/lib/config.js +48 -0
  41. package/dist/lib/config.js.map +1 -0
  42. package/dist/lib/last-run.d.ts +12 -0
  43. package/dist/lib/last-run.d.ts.map +1 -0
  44. package/dist/lib/last-run.js +33 -0
  45. package/dist/lib/last-run.js.map +1 -0
  46. package/dist/lib/ralph-dir.d.ts +6 -0
  47. package/dist/lib/ralph-dir.d.ts.map +1 -0
  48. package/dist/lib/ralph-dir.js +96 -0
  49. package/dist/lib/ralph-dir.js.map +1 -0
  50. package/dist/lib/spawn.d.ts +11 -0
  51. package/dist/lib/spawn.d.ts.map +1 -0
  52. package/dist/lib/spawn.js +29 -0
  53. package/dist/lib/spawn.js.map +1 -0
  54. package/dist/lib/tail.d.ts +9 -0
  55. package/dist/lib/tail.d.ts.map +1 -0
  56. package/dist/lib/tail.js +58 -0
  57. package/dist/lib/tail.js.map +1 -0
  58. package/dist/loop/index.d.ts +32 -0
  59. package/dist/loop/index.d.ts.map +1 -0
  60. package/dist/loop/index.js +165 -0
  61. package/dist/loop/index.js.map +1 -0
  62. package/dist/loop/prompt.d.ts +5 -0
  63. package/dist/loop/prompt.d.ts.map +1 -0
  64. package/dist/loop/prompt.js +77 -0
  65. package/dist/loop/prompt.js.map +1 -0
  66. package/dist/loop/retry.d.ts +22 -0
  67. package/dist/loop/retry.d.ts.map +1 -0
  68. package/dist/loop/retry.js +65 -0
  69. package/dist/loop/retry.js.map +1 -0
  70. package/dist/parallel/lock.d.ts +7 -0
  71. package/dist/parallel/lock.d.ts.map +1 -0
  72. package/dist/parallel/lock.js +110 -0
  73. package/dist/parallel/lock.js.map +1 -0
  74. package/dist/parallel/merge.d.ts +5 -0
  75. package/dist/parallel/merge.d.ts.map +1 -0
  76. package/dist/parallel/merge.js +39 -0
  77. package/dist/parallel/merge.js.map +1 -0
  78. package/dist/parallel/run.d.ts +18 -0
  79. package/dist/parallel/run.d.ts.map +1 -0
  80. package/dist/parallel/run.js +407 -0
  81. package/dist/parallel/run.js.map +1 -0
  82. package/dist/parallel/worktree.d.ts +12 -0
  83. package/dist/parallel/worktree.d.ts.map +1 -0
  84. package/dist/parallel/worktree.js +69 -0
  85. package/dist/parallel/worktree.js.map +1 -0
  86. package/dist/stream-parser/index.d.ts +18 -0
  87. package/dist/stream-parser/index.d.ts.map +1 -0
  88. package/dist/stream-parser/index.js +248 -0
  89. package/dist/stream-parser/index.js.map +1 -0
  90. package/dist/task-parser/index.d.ts +21 -0
  91. package/dist/task-parser/index.d.ts.map +1 -0
  92. package/dist/task-parser/index.js +195 -0
  93. package/dist/task-parser/index.js.map +1 -0
  94. package/package.json +44 -0
@@ -0,0 +1,187 @@
1
+ import { Command } from "commander";
2
+ import { resolve } from "path";
3
+ import { existsSync, readFileSync } from "fs";
4
+ import { execSync } from "child_process";
5
+ import { runIteration } from "../loop/index.js";
6
+ import { ensureRalphDir } from "../lib/ralph-dir.js";
7
+ import { checkTaskComplete, getTaskFilePath, getProgress, countRemaining } from "../task-parser/index.js";
8
+ import { loadConfig } from "../lib/config.js";
9
+ /** Prerequisite checks: cursor-agent, git, task file, .ralph writable. */
10
+ function checkPrerequisites(workspace, taskFilePath) {
11
+ if (!existsSync(taskFilePath)) {
12
+ console.error(`❌ No RALPH_TASK.md found in ${workspace}`);
13
+ console.error("");
14
+ console.error("Create a task file first:");
15
+ console.error(" cat > RALPH_TASK.md << 'EOF'");
16
+ console.error(" ---");
17
+ console.error(" task: Your task description");
18
+ console.error(" test_command: \"pnpm test\"");
19
+ console.error(" ---");
20
+ console.error(" # Task");
21
+ console.error(" ## Success Criteria");
22
+ console.error(" 1. [ ] First thing to do");
23
+ console.error(" 2. [ ] Second thing to do");
24
+ console.error(" EOF");
25
+ return false;
26
+ }
27
+ try {
28
+ execSync("which cursor-agent", { stdio: "pipe" });
29
+ }
30
+ catch {
31
+ console.error("❌ cursor-agent CLI not found");
32
+ console.error("");
33
+ console.error("Install via:");
34
+ console.error(" curl https://cursor.com/install -fsS | bash");
35
+ return false;
36
+ }
37
+ try {
38
+ execSync("git rev-parse --git-dir", { cwd: workspace, stdio: "pipe" });
39
+ }
40
+ catch {
41
+ console.error("❌ Not a git repository");
42
+ console.error(" Ralph requires git for state persistence.");
43
+ return false;
44
+ }
45
+ return true;
46
+ }
47
+ function showTaskSummary(workspace, taskPath) {
48
+ const path = getTaskFilePath(workspace, taskPath);
49
+ if (!existsSync(path))
50
+ return;
51
+ const content = readFileSync(path, "utf-8");
52
+ const lines = content.split("\n").slice(0, 30);
53
+ console.log("📋 Task Summary:");
54
+ console.log("─────────────────────────────────────────────────────────────────");
55
+ console.log(lines.join("\n"));
56
+ console.log("─────────────────────────────────────────────────────────────────");
57
+ console.log("");
58
+ const progress = getProgress(workspace, taskPath);
59
+ const [done, total] = progress.split(":").map(Number);
60
+ const remaining = countRemaining(workspace, taskPath);
61
+ console.log(`Progress: ${done} / ${total} criteria complete (${remaining} remaining)`);
62
+ console.log("");
63
+ }
64
+ export function onceCommand() {
65
+ return new Command("once")
66
+ .description("Run a single iteration (no loop)")
67
+ .argument("[workspace]", "Project directory (default: current)")
68
+ .option("-m, --model <model>", "Model to use")
69
+ .option("--task <path>", "Path to task file")
70
+ .action(async (workspaceArg, opts) => {
71
+ const workspace = workspaceArg ? resolve(process.cwd(), workspaceArg) : process.cwd();
72
+ if (!existsSync(workspace)) {
73
+ console.error("Workspace not found:", workspace);
74
+ process.exit(2);
75
+ }
76
+ const sep = "═══════════════════════════════════════════════════════════════════";
77
+ console.log(sep);
78
+ console.log("🐛 Ralph Wiggum: Single Iteration (Human-in-the-Loop)");
79
+ console.log(sep);
80
+ console.log("");
81
+ console.log(" This runs ONE iteration, then stops for your review.");
82
+ console.log(" Use this to test your task before going AFK.");
83
+ console.log("");
84
+ console.log(sep);
85
+ console.log("");
86
+ const taskFile = getTaskFilePath(workspace, opts.task);
87
+ if (!checkPrerequisites(workspace, taskFile)) {
88
+ process.exit(1);
89
+ }
90
+ ensureRalphDir(workspace);
91
+ const config = loadConfig(workspace);
92
+ console.log("Workspace:", workspace);
93
+ console.log("Model: ", opts.model ?? config.default_model);
94
+ console.log("");
95
+ showTaskSummary(workspace, opts.task);
96
+ const statusBefore = checkTaskComplete(workspace, opts.task);
97
+ if (statusBefore === "COMPLETE") {
98
+ console.log("🎉 Task already complete! All criteria are checked.");
99
+ process.exit(0);
100
+ }
101
+ const readline = await import("readline");
102
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
103
+ const answer = await new Promise((resolve) => {
104
+ rl.question("Run single iteration? [Y/n] ", (a) => resolve(a.trim()));
105
+ });
106
+ rl.close();
107
+ if (answer.toLowerCase() === "n" || answer.toLowerCase() === "no") {
108
+ console.log("Aborted.");
109
+ process.exit(0);
110
+ }
111
+ try {
112
+ const status = execSync("git status --porcelain", { cwd: workspace, encoding: "utf-8" });
113
+ if (status.trim()) {
114
+ console.log("📦 Committing uncommitted changes...");
115
+ execSync("git add -A", { cwd: workspace });
116
+ execSync("git commit -m \"ralph: checkpoint before single iteration\"", { cwd: workspace });
117
+ }
118
+ }
119
+ catch {
120
+ // not a git repo or nothing to commit
121
+ }
122
+ console.log("");
123
+ console.log("🚀 Running single iteration...");
124
+ console.log("");
125
+ const iteration = 1;
126
+ const signal = await runIteration({
127
+ workspace,
128
+ iteration,
129
+ model: opts.model ?? config.default_model,
130
+ taskFilePath: opts.task,
131
+ warnThreshold: config.warn_threshold,
132
+ rotateThreshold: config.rotate_threshold,
133
+ });
134
+ const status = checkTaskComplete(workspace, opts.task);
135
+ console.log("");
136
+ console.log("═══════════════════════════════════════════════════════════════════");
137
+ console.log("📋 Single Iteration Complete");
138
+ console.log("═══════════════════════════════════════════════════════════════════");
139
+ console.log("");
140
+ if (signal === "COMPLETE") {
141
+ if (status === "COMPLETE") {
142
+ console.log("🎉 Task completed in single iteration!");
143
+ console.log("");
144
+ console.log("All criteria are checked. You're done!");
145
+ }
146
+ else {
147
+ console.log("⚠️ Agent signaled complete but some criteria remain unchecked.");
148
+ console.log(" Review the results and run again if needed.");
149
+ }
150
+ }
151
+ else if (signal === "GUTTER") {
152
+ console.log("🚨 Gutter detected - agent got stuck.");
153
+ console.log("");
154
+ console.log("Review .ralph/errors.log and consider:");
155
+ console.log(" 1. Adding a guardrail to .ralph/guardrails.md");
156
+ console.log(" 2. Simplifying the task");
157
+ console.log(" 3. Fixing the blocking issue manually");
158
+ }
159
+ else if (signal === "ROTATE") {
160
+ console.log("🔄 Context rotation was triggered.");
161
+ console.log("");
162
+ console.log("The agent used a lot of context. This is normal for complex tasks.");
163
+ console.log("Review the progress and run again or proceed to full loop.");
164
+ }
165
+ else {
166
+ if (status === "COMPLETE") {
167
+ console.log("🎉 Task completed in single iteration!");
168
+ }
169
+ else {
170
+ const remaining = status.startsWith("INCOMPLETE:") ? status.slice("INCOMPLETE:".length) : "?";
171
+ console.log(`Agent finished with ${remaining} criteria remaining.`);
172
+ }
173
+ }
174
+ console.log("");
175
+ console.log("Review the changes:");
176
+ console.log(" • git log --oneline -5 # See recent commits");
177
+ console.log(" • git diff HEAD~1 # See changes");
178
+ console.log(" • cat .ralph/progress.md # See progress log");
179
+ console.log("");
180
+ console.log("Next steps:");
181
+ console.log(" • If satisfied: ralph-cursor run # Run full loop");
182
+ console.log(" • If issues: fix, update task/guardrails, ralph-cursor once again");
183
+ console.log("");
184
+ process.exit(0);
185
+ });
186
+ }
187
+ //# sourceMappingURL=once.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.js","sourceRoot":"","sources":["../../src/commands/once.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function runCommand(): Command;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EpC,wBAAgB,UAAU,IAAI,OAAO,CA2PpC"}
@@ -0,0 +1,328 @@
1
+ import { Command } from "commander";
2
+ import * as p from "@clack/prompts";
3
+ import { resolve } from "path";
4
+ import { existsSync, readFileSync } from "fs";
5
+ import { execSync } from "child_process";
6
+ import { runRalphLoop, runIteration } from "../loop/index.js";
7
+ import { runParallelTasks } from "../parallel/run.js";
8
+ import { ensureRalphDir, setIteration } from "../lib/ralph-dir.js";
9
+ import { checkTaskComplete, getTaskFilePath, getProgress, countRemaining } from "../task-parser/index.js";
10
+ import { readLastRun, writeLastRun } from "../lib/last-run.js";
11
+ import { loadConfig } from "../lib/config.js";
12
+ const MODELS = [
13
+ "opus-4.5-thinking",
14
+ "sonnet-4.5-thinking",
15
+ "gpt-5.2-high",
16
+ "composer-1",
17
+ "Custom...",
18
+ ];
19
+ function bail() {
20
+ p.cancel("Aborted.");
21
+ process.exit(0);
22
+ }
23
+ /** Prerequisite checks: cursor-agent, git, task file, .ralph writable. */
24
+ function checkPrerequisites(workspace, taskFilePath) {
25
+ if (!existsSync(taskFilePath)) {
26
+ console.error(`❌ No RALPH_TASK.md found in ${workspace}`);
27
+ console.error("");
28
+ console.error("Create a task file first:");
29
+ console.error(" cat > RALPH_TASK.md << 'EOF'");
30
+ console.error(" ---");
31
+ console.error(" task: Your task description");
32
+ console.error(" test_command: \"pnpm test\"");
33
+ console.error(" ---");
34
+ console.error(" # Task");
35
+ console.error(" ## Success Criteria");
36
+ console.error(" 1. [ ] First thing to do");
37
+ console.error(" 2. [ ] Second thing to do");
38
+ console.error(" EOF");
39
+ return false;
40
+ }
41
+ try {
42
+ execSync("which cursor-agent", { stdio: "pipe" });
43
+ }
44
+ catch {
45
+ console.error("❌ cursor-agent CLI not found");
46
+ console.error("");
47
+ console.error("Install via:");
48
+ console.error(" curl https://cursor.com/install -fsS | bash");
49
+ return false;
50
+ }
51
+ try {
52
+ execSync("git rev-parse --git-dir", { cwd: workspace, stdio: "pipe" });
53
+ }
54
+ catch {
55
+ console.error("❌ Not a git repository");
56
+ console.error(" Ralph requires git for state persistence.");
57
+ return false;
58
+ }
59
+ return true;
60
+ }
61
+ function showTaskSummary(workspace, taskPath) {
62
+ const path = getTaskFilePath(workspace, taskPath);
63
+ if (!existsSync(path))
64
+ return;
65
+ const content = readFileSync(path, "utf-8");
66
+ const lines = content.split("\n").slice(0, 30);
67
+ console.log("📋 Task Summary:");
68
+ console.log("─────────────────────────────────────────────────────────────────");
69
+ console.log(lines.join("\n"));
70
+ console.log("─────────────────────────────────────────────────────────────────");
71
+ console.log("");
72
+ const progress = getProgress(workspace, taskPath);
73
+ const [done, total] = progress.split(":").map(Number);
74
+ const remaining = countRemaining(workspace, taskPath);
75
+ console.log("Progress:", done, "/", total, "criteria complete (" + remaining + " remaining)");
76
+ console.log("");
77
+ }
78
+ export function runCommand() {
79
+ return new Command("run")
80
+ .description("Interactive run: prompts for model and options, then runs the loop")
81
+ .argument("[workspace]", "Project directory (default: current)")
82
+ .option("--task <path>", "Path to task file")
83
+ .option("--branch <name>", "Work on this branch (create if needed)")
84
+ .option("--pr", "Open PR when task complete (requires --branch)")
85
+ .option("-y, --yes", "Use defaults / last-run without prompting")
86
+ .action(async (workspaceArg, opts) => {
87
+ const workspace = workspaceArg ? resolve(process.cwd(), workspaceArg) : process.cwd();
88
+ if (!existsSync(workspace)) {
89
+ console.error("Workspace not found:", workspace);
90
+ process.exit(2);
91
+ }
92
+ const sep = "═══════════════════════════════════════════════════════════════════";
93
+ console.log("");
94
+ console.log(sep);
95
+ console.log("🐛 Ralph Wiggum: Autonomous Development Loop");
96
+ console.log(sep);
97
+ console.log("");
98
+ console.log(" 💡 Tip: use ralph-cursor loop for non-interactive (--branch, --pr, --parallel)");
99
+ console.log("");
100
+ const taskFile = getTaskFilePath(workspace, opts.task);
101
+ if (!checkPrerequisites(workspace, taskFile)) {
102
+ process.exit(1);
103
+ }
104
+ ensureRalphDir(workspace);
105
+ console.log("Workspace:", workspace);
106
+ console.log("");
107
+ showTaskSummary(workspace, opts.task);
108
+ const taskStatus = checkTaskComplete(workspace, opts.task);
109
+ if (taskStatus === "COMPLETE") {
110
+ console.log("🎉 Task already complete! All criteria are checked.");
111
+ process.exit(0);
112
+ }
113
+ if (taskStatus === "NO_TASK_FILE") {
114
+ process.exit(2);
115
+ }
116
+ if (opts.pr && !opts.branch) {
117
+ console.error("--pr requires --branch");
118
+ console.error(" Example: ralph-cursor run --branch feature/foo --pr");
119
+ process.exit(2);
120
+ }
121
+ const config = loadConfig(workspace);
122
+ const lastRun = readLastRun(workspace);
123
+ let model = opts.yes ? (lastRun?.model ?? config.default_model) : (lastRun?.model ?? config.default_model);
124
+ let maxIterations = opts.yes ? (lastRun?.max_iterations ?? config.max_iterations) : (lastRun?.max_iterations ?? config.max_iterations);
125
+ let useBranch = opts.branch ?? "";
126
+ let openPr = opts.pr ?? false;
127
+ let runSingleFirst = false;
128
+ let parallelMode = false;
129
+ let maxParallel = 3;
130
+ if (!opts.yes) {
131
+ p.intro("Configure your Ralph session");
132
+ let useLast = true;
133
+ if (lastRun) {
134
+ const useLastVal = await p.confirm({
135
+ message: `Use last settings? (model: ${lastRun.model}, iterations: ${lastRun.max_iterations})`,
136
+ initialValue: true,
137
+ });
138
+ if (p.isCancel(useLastVal))
139
+ bail();
140
+ useLast = useLastVal;
141
+ }
142
+ if (!useLast || !lastRun) {
143
+ const modelChoice = await p.select({
144
+ message: "Select model:",
145
+ options: MODELS.map((m) => ({ value: m, label: m })),
146
+ });
147
+ if (p.isCancel(modelChoice))
148
+ bail();
149
+ if (modelChoice === "Custom...") {
150
+ const customModel = await p.text({
151
+ message: "Enter model name:",
152
+ placeholder: config.default_model,
153
+ initialValue: config.default_model,
154
+ });
155
+ if (p.isCancel(customModel))
156
+ bail();
157
+ const customStr = typeof customModel === "string" ? customModel.trim() : "";
158
+ model = customStr || config.default_model;
159
+ }
160
+ else {
161
+ model = modelChoice;
162
+ }
163
+ p.log.success(`Model: ${model}`);
164
+ const iterVal = await p.text({
165
+ message: "Max iterations:",
166
+ placeholder: "20",
167
+ initialValue: String(config.max_iterations),
168
+ });
169
+ if (p.isCancel(iterVal))
170
+ bail();
171
+ const iterStr = typeof iterVal === "string" ? iterVal.trim() : "";
172
+ maxIterations = parseInt(iterStr, 10) || config.max_iterations;
173
+ p.log.success(`Max iterations: ${maxIterations}`);
174
+ }
175
+ const branchAns = await p.text({
176
+ message: "Work on new branch?",
177
+ placeholder: "leave empty for current",
178
+ });
179
+ if (p.isCancel(branchAns))
180
+ bail();
181
+ const branchStr = typeof branchAns === "string" ? branchAns.trim() : "";
182
+ if (branchStr) {
183
+ useBranch = branchStr;
184
+ p.log.success(`Branch: ${useBranch}`);
185
+ }
186
+ const openPrVal = await p.confirm({
187
+ message: "Open PR when complete?",
188
+ initialValue: false,
189
+ });
190
+ if (p.isCancel(openPrVal))
191
+ bail();
192
+ openPr = openPrVal;
193
+ if (openPr)
194
+ p.log.success("Will open PR when complete");
195
+ const singleVal = await p.confirm({
196
+ message: "Run single iteration first (then continue loop)?",
197
+ initialValue: false,
198
+ });
199
+ if (p.isCancel(singleVal))
200
+ bail();
201
+ runSingleFirst = singleVal;
202
+ if (runSingleFirst)
203
+ p.log.success("Will run single iteration first");
204
+ const parallelVal = await p.confirm({
205
+ message: "Run in parallel mode?",
206
+ initialValue: false,
207
+ });
208
+ if (p.isCancel(parallelVal))
209
+ bail();
210
+ parallelMode = parallelVal;
211
+ if (parallelMode) {
212
+ const maxPar = await p.text({
213
+ message: "Max parallel agents:",
214
+ placeholder: "3",
215
+ initialValue: "3",
216
+ });
217
+ if (p.isCancel(maxPar))
218
+ bail();
219
+ const maxParStr = typeof maxPar === "string" ? maxPar.trim() : "";
220
+ maxParallel = parseInt(maxParStr, 10) || 3;
221
+ p.log.success(`Parallel: ${maxParallel} agents`);
222
+ }
223
+ if (openPr && !parallelMode && !useBranch) {
224
+ p.log.warn("Opening PR requires a branch.");
225
+ const branchName = await p.text({
226
+ message: "Branch name:",
227
+ placeholder: "feature/ralph",
228
+ initialValue: "feature/ralph",
229
+ });
230
+ if (p.isCancel(branchName))
231
+ bail();
232
+ const nameStr = typeof branchName === "string" ? branchName.trim() : "";
233
+ useBranch = nameStr || "feature/ralph";
234
+ p.log.success(`Branch: ${useBranch}`);
235
+ }
236
+ p.outro("Options set");
237
+ }
238
+ writeLastRun(workspace, { model, max_iterations: maxIterations });
239
+ console.log("");
240
+ console.log("─────────────────────────────────────────────────────────────────");
241
+ console.log("Summary:");
242
+ console.log(" • Model: ", model);
243
+ console.log(" • Iterations: ", maxIterations, "max");
244
+ if (useBranch)
245
+ console.log(" • Branch: ", useBranch);
246
+ if (openPr)
247
+ console.log(" • Open PR: Yes");
248
+ if (runSingleFirst)
249
+ console.log(" • Test first: Yes (single iteration)");
250
+ if (parallelMode)
251
+ console.log(" • Parallel: ", maxParallel, "agents");
252
+ console.log("─────────────────────────────────────────────────────────────────");
253
+ console.log("");
254
+ if (!opts.yes) {
255
+ const go = await p.confirm({
256
+ message: "Start Ralph loop?",
257
+ initialValue: false,
258
+ });
259
+ if (p.isCancel(go))
260
+ bail();
261
+ if (!go)
262
+ bail();
263
+ }
264
+ if (parallelMode) {
265
+ const result = await runParallelTasks(workspace, {
266
+ maxParallel,
267
+ model,
268
+ baseBranch: undefined,
269
+ integrationBranch: useBranch || undefined,
270
+ skipMerge: false,
271
+ createPr: openPr,
272
+ taskFilePath: opts.task,
273
+ });
274
+ process.exit(result.success ? 0 : 1);
275
+ }
276
+ if (runSingleFirst) {
277
+ console.log("");
278
+ console.log("🧪 Running single iteration first...");
279
+ console.log("");
280
+ await runIteration({
281
+ workspace,
282
+ iteration: 1,
283
+ model,
284
+ taskFilePath: opts.task,
285
+ warnThreshold: config.warn_threshold,
286
+ rotateThreshold: config.rotate_threshold,
287
+ });
288
+ if (checkTaskComplete(workspace, opts.task) === "COMPLETE") {
289
+ console.log("");
290
+ console.log("🎉 Task completed in single iteration!");
291
+ process.exit(0);
292
+ }
293
+ console.log("");
294
+ console.log("Single iteration complete. Review the changes.");
295
+ console.log("");
296
+ if (!opts.yes) {
297
+ const cont = await p.confirm({
298
+ message: "Continue with full loop?",
299
+ initialValue: true,
300
+ });
301
+ if (p.isCancel(cont))
302
+ bail();
303
+ if (!cont) {
304
+ p.cancel("Stopped after single iteration.");
305
+ process.exit(0);
306
+ }
307
+ }
308
+ setIteration(workspace, 2);
309
+ }
310
+ const result = await runRalphLoop({
311
+ workspace,
312
+ model,
313
+ maxIterations,
314
+ useBranch: useBranch || undefined,
315
+ openPr,
316
+ taskFilePath: opts.task,
317
+ warnThreshold: config.warn_threshold,
318
+ rotateThreshold: config.rotate_threshold,
319
+ });
320
+ if (result.success) {
321
+ console.log("\nRALPH COMPLETE! Iterations:", result.iterations);
322
+ process.exit(0);
323
+ }
324
+ console.error("\nLoop ended without completion.");
325
+ process.exit(1);
326
+ });
327
+ }
328
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function statusCommand(): Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,IAAI,OAAO,CA8BvC"}
@@ -0,0 +1,33 @@
1
+ import { Command } from "commander";
2
+ import { existsSync } from "fs";
3
+ import { getProgress, countRemaining, getTaskFilePath } from "../task-parser/index.js";
4
+ import { getIteration } from "../lib/ralph-dir.js";
5
+ export function statusCommand() {
6
+ return new Command("status")
7
+ .description("Print task summary (done/total criteria, last iteration)")
8
+ .option("--task <path>", "Path to task file")
9
+ .action(async (opts) => {
10
+ const workspace = process.cwd();
11
+ const resolvedPath = getTaskFilePath(workspace, opts.task);
12
+ if (!existsSync(resolvedPath)) {
13
+ console.error("No task file found at", resolvedPath);
14
+ process.exit(2);
15
+ }
16
+ try {
17
+ const { parseTasks } = await import("../task-parser/index.js").then((m) => m);
18
+ parseTasks(workspace, opts.task);
19
+ }
20
+ catch {
21
+ console.error("Failed to parse task file");
22
+ process.exit(2);
23
+ }
24
+ const progress = getProgress(workspace, opts.task);
25
+ const [done, total] = progress.split(":").map(Number);
26
+ const remaining = countRemaining(workspace, opts.task);
27
+ const iteration = getIteration(workspace);
28
+ console.log("Task file:", resolvedPath);
29
+ console.log("Progress:", `${done} / ${total} criteria (${remaining} remaining)`);
30
+ console.log("Last iteration:", iteration);
31
+ });
32
+ }
33
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,MAAM,KAAK,cAAc,SAAS,aAAa,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function taskCommand(): Command;
3
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,WAAW,IAAI,OAAO,CA6JrC"}