ralph-wiggum-ui 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 (79) hide show
  1. package/dist/cli/commands/add.d.ts +10 -0
  2. package/dist/cli/commands/add.d.ts.map +1 -0
  3. package/dist/cli/commands/add.js +87 -0
  4. package/dist/cli/commands/add.js.map +1 -0
  5. package/dist/cli/commands/init.d.ts +5 -0
  6. package/dist/cli/commands/init.d.ts.map +1 -0
  7. package/dist/cli/commands/init.js +91 -0
  8. package/dist/cli/commands/init.js.map +1 -0
  9. package/dist/cli/commands/list.d.ts +9 -0
  10. package/dist/cli/commands/list.d.ts.map +1 -0
  11. package/dist/cli/commands/list.js +90 -0
  12. package/dist/cli/commands/list.js.map +1 -0
  13. package/dist/cli/commands/run.d.ts +10 -0
  14. package/dist/cli/commands/run.d.ts.map +1 -0
  15. package/dist/cli/commands/run.js +200 -0
  16. package/dist/cli/commands/run.js.map +1 -0
  17. package/dist/cli/commands/serve.d.ts +10 -0
  18. package/dist/cli/commands/serve.d.ts.map +1 -0
  19. package/dist/cli/commands/serve.js +57 -0
  20. package/dist/cli/commands/serve.js.map +1 -0
  21. package/dist/cli/commands/status.d.ts +5 -0
  22. package/dist/cli/commands/status.d.ts.map +1 -0
  23. package/dist/cli/commands/status.js +63 -0
  24. package/dist/cli/commands/status.js.map +1 -0
  25. package/dist/cli/index.d.ts +6 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +76 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/lib/config.d.ts +53 -0
  30. package/dist/lib/config.d.ts.map +1 -0
  31. package/dist/lib/config.js +164 -0
  32. package/dist/lib/config.js.map +1 -0
  33. package/dist/lib/index.d.ts +11 -0
  34. package/dist/lib/index.d.ts.map +1 -0
  35. package/dist/lib/index.js +18 -0
  36. package/dist/lib/index.js.map +1 -0
  37. package/dist/lib/logger.d.ts +72 -0
  38. package/dist/lib/logger.d.ts.map +1 -0
  39. package/dist/lib/logger.js +159 -0
  40. package/dist/lib/logger.js.map +1 -0
  41. package/dist/lib/preflight.d.ts +45 -0
  42. package/dist/lib/preflight.d.ts.map +1 -0
  43. package/dist/lib/preflight.js +173 -0
  44. package/dist/lib/preflight.js.map +1 -0
  45. package/dist/lib/progress.d.ts +41 -0
  46. package/dist/lib/progress.d.ts.map +1 -0
  47. package/dist/lib/progress.js +122 -0
  48. package/dist/lib/progress.js.map +1 -0
  49. package/dist/lib/tasks.d.ts +77 -0
  50. package/dist/lib/tasks.d.ts.map +1 -0
  51. package/dist/lib/tasks.js +259 -0
  52. package/dist/lib/tasks.js.map +1 -0
  53. package/dist/lib/templates.d.ts +25 -0
  54. package/dist/lib/templates.d.ts.map +1 -0
  55. package/dist/lib/templates.js +86 -0
  56. package/dist/lib/templates.js.map +1 -0
  57. package/dist/server/api.d.ts +7 -0
  58. package/dist/server/api.d.ts.map +1 -0
  59. package/dist/server/api.js +258 -0
  60. package/dist/server/api.js.map +1 -0
  61. package/dist/server/index.d.ts +15 -0
  62. package/dist/server/index.d.ts.map +1 -0
  63. package/dist/server/index.js +59 -0
  64. package/dist/server/index.js.map +1 -0
  65. package/dist/server/runner.d.ts +15 -0
  66. package/dist/server/runner.d.ts.map +1 -0
  67. package/dist/server/runner.js +265 -0
  68. package/dist/server/runner.js.map +1 -0
  69. package/dist/types/index.d.ts +129 -0
  70. package/dist/types/index.d.ts.map +1 -0
  71. package/dist/types/index.js +37 -0
  72. package/dist/types/index.js.map +1 -0
  73. package/dist/ui/assets/index-DBOjIoHW.js +137 -0
  74. package/dist/ui/assets/index-mu6cQFl4.css +1 -0
  75. package/dist/ui/favicon.svg +3 -0
  76. package/dist/ui/index.html +14 -0
  77. package/package.json +78 -0
  78. package/templates/AGENTS.md +48 -0
  79. package/templates/prompt.md +64 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * add command - Add a new task
