claude-devloop 1.0.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 (90) hide show
  1. package/README.md +340 -0
  2. package/dist/cli.d.ts +4 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +90 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/config.d.ts +9 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +80 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/continue.d.ts +11 -0
  11. package/dist/commands/continue.d.ts.map +1 -0
  12. package/dist/commands/continue.js +167 -0
  13. package/dist/commands/continue.js.map +1 -0
  14. package/dist/commands/feature.d.ts +7 -0
  15. package/dist/commands/feature.d.ts.map +1 -0
  16. package/dist/commands/feature.js +123 -0
  17. package/dist/commands/feature.js.map +1 -0
  18. package/dist/commands/init.d.ts +8 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +401 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/run.d.ts +12 -0
  23. package/dist/commands/run.d.ts.map +1 -0
  24. package/dist/commands/run.js +82 -0
  25. package/dist/commands/run.js.map +1 -0
  26. package/dist/commands/shared.d.ts +22 -0
  27. package/dist/commands/shared.d.ts.map +1 -0
  28. package/dist/commands/shared.js +32 -0
  29. package/dist/commands/shared.js.map +1 -0
  30. package/dist/commands/status.d.ts +8 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +305 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/commands/workspace.d.ts +2 -0
  35. package/dist/commands/workspace.d.ts.map +1 -0
  36. package/dist/commands/workspace.js +19 -0
  37. package/dist/commands/workspace.js.map +1 -0
  38. package/dist/constants.d.ts +21 -0
  39. package/dist/constants.d.ts.map +1 -0
  40. package/dist/constants.js +21 -0
  41. package/dist/constants.js.map +1 -0
  42. package/dist/core/claude.d.ts +20 -0
  43. package/dist/core/claude.d.ts.map +1 -0
  44. package/dist/core/claude.js +401 -0
  45. package/dist/core/claude.js.map +1 -0
  46. package/dist/core/commit-format.d.ts +22 -0
  47. package/dist/core/commit-format.d.ts.map +1 -0
  48. package/dist/core/commit-format.js +148 -0
  49. package/dist/core/commit-format.js.map +1 -0
  50. package/dist/core/config.d.ts +30 -0
  51. package/dist/core/config.d.ts.map +1 -0
  52. package/dist/core/config.js +130 -0
  53. package/dist/core/config.js.map +1 -0
  54. package/dist/core/feature-session.d.ts +8 -0
  55. package/dist/core/feature-session.d.ts.map +1 -0
  56. package/dist/core/feature-session.js +58 -0
  57. package/dist/core/feature-session.js.map +1 -0
  58. package/dist/core/git.d.ts +81 -0
  59. package/dist/core/git.d.ts.map +1 -0
  60. package/dist/core/git.js +475 -0
  61. package/dist/core/git.js.map +1 -0
  62. package/dist/core/loop.d.ts +3 -0
  63. package/dist/core/loop.d.ts.map +1 -0
  64. package/dist/core/loop.js +469 -0
  65. package/dist/core/loop.js.map +1 -0
  66. package/dist/core/session.d.ts +7 -0
  67. package/dist/core/session.d.ts.map +1 -0
  68. package/dist/core/session.js +57 -0
  69. package/dist/core/session.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +4 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/parser/progress.d.ts +7 -0
  75. package/dist/parser/progress.d.ts.map +1 -0
  76. package/dist/parser/progress.js +132 -0
  77. package/dist/parser/progress.js.map +1 -0
  78. package/dist/parser/requirements.d.ts +6 -0
  79. package/dist/parser/requirements.d.ts.map +1 -0
  80. package/dist/parser/requirements.js +126 -0
  81. package/dist/parser/requirements.js.map +1 -0
  82. package/dist/types/feature.d.ts +15 -0
  83. package/dist/types/feature.d.ts.map +1 -0
  84. package/dist/types/feature.js +2 -0
  85. package/dist/types/feature.js.map +1 -0
  86. package/dist/types/index.d.ts +78 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/index.js +3 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/package.json +40 -0
