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.
- package/README.md +340 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +90 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.d.ts +9 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +80 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/continue.d.ts +11 -0
- package/dist/commands/continue.d.ts.map +1 -0
- package/dist/commands/continue.js +167 -0
- package/dist/commands/continue.js.map +1 -0
- package/dist/commands/feature.d.ts +7 -0
- package/dist/commands/feature.d.ts.map +1 -0
- package/dist/commands/feature.js +123 -0
- package/dist/commands/feature.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +401 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/run.d.ts +12 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +82 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/shared.d.ts +22 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +32 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +305 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/workspace.d.ts +2 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +19 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/claude.d.ts +20 -0
- package/dist/core/claude.d.ts.map +1 -0
- package/dist/core/claude.js +401 -0
- package/dist/core/claude.js.map +1 -0
- package/dist/core/commit-format.d.ts +22 -0
- package/dist/core/commit-format.d.ts.map +1 -0
- package/dist/core/commit-format.js +148 -0
- package/dist/core/commit-format.js.map +1 -0
- package/dist/core/config.d.ts +30 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +130 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/feature-session.d.ts +8 -0
- package/dist/core/feature-session.d.ts.map +1 -0
- package/dist/core/feature-session.js +58 -0
- package/dist/core/feature-session.js.map +1 -0
- package/dist/core/git.d.ts +81 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +475 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/loop.d.ts +3 -0
- package/dist/core/loop.d.ts.map +1 -0
- package/dist/core/loop.js +469 -0
- package/dist/core/loop.js.map +1 -0
- package/dist/core/session.d.ts +7 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +57 -0
- package/dist/core/session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/progress.d.ts +7 -0
- package/dist/parser/progress.d.ts.map +1 -0
- package/dist/parser/progress.js +132 -0
- package/dist/parser/progress.js.map +1 -0
- package/dist/parser/requirements.d.ts +6 -0
- package/dist/parser/requirements.d.ts.map +1 -0
- package/dist/parser/requirements.js +126 -0
- package/dist/parser/requirements.js.map +1 -0
- package/dist/types/feature.d.ts +15 -0
- package/dist/types/feature.d.ts.map +1 -0
- package/dist/types/feature.js +2 -0
- package/dist/types/feature.js.map +1 -0
- package/dist/types/index.d.ts +78 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# DevLoop
|
|
2
|
+
|
|
3
|
+
Automate iterative development with Claude Code. DevLoop helps you break down projects into small tasks and automatically executes them in a loop using Claude.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
1. **Define requirements** - Use an interactive Claude session to break your project into small tasks (~30 min each)
|
|
10
|
+
2. **Run the loop** - DevLoop picks the next task, spawns Claude to complete it, logs progress, and repeats
|
|
11
|
+
3. **Track progress** - View task status and iteration logs at any time
|
|
12
|
+
|
|
13
|
+
Each iteration runs in a fresh Claude context, so you get consistent behavior without context buildup.
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
### From npm (recommended)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g claude-devloop
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### From source
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Clone this repo, then:
|
|
27
|
+
npm install
|
|
28
|
+
npm run build
|
|
29
|
+
npm link
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
You may need `sudo npm link` (macOS/Linux) or run as Administrator (Windows) if you get permission errors.
|
|
33
|
+
|
|
34
|
+
### Verify Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
devloop --version
|
|
38
|
+
devloop --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Uninstallation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm uninstall -g claude-devloop
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Clean Up Config Files
|
|
48
|
+
|
|
49
|
+
DevLoop stores configuration in your home directory:
|
|
50
|
+
|
|
51
|
+
```powershell
|
|
52
|
+
# Windows - remove global config
|
|
53
|
+
rmdir /s /q %USERPROFILE%\.devloop
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# macOS / Linux - remove global config
|
|
58
|
+
rm -rf ~/.devloop
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Workspace files (`requirements.md`, `progress.md`, `CLAUDE.md`, `.devloop/`) are stored in each project directory and can be deleted manually if no longer needed.
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# 1. Navigate to your project directory
|
|
67
|
+
cd C:\Projects\MyApp
|
|
68
|
+
|
|
69
|
+
# 2. Create requirements.md interactively with Claude
|
|
70
|
+
devloop init
|
|
71
|
+
|
|
72
|
+
# 3. Check your tasks
|
|
73
|
+
devloop status
|
|
74
|
+
|
|
75
|
+
# 4. Run the loop (10 iterations by default)
|
|
76
|
+
devloop run
|
|
77
|
+
|
|
78
|
+
# 5. Come back later and continue
|
|
79
|
+
devloop continue
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Tips for `devloop init`
|
|
83
|
+
|
|
84
|
+
When you run `devloop init`, DevLoop creates a placeholder `requirements.md` and then opens an interactive Claude session. Here's what to expect:
|
|
85
|
+
|
|
86
|
+
- **Claude will ask to overwrite the file** — say yes. The placeholder is just a template; Claude needs to replace it with your actual tasks.
|
|
87
|
+
- **Describe what you want to build.** Include any preferences for technologies, libraries, or approaches. Claude will break your idea into small tasks (~30 min each) with dependencies.
|
|
88
|
+
- **Don't ask Claude to start building the project.** The init session is only for creating the requirements document. Implementation happens later when you run `devloop run`. If Claude starts writing code or creating files, remind it to just write the requirements doc.
|
|
89
|
+
- **Review the tasks before exiting.** Ask Claude to adjust priorities, split large tasks, or add missing steps. It's much easier to fix the plan now than after tasks have started running.
|
|
90
|
+
- **Exit when you're happy** with Ctrl+C or `/exit`. DevLoop will commit the requirements and you can start running tasks.
|
|
91
|
+
|
|
92
|
+
## Commands
|
|
93
|
+
|
|
94
|
+
### `devloop init`
|
|
95
|
+
|
|
96
|
+
Starts an interactive Claude session to create your `requirements.md` file. Claude helps you break down your project into small, actionable tasks.
|
|
97
|
+
|
|
98
|
+
If a `requirements.md` already exists but DevLoop hasn't been initialized (no `.devloop/` folder), the command will **adopt** the existing file and set up the necessary infrastructure, allowing you to use `devloop run` immediately.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
devloop init # Use default/configured workspace
|
|
102
|
+
devloop init -w ./my-project # Specify workspace
|
|
103
|
+
devloop init --force # Overwrite existing requirements.md and reinitialize
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Behavior with existing files:**
|
|
107
|
+
- `requirements.md` exists + no session → Adopts existing file, creates infrastructure
|
|
108
|
+
- `requirements.md` exists + session exists → Prompts to use `continue` or `--force`
|
|
109
|
+
- No `requirements.md` → Creates template and starts fresh
|
|
110
|
+
|
|
111
|
+
### `devloop run`
|
|
112
|
+
|
|
113
|
+
Executes tasks from `requirements.md` in a loop. Each iteration:
|
|
114
|
+
1. Parses requirements.md to find the next pending task (respecting dependencies)
|
|
115
|
+
2. Spawns Claude with the task details
|
|
116
|
+
3. Claude completes the task and marks it done
|
|
117
|
+
4. Logs the result to progress.md
|
|
118
|
+
5. Repeats until all tasks done or max iterations reached
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
devloop run # Run with defaults (10 iterations)
|
|
122
|
+
devloop run -n 5 # Limit to 5 iterations
|
|
123
|
+
devloop run -t 500000 # Stop when session tokens exceed 500k
|
|
124
|
+
devloop run -c 5 # Stop when session cost exceeds $5
|
|
125
|
+
devloop run -v # Verbose output (show Claude's work)
|
|
126
|
+
devloop run --dry-run # Show what would run without executing
|
|
127
|
+
devloop run -w ./my-project # Specify workspace
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `devloop status`
|
|
131
|
+
|
|
132
|
+
Shows current progress and task list.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
devloop status # Human-readable output
|
|
136
|
+
devloop status --json # JSON output for scripting
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `devloop continue`
|
|
140
|
+
|
|
141
|
+
Resume work after a break. Prompts you to choose:
|
|
142
|
+
- **Continue requirements** - Resume refining requirements.md with Claude
|
|
143
|
+
- **Continue run** - Resume task execution from where you left off
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
devloop continue
|
|
147
|
+
devloop continue -n 20 # Continue run with 20 max iterations
|
|
148
|
+
devloop continue -t 500000 # Continue with token limit
|
|
149
|
+
devloop continue -c 5 # Continue with $5 cost limit
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### `devloop workspace`
|
|
153
|
+
|
|
154
|
+
View or set the default workspace directory.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
devloop workspace # Show current default
|
|
158
|
+
devloop workspace C:\Dev # Set default workspace
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## File Structure
|
|
162
|
+
|
|
163
|
+
DevLoop creates these files in your workspace:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
my-project/
|
|
167
|
+
├── requirements.md # Your tasks (you + Claude create this)
|
|
168
|
+
├── progress.md # Iteration logs (auto-generated)
|
|
169
|
+
├── CLAUDE.md # Context for Claude (auto-generated)
|
|
170
|
+
└── .devloop/
|
|
171
|
+
├── session.json # Session state for resuming
|
|
172
|
+
└── config.json # Workspace config (commit format, etc.)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Global config is stored at `~/.devloop/config.json`.
|
|
176
|
+
|
|
177
|
+
## Task Format
|
|
178
|
+
|
|
179
|
+
Tasks in `requirements.md` follow this format:
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
### TASK-001: Set up project structure
|
|
183
|
+
- **Status**: pending
|
|
184
|
+
- **Priority**: high
|
|
185
|
+
- **Dependencies**: none
|
|
186
|
+
- **Description**: Initialize with package.json and tsconfig.json.
|
|
187
|
+
|
|
188
|
+
### TASK-002: Implement user authentication
|
|
189
|
+
- **Status**: pending
|
|
190
|
+
- **Priority**: high
|
|
191
|
+
- **Dependencies**: TASK-001
|
|
192
|
+
- **Description**: Create login endpoint with JWT tokens.
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
- **Status**: `pending`, `in-progress`, or `done`
|
|
196
|
+
- **Priority**: `high`, `medium`, or `low` (higher priority tasks run first)
|
|
197
|
+
- **Dependencies**: `none` or comma-separated task IDs (e.g., `TASK-001, TASK-002`)
|
|
198
|
+
|
|
199
|
+
## Progress Indicators
|
|
200
|
+
|
|
201
|
+
DevLoop provides visual feedback during execution:
|
|
202
|
+
|
|
203
|
+
- **Terminal title**: Shows current iteration, task ID, and progress (e.g., "DevLoop: 3/10 - TASK-005 (2/12 done)")
|
|
204
|
+
- **Animated spinner**: Displays elapsed time while Claude works on a task
|
|
205
|
+
- **Final status**: Terminal title updates to show completion status
|
|
206
|
+
|
|
207
|
+
## Graceful Shutdown
|
|
208
|
+
|
|
209
|
+
DevLoop supports graceful shutdown during task execution:
|
|
210
|
+
|
|
211
|
+
- **First Ctrl+C**: Requests graceful stop - the current task will complete, then DevLoop stops
|
|
212
|
+
- **Second Ctrl+C**: Warning that next press will force stop
|
|
213
|
+
- **Third Ctrl+C**: Force stops immediately (may leave work incomplete)
|
|
214
|
+
|
|
215
|
+
This allows you to stop the loop without interrupting Claude mid-task.
|
|
216
|
+
|
|
217
|
+
## Interrupted Work Recovery
|
|
218
|
+
|
|
219
|
+
If a task is interrupted (e.g., force Ctrl+C during execution), DevLoop detects and preserves partial work:
|
|
220
|
+
|
|
221
|
+
- **Detection**: At the start of each run, DevLoop checks for uncommitted git changes
|
|
222
|
+
- **Commit**: If uncommitted changes exist, they are committed with a message like `DevLoop: Interrupted work on TASK-001 - Task title`
|
|
223
|
+
- **Fresh start**: Claude then starts fresh with a clean working tree
|
|
224
|
+
- **Failure handling**: If the commit fails, DevLoop stops and provides instructions for manual resolution
|
|
225
|
+
|
|
226
|
+
The partial work is preserved in git history. If it was needed (and tests fail without it), you can recover it from the commit.
|
|
227
|
+
|
|
228
|
+
If DevLoop cannot commit the uncommitted changes (e.g., git configuration issues), it will stop and ask you to resolve manually using `git status`, then either commit or discard the changes before running `devloop continue`.
|
|
229
|
+
|
|
230
|
+
## Commit Message Format
|
|
231
|
+
|
|
232
|
+
DevLoop commits use a configurable format with an `{action}` placeholder that gets replaced with what DevLoop did.
|
|
233
|
+
|
|
234
|
+
- **Default format**: `DevLoop: {action}`
|
|
235
|
+
- **Example actions**: "Initialize workspace", "Complete TASK-001 - Fix bug", "Attempted TASK-002 - Add feature"
|
|
236
|
+
|
|
237
|
+
**Auto-detection during init**: When you run `devloop init`, DevLoop detects commit hooks (commitlint, husky, git hooks). If hooks are found, you're prompted for a commit message format.
|
|
238
|
+
|
|
239
|
+
**Manual configuration**:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
devloop config set devloopCommitFormat "chore(devloop): {action}"
|
|
243
|
+
devloop config list # Show current config
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Hook failure handling**: If a commit fails due to a hook, DevLoop displays the error, prompts you for a valid commit message (with `{action}` placeholder), retries, and saves the format for future commits.
|
|
247
|
+
|
|
248
|
+
## Safety
|
|
249
|
+
|
|
250
|
+
When running automated tasks, DevLoop restricts Claude to your workspace:
|
|
251
|
+
|
|
252
|
+
- Uses `--add-dir <workspace>` to limit file operations
|
|
253
|
+
- Prompts explicitly state workspace boundaries
|
|
254
|
+
- Dangerous commands (rm -rf /, sudo, etc.) are blocked in settings
|
|
255
|
+
|
|
256
|
+
## Token Tracking
|
|
257
|
+
|
|
258
|
+
DevLoop tracks API token usage across iterations:
|
|
259
|
+
|
|
260
|
+
- **Per-iteration tracking**: Each iteration logs input tokens, output tokens, and cost
|
|
261
|
+
- **Cumulative display**: After each task, shows running total of tokens used
|
|
262
|
+
- **Token limits**: Use `-t, --token-limit` to stop before exceeding a token threshold
|
|
263
|
+
- **Cost limits**: Use `-c, --cost-limit` to stop before exceeding a dollar amount
|
|
264
|
+
- **Status display**: `devloop status` shows total tokens and cost for the project
|
|
265
|
+
|
|
266
|
+
Token data is stored in `progress.md` and persists across sessions.
|
|
267
|
+
|
|
268
|
+
## API Error Handling
|
|
269
|
+
|
|
270
|
+
DevLoop automatically detects and handles API-level errors:
|
|
271
|
+
|
|
272
|
+
- **Rate limits** (400/429): Stops the loop and displays the error message
|
|
273
|
+
- **Authentication errors** (401): Stops and prompts to check credentials
|
|
274
|
+
- **API overload** (503): Stops and suggests retrying later
|
|
275
|
+
- **Network errors**: Stops on connection failures
|
|
276
|
+
|
|
277
|
+
Task failures (Claude ran but couldn't complete the task) continue to the next iteration, as a future attempt may succeed.
|
|
278
|
+
|
|
279
|
+
When `devloop status` is run after a failure, it displays:
|
|
280
|
+
- Error type (rate_limit, auth_error, etc.)
|
|
281
|
+
- Error summary and detailed message
|
|
282
|
+
- Timestamp of the failure
|
|
283
|
+
|
|
284
|
+
## Feature Mode
|
|
285
|
+
|
|
286
|
+
Feature mode lets you organize work into independent features, each with their own requirements, progress tracking, and session state. This is useful for larger projects where you want to work on multiple features in parallel without mixing their tasks.
|
|
287
|
+
|
|
288
|
+
### File Structure
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
my-project/
|
|
292
|
+
├── requirements/
|
|
293
|
+
│ ├── auth.md # Feature-specific requirements
|
|
294
|
+
│ └── dashboard.md
|
|
295
|
+
├── progress/
|
|
296
|
+
│ ├── auth.md # Feature-specific progress
|
|
297
|
+
│ └── dashboard.md
|
|
298
|
+
└── .devloop/
|
|
299
|
+
└── features/
|
|
300
|
+
├── auth.json # Feature session state
|
|
301
|
+
└── dashboard.json
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Usage
|
|
305
|
+
|
|
306
|
+
Use the `--feature <name>` flag on any command:
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
devloop init --feature auth # Create requirements/auth.md
|
|
310
|
+
devloop run --feature auth # Run tasks for auth feature
|
|
311
|
+
devloop continue --feature auth # Continue auth feature
|
|
312
|
+
devloop status --feature auth # Check auth feature status
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Managing Features
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
devloop feature list # List all features
|
|
319
|
+
devloop feature status # Summary of all features
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Quick Example
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
# Create two independent features
|
|
326
|
+
devloop init --feature auth
|
|
327
|
+
devloop init --feature dashboard
|
|
328
|
+
|
|
329
|
+
# Work on them independently
|
|
330
|
+
devloop run --feature auth -n 5
|
|
331
|
+
devloop run --feature dashboard -n 5
|
|
332
|
+
|
|
333
|
+
# Check overall status
|
|
334
|
+
devloop feature status
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Requirements
|
|
338
|
+
|
|
339
|
+
- Node.js >= 20.0.0
|
|
340
|
+
- [Claude Code CLI](https://claude.ai/code) installed and authenticated
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+F9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { initCommand } from './commands/init.js';
|
|
3
|
+
import { continueCommand } from './commands/continue.js';
|
|
4
|
+
import { runCommand } from './commands/run.js';
|
|
5
|
+
import { statusCommand } from './commands/status.js';
|
|
6
|
+
import { workspaceCommand } from './commands/workspace.js';
|
|
7
|
+
import { featureListCommand, featureStatusCommand } from './commands/feature.js';
|
|
8
|
+
import { configSetCommand, configGetCommand, configUnsetCommand, configListCommand } from './commands/config.js';
|
|
9
|
+
const program = new Command();
|
|
10
|
+
program
|
|
11
|
+
.name('devloop')
|
|
12
|
+
.description('Automate iterative development with Claude Code')
|
|
13
|
+
.version('1.0.0');
|
|
14
|
+
program
|
|
15
|
+
.command('init')
|
|
16
|
+
.description('Create requirements.md with interactive Claude session')
|
|
17
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
18
|
+
.option('--feature <name>', 'Feature mode: create requirements/<name>.md')
|
|
19
|
+
.option('-f, --force', 'Overwrite existing requirements')
|
|
20
|
+
.action(initCommand);
|
|
21
|
+
program
|
|
22
|
+
.command('continue')
|
|
23
|
+
.description('Resume work on requirements or task execution')
|
|
24
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
25
|
+
.option('--feature <name>', 'Feature mode: work on specific feature')
|
|
26
|
+
.option('-n, --max-iterations <number>', 'Maximum iterations for run', '10')
|
|
27
|
+
.option('-t, --token-limit <number>', 'Stop when cumulative tokens exceed this limit')
|
|
28
|
+
.option('-c, --cost-limit <number>', 'Stop when session cost (USD) exceeds this limit')
|
|
29
|
+
.option('-v, --verbose', 'Verbose output')
|
|
30
|
+
.action(continueCommand);
|
|
31
|
+
program
|
|
32
|
+
.command('run')
|
|
33
|
+
.description('Start the task execution loop')
|
|
34
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
35
|
+
.option('--feature <name>', 'Feature mode: run specific feature tasks')
|
|
36
|
+
.option('-n, --max-iterations <number>', 'Maximum iterations', '10')
|
|
37
|
+
.option('-t, --token-limit <number>', 'Stop when cumulative tokens exceed this limit')
|
|
38
|
+
.option('-c, --cost-limit <number>', 'Stop when session cost (USD) exceeds this limit')
|
|
39
|
+
.option('-v, --verbose', 'Verbose output')
|
|
40
|
+
.option('--dry-run', 'Show what would be done without executing')
|
|
41
|
+
.action(runCommand);
|
|
42
|
+
program
|
|
43
|
+
.command('status')
|
|
44
|
+
.description('Show current progress')
|
|
45
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
46
|
+
.option('--feature <name>', 'Feature mode: show feature status')
|
|
47
|
+
.option('--json', 'Output as JSON')
|
|
48
|
+
.action(statusCommand);
|
|
49
|
+
const featureCommand = program
|
|
50
|
+
.command('feature')
|
|
51
|
+
.description('Manage features');
|
|
52
|
+
featureCommand
|
|
53
|
+
.command('list')
|
|
54
|
+
.description('List all features')
|
|
55
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
56
|
+
.action(featureListCommand);
|
|
57
|
+
featureCommand
|
|
58
|
+
.command('status')
|
|
59
|
+
.description('Show summary of all features')
|
|
60
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
61
|
+
.action(featureStatusCommand);
|
|
62
|
+
const configCommand = program
|
|
63
|
+
.command('config')
|
|
64
|
+
.description('Manage workspace configuration (commit message formats, etc.)');
|
|
65
|
+
configCommand
|
|
66
|
+
.command('set <key> <value>')
|
|
67
|
+
.description('Set a config value. Keys: devloopCommitFormat. Variable: {action}')
|
|
68
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
69
|
+
.action(configSetCommand);
|
|
70
|
+
configCommand
|
|
71
|
+
.command('get <key>')
|
|
72
|
+
.description('Get a configuration value')
|
|
73
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
74
|
+
.action(configGetCommand);
|
|
75
|
+
configCommand
|
|
76
|
+
.command('unset <key>')
|
|
77
|
+
.description('Unset a configuration value')
|
|
78
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
79
|
+
.action(configUnsetCommand);
|
|
80
|
+
configCommand
|
|
81
|
+
.command('list')
|
|
82
|
+
.description('List all configuration values and available keys')
|
|
83
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
84
|
+
.action(configListCommand);
|
|
85
|
+
program
|
|
86
|
+
.command('workspace [path]')
|
|
87
|
+
.description('View or set default workspace')
|
|
88
|
+
.action(workspaceCommand);
|
|
89
|
+
export { program };
|
|
90
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ConfigOptions {
|
|
2
|
+
workspace?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function configSetCommand(key: string, value: string, options: ConfigOptions): Promise<void>;
|
|
5
|
+
export declare function configGetCommand(key: string, options: ConfigOptions): Promise<void>;
|
|
6
|
+
export declare function configUnsetCommand(key: string, options: ConfigOptions): Promise<void>;
|
|
7
|
+
export declare function configListCommand(options: ConfigOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxG;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzF;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { resolveWorkspace, readWorkspaceConfig, writeWorkspaceConfig } from '../core/config.js';
|
|
3
|
+
const VALID_CONFIG_KEYS = ['devloopCommitFormat'];
|
|
4
|
+
export async function configSetCommand(key, value, options) {
|
|
5
|
+
if (!VALID_CONFIG_KEYS.includes(key)) {
|
|
6
|
+
console.log(chalk.red(`Error: Unknown config key: ${key}`));
|
|
7
|
+
console.log(chalk.gray('Valid keys:'));
|
|
8
|
+
for (const validKey of VALID_CONFIG_KEYS) {
|
|
9
|
+
console.log(chalk.gray(` - ${validKey}`));
|
|
10
|
+
}
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const workspace = await resolveWorkspace(options.workspace);
|
|
14
|
+
const config = await readWorkspaceConfig(workspace);
|
|
15
|
+
config[key] = value;
|
|
16
|
+
await writeWorkspaceConfig(workspace, config);
|
|
17
|
+
console.log(chalk.green(`✓ Set ${key} = ${value}`));
|
|
18
|
+
}
|
|
19
|
+
export async function configGetCommand(key, options) {
|
|
20
|
+
if (!VALID_CONFIG_KEYS.includes(key)) {
|
|
21
|
+
console.log(chalk.red(`Error: Unknown config key: ${key}`));
|
|
22
|
+
console.log(chalk.gray('Valid keys:'));
|
|
23
|
+
for (const validKey of VALID_CONFIG_KEYS) {
|
|
24
|
+
console.log(chalk.gray(` - ${validKey}`));
|
|
25
|
+
}
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
const workspace = await resolveWorkspace(options.workspace);
|
|
29
|
+
const config = await readWorkspaceConfig(workspace);
|
|
30
|
+
const value = config[key];
|
|
31
|
+
if (value !== undefined) {
|
|
32
|
+
console.log(chalk.white(`${key}: ${value}`));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(chalk.gray(`${key}: (not set)`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function configUnsetCommand(key, options) {
|
|
39
|
+
if (!VALID_CONFIG_KEYS.includes(key)) {
|
|
40
|
+
console.log(chalk.red(`Error: Unknown config key: ${key}`));
|
|
41
|
+
console.log(chalk.gray('Valid keys:'));
|
|
42
|
+
for (const validKey of VALID_CONFIG_KEYS) {
|
|
43
|
+
console.log(chalk.gray(` - ${validKey}`));
|
|
44
|
+
}
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
const workspace = await resolveWorkspace(options.workspace);
|
|
48
|
+
const config = await readWorkspaceConfig(workspace);
|
|
49
|
+
delete config[key];
|
|
50
|
+
await writeWorkspaceConfig(workspace, config);
|
|
51
|
+
console.log(chalk.green(`✓ Unset ${key}`));
|
|
52
|
+
}
|
|
53
|
+
export async function configListCommand(options) {
|
|
54
|
+
const workspace = await resolveWorkspace(options.workspace);
|
|
55
|
+
const config = await readWorkspaceConfig(workspace);
|
|
56
|
+
console.log(chalk.blue.bold('\n=== Workspace Configuration ===\n'));
|
|
57
|
+
console.log(chalk.gray(`Workspace: ${workspace}`));
|
|
58
|
+
console.log();
|
|
59
|
+
for (const key of VALID_CONFIG_KEYS) {
|
|
60
|
+
const value = config[key];
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
console.log(chalk.white(`${key}:`));
|
|
63
|
+
console.log(chalk.cyan(` ${value}`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.log(chalk.gray(`${key}: (not set)`));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
console.log();
|
|
70
|
+
console.log(chalk.white('Variables for devloopCommitFormat:'));
|
|
71
|
+
console.log(chalk.gray(' {action} - What DevLoop is doing, e.g.:'));
|
|
72
|
+
console.log(chalk.gray(' "Initialize workspace"'));
|
|
73
|
+
console.log(chalk.gray(' "Complete TASK-001 - Fix the bug"'));
|
|
74
|
+
console.log(chalk.gray(' "Attempted TASK-002 - Add feature"'));
|
|
75
|
+
console.log();
|
|
76
|
+
console.log(chalk.white('Example:'));
|
|
77
|
+
console.log(chalk.gray(' devloop config set devloopCommitFormat "chore(devloop): {action}"'));
|
|
78
|
+
console.log();
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ContinueOptions {
|
|
2
|
+
workspace?: string;
|
|
3
|
+
feature?: string;
|
|
4
|
+
maxIterations?: string;
|
|
5
|
+
tokenLimit?: string;
|
|
6
|
+
costLimit?: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function continueCommand(options: ContinueOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=continue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"AASA,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0G7E"}
|