3
+ */
4
+ interface AddOptions {
5
+ description?: string;
6
+ criteria?: string[];
7
+ }
8
+ export declare function addCommand(title: string | undefined, options: AddOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Ff"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * add command - Add a new task
3
+ */
4
+ import chalk from 'chalk';
5
+ import inquirer from 'inquirer';
6
+ import { runOperationalPreflightChecks, addTask, } from '../../lib/index.js';
7
+ export async function addCommand(title, options) {
8
+ const cwd = process.cwd();
9
+ // Run pre-flight checks
10
+ const preflight = await runOperationalPreflightChecks(cwd);
11
+ if (!preflight.allPassed) {
12
+ for (const check of preflight.checks) {
13
+ if (!check.passed) {
14
+ console.log(chalk.red(`\n✗ ${check.message}\n`));
15
+ }
16
+ }
17
+ process.exit(1);
18
+ }
19
+ // If no title provided, prompt for it
20
+ let taskTitle = title;
21
+ let taskDescription = options.description;
22
+ let taskCriteria = options.criteria || [];
23
+ if (!taskTitle) {
24
+ const answers = await inquirer.prompt([
25
+ {
26
+ type: 'input',
27
+ name: 'title',
28
+ message: 'Task title:',
29
+ validate: (input) => {
30
+ if (!input.trim()) {
31
+ return 'Title is required';
32
+ }
33
+ return true;
34
+ },
35
+ },
36
+ {
37
+ type: 'input',
38
+ name: 'description',
39
+ message: 'Description (optional):',
40
+ default: '',
41
+ },
42
+ {
43
+ type: 'input',
44
+ name: 'criteria',
45
+ message: 'Acceptance criteria (comma-separated, optional):',
46
+ default: '',
47
+ },
48
+ ]);
49
+ taskTitle = answers.title;
50
+ taskDescription = answers.description || undefined;
51
+ if (answers.criteria) {
52
+ taskCriteria = answers.criteria
53
+ .split(',')
54
+ .map((c) => c.trim())
55
+ .filter((c) => c.length > 0);
56
+ }
57
+ }
58
+ // Always add "Typecheck passes" as a criterion if not present
59
+ const typecheckCriterion = 'Typecheck passes';
60
+ if (!taskCriteria.some((c) => c.toLowerCase().includes('typecheck'))) {
61
+ taskCriteria.push(typecheckCriterion);
62
+ }
63
+ // Add the task - taskTitle is guaranteed to be defined at this point
64
+ if (!taskTitle) {
65
+ console.log(chalk.red('\nTask title is required.\n'));
66
+ process.exit(1);
67
+ }
68
+ const newTask = addTask(cwd, {
69
+ title: taskTitle,
70
+ description: taskDescription ?? '',
71
+ acceptanceCriteria: taskCriteria,
72
+ });
73
+ console.log(chalk.green(`\n✅ Task added: ${chalk.cyan(newTask.id)}\n`));
74
+ console.log(` ${chalk.bold(newTask.title)}`);
75
+ if (newTask.description) {
76
+ console.log(` ${chalk.dim(newTask.description)}`);
77
+ }
78
+ if (newTask.acceptanceCriteria.length > 0) {
79
+ console.log(chalk.dim('\n Acceptance Criteria:'));
80
+ for (const criterion of newTask.acceptanceCriteria) {
81
+ console.log(` ${chalk.dim('•')} ${criterion}`);
82
+ }
83
+ }
84
+ console.log(chalk.dim(`\n Priority: ${newTask.priority}`));
85
+ console.log('');
86
+ }
87
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * init command - Initialize Ralph Wiggum UI in the current directory
3
+ */
4
+ export declare function initCommand(): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqGjD"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * init command - Initialize Ralph Wiggum UI in the current directory
3
+ */
4
+ import chalk from 'chalk';
5
+ import inquirer from 'inquirer';
6
+ import { runInitPreflightChecks, getCurrentBranch, createRalphDirectories, detectProjectConfig, createConfig, saveConfig, writeTemplateFiles, } from '../../lib/index.js';
7
+ export async function initCommand() {
8
+ const cwd = process.cwd();
9
+ console.log(chalk.bold('\n🎭 Ralph Wiggum UI - Initialization\n'));
10
+ // Run pre-flight checks
11
+ console.log(chalk.dim('Running pre-flight checks...\n'));
12
+ const preflight = await runInitPreflightChecks(cwd);
13
+ for (const check of preflight.checks) {
14
+ const icon = check.passed ? chalk.green('✓') : chalk.red('✗');
15
+ const message = check.passed
16
+ ? chalk.dim(check.message)
17
+ : chalk.red(check.message);
18
+ console.log(` ${icon} ${check.name}: ${message}`);
19
+ }
20
+ console.log('');
21
+ if (!preflight.allPassed) {
22
+ console.log(chalk.red('Pre-flight checks failed. Please fix the issues above and try again.\n'));
23
+ process.exit(1);
24
+ }
25
+ console.log(chalk.green('All pre-flight checks passed!\n'));
26
+ // Detect project configuration
27
+ const detected = detectProjectConfig(cwd);
28
+ // Prompt for configuration
29
+ const answers = await inquirer.prompt([
30
+ {
31
+ type: 'input',
32
+ name: 'project',
33
+ message: 'Project name:',
34
+ default: detected.project,
35
+ },
36
+ {
37
+ type: 'input',
38
+ name: 'sourceDir',
39
+ message: 'Source directory:',
40
+ default: 'src',
41
+ },
42
+ {
43
+ type: 'input',
44
+ name: 'testCommand',
45
+ message: 'Test command:',
46
+ default: detected.testCommand || 'npm test',
47
+ },
48
+ {
49
+ type: 'input',
50
+ name: 'buildCommand',
51
+ message: 'Build command:',
52
+ default: detected.buildCommand || 'npm run build',
53
+ },
54
+ {
55
+ type: 'input',
56
+ name: 'typecheckCommand',
57
+ message: 'Typecheck command:',
58
+ default: detected.typecheckCommand || 'npm run typecheck',
59
+ },
60
+ ]);
61
+ // Get current branch
62
+ const branch = getCurrentBranch(cwd) || 'main';
63
+ console.log(chalk.dim('\nCreating Ralph directory structure...'));
64
+ // Create directories
65
+ createRalphDirectories(cwd);
66
+ // Create and save config
67
+ const config = createConfig({
68
+ project: answers.project,
69
+ sourceDir: answers.sourceDir,
70
+ testCommand: answers.testCommand,
71
+ buildCommand: answers.buildCommand,
72
+ typecheckCommand: answers.typecheckCommand,
73
+ });
74
+ saveConfig(cwd, config);
75
+ // Write template files
76
+ writeTemplateFiles(cwd, config, branch);
77
+ console.log(chalk.green('\n✅ Ralph Wiggum UI initialized successfully!\n'));
78
+ console.log(chalk.bold('Next steps:\n'));
79
+ console.log(` 1. Add tasks: ${chalk.cyan('npx ralph-wiggum-ui add "Your first task"')}`);
80
+ console.log(` 2. Open the UI: ${chalk.cyan('npx ralph-wiggum-ui')}`);
81
+ console.log(` 3. Or run tasks: ${chalk.cyan('npx ralph-wiggum-ui run')}`);
82
+ console.log('');
83
+ console.log(chalk.dim(`Files created in ${chalk.white('.ralph-wiggum-ui/')}`));
84
+ console.log(chalk.dim(' - config.json (project configuration)'));
85
+ console.log(chalk.dim(' - prd.json (task list)'));
86
+ console.log(chalk.dim(' - prompt.md (Claude instructions)'));
87
+ console.log(chalk.dim(' - AGENTS.md (project guide)'));
88
+ console.log(chalk.dim(' - progress.txt (learnings log)'));
89
+ console.log('');
90
+ }
91
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * list command - List all tasks
3
+ */
4
+ interface ListOptions {
5
+ status?: string;
6
+ }
7
+ export declare function listCommand(options: ListOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgErE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * list command - List all tasks
3
+ */
4
+ import chalk from 'chalk';
5
+ import { runOperationalPreflightChecks, getAllTasks, getTasksByStatus, } from '../../lib/index.js';
6
+ export async function listCommand(options) {
7
+ const cwd = process.cwd();
8
+ // Run pre-flight checks
9
+ const preflight = await runOperationalPreflightChecks(cwd);
10
+ if (!preflight.allPassed) {
11
+ for (const check of preflight.checks) {
12
+ if (!check.passed) {
13
+ console.log(chalk.red(`\n✗ ${check.message}\n`));
14
+ }
15
+ }
16
+ process.exit(1);
17
+ }
18
+ // Get tasks
19
+ let tasks;
20
+ if (options.status) {
21
+ const validStatuses = ['pending', 'in_progress', 'completed', 'failed'];
22
+ if (!validStatuses.includes(options.status)) {
23
+ console.log(chalk.red(`\nInvalid status: ${options.status}`));
24
+ console.log(chalk.dim(`Valid statuses: ${validStatuses.join(', ')}\n`));
25
+ process.exit(1);
26
+ }
27
+ tasks = getTasksByStatus(cwd, options.status);
28
+ }
29
+ else {
30
+ tasks = getAllTasks(cwd);
31
+ }
32
+ console.log(chalk.bold('\n🎭 Ralph Wiggum UI - Tasks\n'));
33
+ if (tasks.length === 0) {
34
+ console.log(chalk.yellow(' No tasks found.'));
35
+ console.log(chalk.dim(`\n Add a task: ${chalk.white('npx ralph-wiggum-ui add "Your task"')}\n`));
36
+ return;
37
+ }
38
+ // Sort by priority
39
+ tasks.sort((a, b) => a.priority - b.priority);
40
+ // Display tasks
41
+ console.log(chalk.dim('─'.repeat(60)));
42
+ for (const task of tasks) {
43
+ const statusIcon = getStatusIcon(task.status);
44
+ const statusColor = getStatusColor(task.status);
45
+ console.log(` ${statusIcon} ${chalk.cyan(task.id)}: ${task.title}`);
46
+ console.log(` ${chalk.dim('Priority:')} ${task.priority} ${chalk.dim('Status:')} ${statusColor(task.status)}`);
47
+ if (task.description) {
48
+ console.log(` ${chalk.dim(truncate(task.description, 50))}`);
49
+ }
50
+ if (task.acceptanceCriteria.length > 0) {
51
+ console.log(` ${chalk.dim('Criteria:')} ${task.acceptanceCriteria.length} items`);
52
+ }
53
+ console.log('');
54
+ }
55
+ console.log(chalk.dim('─'.repeat(60)));
56
+ console.log(chalk.dim(` Total: ${tasks.length} task${tasks.length === 1 ? '' : 's'}\n`));
57
+ }
58
+ function getStatusIcon(status) {
59
+ switch (status) {
60
+ case 'completed':
61
+ return chalk.green('✓');
62
+ case 'in_progress':
63
+ return chalk.yellow('→');
64
+ case 'failed':
65
+ return chalk.red('✗');
66
+ case 'pending':
67
+ default:
68
+ return chalk.dim('○');
69
+ }
70
+ }
71
+ function getStatusColor(status) {
72
+ switch (status) {
73
+ case 'completed':
74
+ return chalk.green;
75
+ case 'in_progress':
76
+ return chalk.yellow;
77
+ case 'failed':
78
+ return chalk.red;
79
+ case 'pending':
80
+ default:
81
+ return chalk.dim;
82
+ }
83
+ }
84
+ function truncate(text, maxLength) {
85
+ if (text.length <= maxLength) {
86
+ return text;
87
+ }
88
+ return text.substring(0, maxLength - 3) + '...';
89
+ }
90
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,WAAW,EACX,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,wBAAwB;IACxB,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAE3D,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY;IACZ,IAAI,KAAkB,CAAC;IAEvB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,aAAa,GAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAoB,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAoB,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE9C,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,QAAQ,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,aAAa,CAAC,MAAkB;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAkB;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,GAAG,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * run command - Run tasks using Claude Code
3
+ */
4
+ interface RunOptions {
5
+ all?: boolean;
6
+ stopOnFailure?: boolean;
7
+ }
8
+ export declare function runCommand(countArg: string | undefined, options: RunOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Gf"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * run command - Run tasks using Claude Code
3
+ */
4
+ import chalk from 'chalk';
5
+ import { spawn } from 'child_process';
6
+ import { readFileSync } from 'fs';
7
+ import { runOperationalPreflightChecks, getNextTask, getTasksByStatus, markTaskInProgress, markTaskCompleted, markTaskFailed, loadConfig, createLogWriter, cleanupOldLogs, appendProgressEntry, getRalphFilePath, PROMPT_FILE, TASK_COMPLETION_TAG, } from '../../lib/index.js';
8
+ export async function runCommand(countArg, options) {
9
+ const cwd = process.cwd();
10
+ // Run pre-flight checks
11
+ const preflight = await runOperationalPreflightChecks(cwd);
12
+ if (!preflight.allPassed) {
13
+ for (const check of preflight.checks) {
14
+ if (!check.passed) {
15
+ console.log(chalk.red(`\n✗ ${check.message}\n`));
16
+ }
17
+ }
18
+ process.exit(1);
19
+ }
20
+ const config = loadConfig(cwd);
21
+ // Determine how many tasks to run
22
+ let tasksToRun;
23
+ if (options.all) {
24
+ const pendingTasks = getTasksByStatus(cwd, 'pending');
25
+ tasksToRun = pendingTasks.length;
26
+ console.log(chalk.bold(`\n🚀 AFK Mode: Running all ${tasksToRun} remaining tasks\n`));
27
+ }
28
+ else if (countArg) {
29
+ tasksToRun = parseInt(countArg, 10);
30
+ if (isNaN(tasksToRun) || tasksToRun < 1) {
31
+ console.log(chalk.red('\nInvalid task count. Must be a positive number.\n'));
32
+ process.exit(1);
33
+ }
34
+ console.log(chalk.bold(`\n🚀 AFK Mode: Running next ${tasksToRun} tasks\n`));
35
+ }
36
+ else {
37
+ tasksToRun = 1;
38
+ console.log(chalk.bold('\n▶ Running next task\n'));
39
+ }
40
+ const stopOnFailure = options.stopOnFailure !== false;
41
+ let completedCount = 0;
42
+ let failedCount = 0;
43
+ for (let i = 0; i < tasksToRun; i++) {
44
+ // Get next task
45
+ const task = getNextTask(cwd);
46
+ if (!task) {
47
+ console.log(chalk.yellow('\n No more pending tasks.\n'));
48
+ break;
49
+ }
50
+ console.log(chalk.dim('─'.repeat(50)));
51
+ console.log(`\n [${i + 1}/${tasksToRun}] ${chalk.cyan(task.id)}: ${task.title}\n`);
52
+ // Mark as in progress
53
+ markTaskInProgress(cwd, task.id);
54
+ // Create log writer
55
+ const logWriter = createLogWriter(cwd, task.id, task.title);
56
+ try {
57
+ // Run the task
58
+ const result = await runTaskWithClaude(cwd, config, logWriter);
59
+ if (result.success) {
60
+ markTaskCompleted(cwd, task.id);
61
+ completedCount++;
62
+ console.log(chalk.green(`\n ✓ Task completed: ${task.id}\n`));
63
+ // Append to progress file
64
+ appendProgressEntry(cwd, {
65
+ taskId: task.id,
66
+ taskTitle: task.title,
67
+ summary: `Completed task: ${task.title}`,
68
+ });
69
+ }
70
+ else {
71
+ markTaskFailed(cwd, task.id, result.error);
72
+ failedCount++;
73
+ console.log(chalk.red(`\n ✗ Task failed: ${task.id}`));
74
+ console.log(chalk.dim(` ${result.error}\n`));
75
+ if (stopOnFailure) {
76
+ console.log(chalk.yellow(' Stopping due to failure (use --no-stop-on-failure to continue)\n'));
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ catch (error) {
82
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
83
+ markTaskFailed(cwd, task.id, errorMessage);
84
+ logWriter.finalize(false, errorMessage);
85
+ failedCount++;
86
+ console.log(chalk.red(`\n ✗ Task failed: ${task.id}`));
87
+ console.log(chalk.dim(` ${errorMessage}\n`));
88
+ if (stopOnFailure) {
89
+ break;
90
+ }
91
+ }
92
+ }
93
+ // Clean up old logs
94
+ cleanupOldLogs(cwd);
95
+ // Summary
96
+ console.log(chalk.dim('─'.repeat(50)));
97
+ console.log(chalk.bold('\n Summary:\n'));
98
+ console.log(` ${chalk.green('✓')} Completed: ${completedCount}`);
99
+ console.log(` ${chalk.red('✗')} Failed: ${failedCount}`);
100
+ console.log('');
101
+ }
102
+ async function runTaskWithClaude(cwd, _config, logWriter) {
103
+ return new Promise((resolve) => {
104
+ // Read the prompt file
105
+ const promptPath = getRalphFilePath(cwd, PROMPT_FILE);
106
+ const prompt = readFileSync(promptPath, 'utf-8');
107
+ logWriter.write('Starting Claude Code...');
108
+ // Spawn Claude Code process
109
+ const child = spawn('claude', [
110
+ '-p',
111
+ '--dangerously-skip-permissions',
112
+ '--output-format', 'stream-json',
113
+ ], {
114
+ cwd,
115
+ stdio: ['pipe', 'pipe', 'pipe'],
116
+ });
117
+ let output = '';
118
+ let hasCompletionTag = false;
119
+ // Write prompt to stdin
120
+ child.stdin.write(prompt);
121
+ child.stdin.end();
122
+ // Capture stdout
123
+ child.stdout.on('data', (data) => {
124
+ const text = data.toString();
125
+ output += text;
126
+ // Log the output (parse JSON stream if possible)
127
+ try {
128
+ const lines = text.split('\n').filter((line) => line.trim());
129
+ for (const line of lines) {
130
+ const parsed = JSON.parse(line);
131
+ if (parsed.type === 'content' && parsed.content) {
132
+ logWriter.write(`> ${parsed.content}`);
133
+ console.log(chalk.dim(` > ${truncate(parsed.content, 70)}`));
134
+ }
135
+ }
136
+ }
137
+ catch {
138
+ // Not JSON, just log raw
139
+ const trimmed = text.trim();
140
+ if (trimmed) {
141
+ logWriter.write(`> ${trimmed}`);
142
+ }
143
+ }
144
+ // Check for completion tag
145
+ if (output.includes(TASK_COMPLETION_TAG)) {
146
+ hasCompletionTag = true;
147
+ }
148
+ });
149
+ // Capture stderr
150
+ child.stderr.on('data', (data) => {
151
+ const text = data.toString().trim();
152
+ if (text) {
153
+ logWriter.write(`[stderr] ${text}`);
154
+ }
155
+ });
156
+ // Handle process exit
157
+ child.on('close', (code) => {
158
+ if (code !== 0) {
159
+ logWriter.finalize(false, `Claude exited with code ${code}`);
160
+ resolve({
161
+ success: false,
162
+ error: `Claude exited with code ${code}`,
163
+ output,
164
+ });
165
+ return;
166
+ }
167
+ if (!hasCompletionTag) {
168
+ logWriter.finalize(false, 'Completion tag not found');
169
+ resolve({
170
+ success: false,
171
+ error: `Claude did not output ${TASK_COMPLETION_TAG}`,
172
+ output,
173
+ });
174
+ return;
175
+ }
176
+ logWriter.finalize(true);
177
+ resolve({
178
+ success: true,
179
+ output,
180
+ });
181
+ });
182
+ // Handle errors
183
+ child.on('error', (error) => {
184
+ logWriter.finalize(false, error.message);
185
+ resolve({
186
+ success: false,
187
+ error: error.message,
188
+ output,
189
+ });
190
+ });
191
+ });
192
+ }
193
+ function truncate(text, maxLength) {
194
+ const singleLine = text.replace(/\n/g, ' ');
195
+ if (singleLine.length <= maxLength) {
196
+ return singleLine;
197
+ }
198
+ return singleLine.substring(0, maxLength - 3) + '...';
199
+ }
200
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * serve command - Start the web UI server
3
+ */
4
+ interface ServeOptions {
5
+ port?: string;
6
+ open?: boolean;
7
+ }
8
+ export declare function serveCommand(options: ServeOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDvE"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * serve command - Start the web UI server
3
+ */
4
+ import chalk from 'chalk';
5
+ import open from 'open';
6
+ import { runOperationalPreflightChecks, loadConfig, } from '../../lib/index.js';
7
+ import { createServer } from '../../server/index.js';
8
+ export async function serveCommand(options) {
9
+ const cwd = process.cwd();
10
+ // Run pre-flight checks
11
+ const preflight = await runOperationalPreflightChecks(cwd);
12
+ if (!preflight.allPassed) {
13
+ for (const check of preflight.checks) {
14
+ if (!check.passed) {
15
+ console.log(chalk.red(`\n✗ ${check.message}\n`));
16
+ }
17
+ }
18
+ process.exit(1);
19
+ }
20
+ const config = loadConfig(cwd);
21
+ const port = parseInt(options.port || '3210', 10);
22
+ console.log(chalk.bold('\n🎭 Ralph Wiggum UI\n'));
23
+ console.log(chalk.dim('Starting web server...'));
24
+ try {
25
+ const server = createServer(cwd, config);
26
+ server.listen(port, () => {
27
+ const url = `http://localhost:${port}`;
28
+ console.log(chalk.green(`\n✓ Server running at ${chalk.cyan(url)}\n`));
29
+ console.log(chalk.dim(' Press Ctrl+C to stop\n'));
30
+ // Open browser if not disabled
31
+ if (options.open !== false) {
32
+ open(url).catch(() => {
33
+ // Ignore errors opening browser
34
+ });
35
+ }
36
+ });
37
+ // Handle graceful shutdown
38
+ process.on('SIGINT', () => {
39
+ console.log(chalk.dim('\n\nShutting down...'));
40
+ server.close(() => {
41
+ console.log(chalk.green('Server stopped.'));
42
+ process.exit(0);
43
+ });
44
+ });
45
+ process.on('SIGTERM', () => {
46
+ server.close(() => {
47
+ process.exit(0);
48
+ });
49
+ });
50
+ }
51
+ catch (error) {
52
+ const message = error instanceof Error ? error.message : 'Unknown error';
53
+ console.log(chalk.red(`\n✗ Failed to start server: ${message}\n`));
54
+ process.exit(1);
55
+ }
56
+ }
57
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * status command - Show current status and next task
3
+ */
4
+ export declare function statusCommand(): Promise<void>;
5
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoEnD"}