@@ -0,0 +1,167 @@
1
+ import * as readline from 'readline';
2
+ import chalk from 'chalk';
3
+ import { resolveWorkspace, getRequirementsPath, resolveFeaturePath } from '../core/config.js';
4
+ import { readSession, updateSessionPhase } from '../core/session.js';
5
+ import { readFeatureSession } from '../core/feature-session.js';
6
+ import { spawnClaudeInteractive } from '../core/claude.js';
7
+ import { requireClaudeInstalled, buildRunConfig } from './shared.js';
8
+ import { runLoop } from '../core/loop.js';
9
+ async function promptUser(question) {
10
+ const rl = readline.createInterface({
11
+ input: process.stdin,
12
+ output: process.stdout
13
+ });
14
+ return new Promise((resolve) => {
15
+ rl.question(question, (answer) => {
16
+ rl.close();
17
+ resolve(answer.trim());
18
+ });
19
+ });
20
+ }
21
+ export async function continueCommand(options) {
22
+ await requireClaudeInstalled();
23
+ const workspace = await resolveWorkspace(options.workspace);
24
+ // Feature mode
25
+ if (options.feature) {
26
+ try {
27
+ const { featureName, requirementsPath, progressPath } = resolveFeaturePath(workspace, options.feature);
28
+ const session = await readFeatureSession(workspace, featureName);
29
+ console.log(chalk.blue.bold('\n=== DevLoop Continue (Feature Mode) ===\n'));
30
+ console.log(chalk.gray(`Workspace: ${workspace}`));
31
+ console.log(chalk.gray(`Feature: ${featureName}`));
32
+ if (!session) {
33
+ console.log(chalk.yellow('\nNo existing session found for this feature.'));
34
+ console.log(chalk.gray(`Run "devloop init --feature ${featureName}" to start.`));
35
+ return;
36
+ }
37
+ console.log(chalk.gray(`Current phase: ${session.phase}`));
38
+ console.log(chalk.gray(`Started: ${session.startedAt}`));
39
+ if (session.phase === 'run') {
40
+ console.log(chalk.gray(`Last iteration: ${session.lastIteration}`));
41
+ }
42
+ console.log();
43
+ console.log(chalk.cyan('What would you like to do?'));
44
+ console.log(chalk.white(' 1. Continue working on requirements'));
45
+ console.log(chalk.white(' 2. Continue running tasks'));
46
+ console.log(chalk.white(' 3. Cancel'));
47
+ console.log();
48
+ const choice = await promptUser('Enter choice (1/2/3): ');
49
+ switch (choice) {
50
+ case '1':
51
+ await continueFeatureRequirements(workspace, featureName, requirementsPath, session.sessionId);
52
+ break;
53
+ case '2':
54
+ await continueFeatureRun(workspace, featureName, requirementsPath, progressPath, options);
55
+ break;
56
+ case '3':
57
+ console.log(chalk.gray('Cancelled.'));
58
+ break;
59
+ default:
60
+ console.log(chalk.red('Invalid choice.'));
61
+ }
62
+ return;
63
+ }
64
+ catch (error) {
65
+ if (error instanceof Error) {
66
+ console.log(chalk.red(error.message));
67
+ }
68
+ else {
69
+ console.log(chalk.red(`Error: ${error}`));
70
+ }
71
+ process.exit(1);
72
+ }
73
+ }
74
+ // Legacy mode
75
+ const session = await readSession(workspace);
76
+ console.log(chalk.blue.bold('\n=== DevLoop Continue ===\n'));
77
+ console.log(chalk.gray(`Workspace: ${workspace}`));
78
+ if (!session) {
79
+ console.log(chalk.yellow('\nNo existing session found.'));
80
+ console.log(chalk.gray('Run "devloop init" to start a new project.'));
81
+ return;
82
+ }
83
+ console.log(chalk.gray(`Current phase: ${session.phase}`));
84
+ console.log(chalk.gray(`Started: ${session.startedAt}`));
85
+ if (session.phase === 'run') {
86
+ console.log(chalk.gray(`Last iteration: ${session.lastIteration}`));
87
+ }
88
+ console.log();
89
+ // Ask user what they want to do
90
+ console.log(chalk.cyan('What would you like to do?'));
91
+ console.log(chalk.white(' 1. Continue working on requirements'));
92
+ console.log(chalk.white(' 2. Continue running tasks'));
93
+ console.log(chalk.white(' 3. Cancel'));
94
+ console.log();
95
+ const choice = await promptUser('Enter choice (1/2/3): ');
96
+ switch (choice) {
97
+ case '1':
98
+ await continueRequirements(workspace, session.sessionId);
99
+ break;
100
+ case '2':
101
+ await continueRun(workspace, options);
102
+ break;
103
+ case '3':
104
+ console.log(chalk.gray('Cancelled.'));
105
+ break;
106
+ default:
107
+ console.log(chalk.red('Invalid choice.'));
108
+ }
109
+ }
110
+ async function continueRequirements(workspace, sessionId) {
111
+ await updateSessionPhase(workspace, 'init');
112
+ console.log(chalk.cyan('\nResuming requirements session...'));
113
+ console.log(chalk.gray('Continue refining your requirements.md with Claude.'));
114
+ console.log(chalk.gray('Exit with Ctrl+C or /exit when done.\n'));
115
+ const child = spawnClaudeInteractive(workspace, sessionId);
116
+ child.on('close', (code) => {
117
+ console.log(chalk.blue('\n\nSession ended.'));
118
+ if (code === 0) {
119
+ const requirementsPath = getRequirementsPath(workspace);
120
+ console.log(chalk.green('Requirements file is at:'), requirementsPath);
121
+ console.log(chalk.gray('Run "devloop status" to see your tasks.'));
122
+ console.log(chalk.gray('Run "devloop run" to start executing tasks.'));
123
+ }
124
+ });
125
+ }
126
+ async function continueRun(workspace, options) {
127
+ const config = buildRunConfig({
128
+ workspace,
129
+ maxIterations: options.maxIterations,
130
+ tokenLimit: options.tokenLimit,
131
+ costLimit: options.costLimit,
132
+ verbose: options.verbose,
133
+ dryRun: false,
134
+ sessionAction: 'update'
135
+ });
136
+ await runLoop(config);
137
+ }
138
+ async function continueFeatureRequirements(workspace, featureName, requirementsPath, sessionId) {
139
+ console.log(chalk.cyan('\nResuming feature requirements session...'));
140
+ console.log(chalk.gray(`Continue refining your ${requirementsPath} with Claude.`));
141
+ console.log(chalk.gray('Exit with Ctrl+C or /exit when done.\n'));
142
+ const child = spawnClaudeInteractive(workspace, sessionId);
143
+ child.on('close', (code) => {
144
+ console.log(chalk.blue('\n\nSession ended.'));
145
+ if (code === 0) {
146
+ console.log(chalk.green('Feature requirements file is at:'), requirementsPath);
147
+ console.log(chalk.gray(`Run "devloop status --feature ${featureName}" to see your tasks.`));
148
+ console.log(chalk.gray(`Run "devloop run --feature ${featureName}" to start executing tasks.`));
149
+ }
150
+ });
151
+ }
152
+ async function continueFeatureRun(workspace, featureName, requirementsPath, progressPath, options) {
153
+ const config = buildRunConfig({
154
+ workspace,
155
+ requirementsPath,
156
+ progressPath,
157
+ maxIterations: options.maxIterations,
158
+ tokenLimit: options.tokenLimit,
159
+ costLimit: options.costLimit,
160
+ verbose: options.verbose,
161
+ dryRun: false,
162
+ featureName,
163
+ sessionAction: 'update'
164
+ });
165
+ await runLoop(config);
166
+ }
167
+ //# sourceMappingURL=continue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface FeatureOptions {
2
+ workspace?: string;
3
+ }
4
+ export declare function featureListCommand(options: FeatureOptions): Promise<void>;
5
+ export declare function featureStatusCommand(options: FeatureOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD/E;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFjF"}
@@ -0,0 +1,123 @@
1
+ import chalk from 'chalk';
2
+ import { resolveWorkspace, getFeatureRequirementsPath, getFeatureProgressPath } from '../core/config.js';
3
+ import { listFeatures, readFeatureSession } from '../core/feature-session.js';
4
+ import { parseRequirements } from '../parser/requirements.js';
5
+ import { readProgress } from '../parser/progress.js';
6
+ export async function featureListCommand(options) {
7
+ const workspace = await resolveWorkspace(options.workspace);
8
+ const features = await listFeatures(workspace);
9
+ if (features.length === 0) {
10
+ console.log(chalk.yellow('\nNo features found in requirements/ directory.'));
11
+ console.log();
12
+ console.log(chalk.gray('To get started:'));
13
+ console.log(chalk.cyan(' 1. Create a feature: devloop init --feature auth'));
14
+ console.log(chalk.cyan(' 2. Or use legacy mode: devloop init'));
15
+ return;
16
+ }
17
+ console.log(chalk.blue.bold('\n=== Features ===\n'));
18
+ console.log(chalk.gray(`Workspace: ${workspace}`));
19
+ console.log();
20
+ for (const featureName of features) {
21
+ const requirementsPath = getFeatureRequirementsPath(workspace, featureName);
22
+ const progressPath = getFeatureProgressPath(workspace, featureName);
23
+ const session = await readFeatureSession(workspace, featureName);
24
+ try {
25
+ const requirements = await parseRequirements(requirementsPath);
26
+ const progress = await readProgress(progressPath);
27
+ const done = requirements.tasks.filter(t => t.status === 'done').length;
28
+ const total = requirements.tasks.length;
29
+ const percentage = total > 0 ? Math.round((done / total) * 100) : 0;
30
+ const statusColor = percentage === 100 ? chalk.green : percentage > 0 ? chalk.yellow : chalk.gray;
31
+ console.log(chalk.white(`${featureName}:`));
32
+ console.log(chalk.gray(` Tasks: ${done}/${total} (${statusColor(percentage + '%')})`));
33
+ if (session) {
34
+ console.log(chalk.gray(` Phase: ${session.phase}`));
35
+ if (session.lastIteration > 0) {
36
+ console.log(chalk.gray(` Last iteration: ${session.lastIteration}`));
37
+ }
38
+ }
39
+ if (progress && progress.iterations.length > 0) {
40
+ const lastIter = progress.iterations[progress.iterations.length - 1];
41
+ console.log(chalk.gray(` Last activity: ${new Date(lastIter.timestamp).toLocaleString()}`));
42
+ }
43
+ console.log();
44
+ }
45
+ catch (error) {
46
+ console.log(chalk.white(`${featureName}:`));
47
+ console.log(chalk.red(` Error: ${error}`));
48
+ console.log();
49
+ }
50
+ }
51
+ }
52
+ export async function featureStatusCommand(options) {
53
+ const workspace = await resolveWorkspace(options.workspace);
54
+ const features = await listFeatures(workspace);
55
+ if (features.length === 0) {
56
+ console.log(chalk.yellow('\nNo features found in requirements/ directory.'));
57
+ console.log();
58
+ console.log(chalk.gray('To get started:'));
59
+ console.log(chalk.cyan(' 1. Create a feature: devloop init --feature auth'));
60
+ console.log(chalk.cyan(' 2. Or use legacy mode: devloop init'));
61
+ return;
62
+ }
63
+ console.log(chalk.blue.bold('\n=== Feature Status Summary ===\n'));
64
+ console.log(chalk.gray(`Workspace: ${workspace}`));
65
+ console.log();
66
+ let totalTasks = 0;
67
+ let totalDone = 0;
68
+ const featureStatuses = [];
69
+ for (const featureName of features) {
70
+ const requirementsPath = getFeatureRequirementsPath(workspace, featureName);
71
+ const session = await readFeatureSession(workspace, featureName);
72
+ try {
73
+ const requirements = await parseRequirements(requirementsPath);
74
+ const done = requirements.tasks.filter(t => t.status === 'done').length;
75
+ const total = requirements.tasks.length;
76
+ const percentage = total > 0 ? Math.round((done / total) * 100) : 0;
77
+ totalTasks += total;
78
+ totalDone += done;
79
+ featureStatuses.push({
80
+ name: featureName,
81
+ done,
82
+ total,
83
+ percentage,
84
+ active: session?.phase === 'run' || false
85
+ });
86
+ }
87
+ catch {
88
+ // Skip features with parsing errors
89
+ }
90
+ }
91
+ // Sort by percentage (desc), then by name
92
+ featureStatuses.sort((a, b) => {
93
+ if (b.percentage !== a.percentage) {
94
+ return b.percentage - a.percentage;
95
+ }
96
+ return a.name.localeCompare(b.name);
97
+ });
98
+ console.log(chalk.white('Features:'));
99
+ for (const feature of featureStatuses) {
100
+ const statusColor = feature.percentage === 100 ? chalk.green :
101
+ feature.percentage > 0 ? chalk.yellow : chalk.gray;
102
+ const activeIndicator = feature.active ? chalk.cyan('●') : ' ';
103
+ const bar = generateProgressBar(feature.percentage, 20);
104
+ console.log(` ${activeIndicator} ${chalk.white(feature.name.padEnd(20))} ${bar} ${statusColor(feature.percentage + '%')} (${feature.done}/${feature.total})`);
105
+ }
106
+ console.log();
107
+ console.log(chalk.white('Overall Progress:'));
108
+ const overallPercentage = totalTasks > 0 ? Math.round((totalDone / totalTasks) * 100) : 0;
109
+ const overallBar = generateProgressBar(overallPercentage, 40);
110
+ const overallColor = overallPercentage === 100 ? chalk.green :
111
+ overallPercentage > 0 ? chalk.yellow : chalk.gray;
112
+ console.log(` ${overallBar} ${overallColor(overallPercentage + '%')}`);
113
+ console.log(chalk.gray(` Total: ${totalDone}/${totalTasks} tasks completed`));
114
+ console.log();
115
+ }
116
+ function generateProgressBar(percentage, width) {
117
+ const filled = Math.round((percentage / 100) * width);
118
+ const empty = width - filled;
119
+ const filledColor = percentage === 100 ? chalk.green :
120
+ percentage > 0 ? chalk.yellow : chalk.gray;
121
+ return filledColor('█'.repeat(filled)) + chalk.gray('░'.repeat(empty));
122
+ }
123
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface InitOptions {
2
+ workspace?: string;
3
+ feature?: string;
4
+ force?: boolean;
5
+ }
6
+ export declare function initCommand(options: InitOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsEA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgKD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqNrE"}