rlph-cli 1.4.0 → 1.5.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 +69 -18
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prd-delete.d.ts +5 -0
- package/dist/commands/prd-delete.d.ts.map +1 -0
- package/dist/commands/prd-delete.js +53 -0
- package/dist/commands/prd-delete.js.map +1 -0
- package/dist/commands/prd-info.d.ts +2 -0
- package/dist/commands/prd-info.d.ts.map +1 -0
- package/dist/commands/prd-info.js +57 -0
- package/dist/commands/prd-info.js.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/init/templates.d.ts +4 -0
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +18 -0
- package/dist/init/templates.js.map +1 -1
- package/dist/prd/manager.d.ts +2 -1
- package/dist/prd/manager.d.ts.map +1 -1
- package/dist/prd/manager.js +85 -0
- package/dist/prd/manager.js.map +1 -1
- package/dist/prd/types.d.ts +23 -0
- package/dist/prd/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/ralph-skill.md +41 -0
package/README.md
CHANGED
|
@@ -26,6 +26,18 @@ bun link
|
|
|
26
26
|
|
|
27
27
|
## Usage
|
|
28
28
|
|
|
29
|
+
### Initialize Project
|
|
30
|
+
|
|
31
|
+
Set up ralph in your project and install Claude Code skills:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
ralph init
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Creates `.ralph/` directory and installs skills to `~/.claude/skills/`:
|
|
38
|
+
- `ralph-prd` - PRD creation skill
|
|
39
|
+
- `ralph` - CLI documentation skill
|
|
40
|
+
|
|
29
41
|
### Add a PRD
|
|
30
42
|
|
|
31
43
|
Convert markdown PRD to trackable JSON tasks:
|
|
@@ -36,11 +48,10 @@ ralph prd add <path> <name> [--agent claude]
|
|
|
36
48
|
|
|
37
49
|
Example:
|
|
38
50
|
```bash
|
|
39
|
-
ralph prd add feature.md my-feature
|
|
51
|
+
ralph prd add .ralph/prd/my-feature/prd.md my-feature
|
|
40
52
|
```
|
|
41
53
|
|
|
42
|
-
Creates
|
|
43
|
-
- `prd.md` - original markdown
|
|
54
|
+
Creates:
|
|
44
55
|
- `prd.json` - converted tasks with pass/fail tracking
|
|
45
56
|
- `progress.txt` - cross-iteration memory
|
|
46
57
|
|
|
@@ -54,8 +65,38 @@ ralph prd list
|
|
|
54
65
|
|
|
55
66
|
Output:
|
|
56
67
|
```
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
NAME STATUS PROGRESS LOCATION
|
|
69
|
+
my-feature in_progress 3/7 local
|
|
70
|
+
refactor-api pending 0/4 global
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Show PRD Info
|
|
74
|
+
|
|
75
|
+
Display PRD details and file locations:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
ralph prd info <name>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Output:
|
|
82
|
+
```
|
|
83
|
+
PRD: my-feature
|
|
84
|
+
Status: in_progress (3/7 tasks complete)
|
|
85
|
+
|
|
86
|
+
Files:
|
|
87
|
+
prd.md: .ralph/prd/my-feature/prd.md
|
|
88
|
+
prd.json: .ralph/prd/my-feature/prd.json
|
|
89
|
+
progress: .ralph/prd/my-feature/progress.txt
|
|
90
|
+
iterations: .ralph/prd/my-feature/iterations/ (2 files)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Delete PRD
|
|
94
|
+
|
|
95
|
+
Remove a PRD and all associated files:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
ralph prd delete <name>
|
|
99
|
+
ralph prd delete <name> --force # skip confirmation
|
|
59
100
|
```
|
|
60
101
|
|
|
61
102
|
### Run PRD
|
|
@@ -75,26 +116,36 @@ Agent picks up next incomplete task, implements it, runs feedback loops (tests/l
|
|
|
75
116
|
|
|
76
117
|
## How it works
|
|
77
118
|
|
|
78
|
-
1.
|
|
79
|
-
2. `ralph
|
|
80
|
-
3. `ralph
|
|
81
|
-
4.
|
|
82
|
-
5. Agent
|
|
83
|
-
6.
|
|
84
|
-
7.
|
|
119
|
+
1. `ralph init` sets up project and installs Claude Code skills
|
|
120
|
+
2. Write markdown PRD (or use `ralph-prd` skill in Claude Code)
|
|
121
|
+
3. `ralph prd add` converts markdown to JSON tasks
|
|
122
|
+
4. `ralph run` loops agent against PRD tasks
|
|
123
|
+
5. Agent updates `prd.json` passes field on completion
|
|
124
|
+
6. Agent maintains `progress.txt` with learnings across iterations
|
|
125
|
+
7. Stops when all tasks pass or max iterations reached
|
|
126
|
+
8. `ralph prd info` shows progress and file locations
|
|
85
127
|
|
|
86
128
|
## PRD folder structure
|
|
87
129
|
|
|
130
|
+
Local PRDs (in project):
|
|
131
|
+
```
|
|
132
|
+
.ralph/
|
|
133
|
+
├── config.json # Project configuration
|
|
134
|
+
└── prd/<name>/
|
|
135
|
+
├── prd.md # Original markdown
|
|
136
|
+
├── prd.json # Tasks with passes field
|
|
137
|
+
├── progress.txt # Cross-iteration memory
|
|
138
|
+
└── iterations/ # Iteration logs
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Global PRDs (fallback):
|
|
88
142
|
```
|
|
89
143
|
~/.ralph/prd/<name>/
|
|
90
|
-
|
|
91
|
-
├── prd.json # Tasks with passes field
|
|
92
|
-
├── progress.txt # Cross-iteration memory
|
|
93
|
-
└── iterations/ # Iteration logs
|
|
94
|
-
├── 0.json
|
|
95
|
-
└── ...
|
|
144
|
+
└── ...
|
|
96
145
|
```
|
|
97
146
|
|
|
147
|
+
Local PRDs take precedence over global when both exist.
|
|
148
|
+
|
|
98
149
|
## Supported agents
|
|
99
150
|
|
|
100
151
|
- `claude` - Claude Code CLI (requires [claude](https://claude.ai/claude-code) installed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAc5D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CActE;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAcvE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAU/D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAmB1D;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkFzD;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyC1C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { select, confirm } from '@inquirer/prompts';
|
|
3
3
|
import { access, mkdir, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { getClaudeDir, getTargetSkillDir, getTargetSkillPath, getTargetCommandPath, loadBundledSkill, loadBundledCommand, BundledTemplateNotFoundError, } from '../init/index.js';
|
|
5
|
+
import { getClaudeDir, getTargetSkillDir, getTargetSkillPath, getTargetRalphSkillDir, getTargetRalphSkillPath, getTargetCommandPath, loadBundledSkill, loadBundledCommand, loadBundledRalphSkill, BundledTemplateNotFoundError, } from '../init/index.js';
|
|
6
6
|
export async function promptAgentSelection() {
|
|
7
7
|
try {
|
|
8
8
|
return await select({
|
|
@@ -22,7 +22,10 @@ export async function promptAgentSelection() {
|
|
|
22
22
|
export async function promptSkillInstallation() {
|
|
23
23
|
try {
|
|
24
24
|
return await confirm({
|
|
25
|
-
message: 'Install
|
|
25
|
+
message: 'Install Claude Code skills and commands?\n' +
|
|
26
|
+
' - ralph-prd skill (PRD creation)\n' +
|
|
27
|
+
' - ralph skill (CLI docs)\n' +
|
|
28
|
+
' - ralph-complete-next-task command',
|
|
26
29
|
default: true,
|
|
27
30
|
});
|
|
28
31
|
}
|
|
@@ -138,9 +141,11 @@ export async function installClaudeSkills() {
|
|
|
138
141
|
// Load bundled templates
|
|
139
142
|
let skillContent;
|
|
140
143
|
let commandContent;
|
|
144
|
+
let ralphSkillContent;
|
|
141
145
|
try {
|
|
142
146
|
skillContent = await loadBundledSkill();
|
|
143
147
|
commandContent = await loadBundledCommand();
|
|
148
|
+
ralphSkillContent = await loadBundledRalphSkill();
|
|
144
149
|
}
|
|
145
150
|
catch (err) {
|
|
146
151
|
if (err instanceof BundledTemplateNotFoundError) {
|
|
@@ -149,7 +154,7 @@ export async function installClaudeSkills() {
|
|
|
149
154
|
}
|
|
150
155
|
throw err;
|
|
151
156
|
}
|
|
152
|
-
// Write skill
|
|
157
|
+
// Write ralph-prd skill
|
|
153
158
|
const targetSkillDir = getTargetSkillDir();
|
|
154
159
|
const targetSkillPath = getTargetSkillPath();
|
|
155
160
|
try {
|
|
@@ -167,6 +172,24 @@ export async function installClaudeSkills() {
|
|
|
167
172
|
}
|
|
168
173
|
throw err;
|
|
169
174
|
}
|
|
175
|
+
// Write ralph skill (CLI documentation)
|
|
176
|
+
const targetRalphSkillDir = getTargetRalphSkillDir();
|
|
177
|
+
const targetRalphSkillPath = getTargetRalphSkillPath();
|
|
178
|
+
try {
|
|
179
|
+
await mkdir(targetRalphSkillDir, { recursive: true });
|
|
180
|
+
await writeFile(targetRalphSkillPath, ralphSkillContent);
|
|
181
|
+
console.log(chalk.green(`✓ Installed skill: ${targetRalphSkillPath}`));
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
const error = err;
|
|
185
|
+
if (error.code === 'EACCES') {
|
|
186
|
+
console.error(chalk.red(`Permission denied: Cannot write ${targetRalphSkillPath}`));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.error(chalk.red(`Failed to install skill: ${error.message}`));
|
|
190
|
+
}
|
|
191
|
+
throw err;
|
|
192
|
+
}
|
|
170
193
|
// Write command
|
|
171
194
|
const targetCommandPath = getTargetCommandPath();
|
|
172
195
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAA;AAazB,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAY;YAC7B,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACnC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;gBACjC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;aACxC;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;QACT,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC;YACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-delete.d.ts","sourceRoot":"","sources":["../../src/commands/prd-delete.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDnF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { confirm } from '@inquirer/prompts';
|
|
3
|
+
import { rm } from 'node:fs/promises';
|
|
4
|
+
import { dirname } from 'node:path';
|
|
5
|
+
import { getPrdInfo } from '../prd/index.js';
|
|
6
|
+
export async function prdDelete(name, opts) {
|
|
7
|
+
const info = await getPrdInfo(name);
|
|
8
|
+
if (!info.found) {
|
|
9
|
+
console.error(chalk.red(`Error: PRD '${name}' not found`));
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
// Build list of files to delete
|
|
13
|
+
const filesToDelete = [];
|
|
14
|
+
if (info.files.prdMd.exists)
|
|
15
|
+
filesToDelete.push(info.files.prdMd.path);
|
|
16
|
+
if (info.files.prdJson.exists)
|
|
17
|
+
filesToDelete.push(info.files.prdJson.path);
|
|
18
|
+
if (info.files.progress.exists)
|
|
19
|
+
filesToDelete.push(info.files.progress.path);
|
|
20
|
+
if (info.files.iterations.exists) {
|
|
21
|
+
filesToDelete.push(`${info.files.iterations.path}/ (${info.files.iterations.fileCount} files)`);
|
|
22
|
+
}
|
|
23
|
+
// Prompt for confirmation unless --force
|
|
24
|
+
if (!opts.force) {
|
|
25
|
+
console.log();
|
|
26
|
+
console.log(`Delete PRD '${name}'? This will remove:`);
|
|
27
|
+
for (const file of filesToDelete) {
|
|
28
|
+
console.log(` - ${file}`);
|
|
29
|
+
}
|
|
30
|
+
console.log();
|
|
31
|
+
try {
|
|
32
|
+
const confirmed = await confirm({
|
|
33
|
+
message: 'Confirm?',
|
|
34
|
+
default: false,
|
|
35
|
+
});
|
|
36
|
+
if (!confirmed) {
|
|
37
|
+
console.log(chalk.gray('Delete cancelled'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Ctrl+C
|
|
43
|
+
console.log(chalk.gray('Delete cancelled'));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Get the PRD directory (parent of prd.md)
|
|
48
|
+
const prdDir = dirname(info.files.prdMd.path);
|
|
49
|
+
// Delete the entire PRD directory
|
|
50
|
+
await rm(prdDir, { recursive: true, force: true });
|
|
51
|
+
console.log(chalk.green(`Deleted PRD '${name}'`));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=prd-delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-delete.js","sourceRoot":"","sources":["../../src/commands/prd-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAsB;IAClE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;IAEnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,IAAI,aAAa,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,gCAAgC;IAChC,MAAM,aAAa,GAAa,EAAE,CAAA;IAClC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACtE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;QAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;QAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5E,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,SAAS,CAAC,CAAA;IACjG,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAA;QACtD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;gBAC9B,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,KAAK;aACf,CAAC,CAAA;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;gBAC3C,OAAM;YACR,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;YACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAC3C,OAAM;QACR,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE7C,kCAAkC;IAClC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-info.d.ts","sourceRoot":"","sources":["../../src/commands/prd-info.ts"],"names":[],"mappings":"AAiCA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCzD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getPrdInfo } from '../prd/index.js';
|
|
3
|
+
function statusLabel(status) {
|
|
4
|
+
switch (status) {
|
|
5
|
+
case 'not_found':
|
|
6
|
+
return chalk.red('not_found');
|
|
7
|
+
case 'partial':
|
|
8
|
+
return chalk.yellow('partial (not registered)');
|
|
9
|
+
case 'pending':
|
|
10
|
+
return chalk.gray('pending');
|
|
11
|
+
case 'in_progress':
|
|
12
|
+
return chalk.yellow('in_progress');
|
|
13
|
+
case 'completed':
|
|
14
|
+
return chalk.green('completed');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function fileLabel(exists, path) {
|
|
18
|
+
if (exists) {
|
|
19
|
+
return path;
|
|
20
|
+
}
|
|
21
|
+
return chalk.gray('(not created)');
|
|
22
|
+
}
|
|
23
|
+
function iterationsLabel(exists, path, fileCount) {
|
|
24
|
+
if (exists) {
|
|
25
|
+
return `${path} (${fileCount} files)`;
|
|
26
|
+
}
|
|
27
|
+
return chalk.gray('(not created)');
|
|
28
|
+
}
|
|
29
|
+
export async function prdInfo(name) {
|
|
30
|
+
const info = await getPrdInfo(name);
|
|
31
|
+
if (!info.found) {
|
|
32
|
+
console.error(chalk.red(`Error: PRD '${name}' not found`));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(`${chalk.bold('PRD:')} ${info.name}`);
|
|
37
|
+
if (info.status === 'partial') {
|
|
38
|
+
console.log(`${chalk.bold('Status:')} ${statusLabel(info.status)}`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log(`${chalk.bold('Status:')} ${statusLabel(info.status)} (${info.tasksCompleted}/${info.tasksTotal} tasks complete)`);
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
44
|
+
console.log(chalk.bold('Files:'));
|
|
45
|
+
console.log(` prd.md: ${fileLabel(info.files.prdMd.exists, info.files.prdMd.path)}`);
|
|
46
|
+
if (info.status === 'partial') {
|
|
47
|
+
console.log(` prd.json: ${chalk.gray("(not created - run 'ralph prd add')")}`);
|
|
48
|
+
console.log(` progress: ${chalk.gray('(not created)')}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(` prd.json: ${fileLabel(info.files.prdJson.exists, info.files.prdJson.path)}`);
|
|
52
|
+
console.log(` progress: ${fileLabel(info.files.progress.exists, info.files.progress.path)}`);
|
|
53
|
+
}
|
|
54
|
+
console.log(` iterations: ${iterationsLabel(info.files.iterations.exists, info.files.iterations.path, info.files.iterations.fileCount)}`);
|
|
55
|
+
console.log();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=prd-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-info.js","sourceRoot":"","sources":["../../src/commands/prd-info.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,8 @@ import { program } from 'commander';
|
|
|
3
3
|
import { run } from './commands/run.js';
|
|
4
4
|
import { prdAdd } from './commands/prd-add.js';
|
|
5
5
|
import { prdList } from './commands/prd-list.js';
|
|
6
|
+
import { prdInfo } from './commands/prd-info.js';
|
|
7
|
+
import { prdDelete } from './commands/prd-delete.js';
|
|
6
8
|
import { init } from './commands/init.js';
|
|
7
9
|
program
|
|
8
10
|
.name('ralph')
|
|
@@ -28,5 +30,16 @@ prd
|
|
|
28
30
|
.option('-a, --agent <agent>', 'Agent type', 'claude')
|
|
29
31
|
.action(prdAdd);
|
|
30
32
|
prd.command('list').description('List all PRDs').action(prdList);
|
|
33
|
+
prd
|
|
34
|
+
.command('info')
|
|
35
|
+
.description('Show PRD info and file locations')
|
|
36
|
+
.argument('<name>', 'Name of PRD')
|
|
37
|
+
.action(prdInfo);
|
|
38
|
+
prd
|
|
39
|
+
.command('delete')
|
|
40
|
+
.description('Delete PRD and all associated files')
|
|
41
|
+
.argument('<name>', 'Name of PRD to delete')
|
|
42
|
+
.option('-f, --force', 'Skip confirmation prompt')
|
|
43
|
+
.action(prdDelete);
|
|
31
44
|
program.parse();
|
|
32
45
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,IAAI,CAAC,CAAA;AAEf,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;KAC5C,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrD,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,GAAG,CAAC;KAChE,MAAM,CAAC,GAAG,CAAC,CAAA;AAEd,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAE7D,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACtC,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrD,MAAM,CAAC,MAAM,CAAC,CAAA;AAEjB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAEhE,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,IAAI,CAAC,CAAA;AAEf,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;KAC5C,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrD,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,GAAG,CAAC;KAChE,MAAM,CAAC,GAAG,CAAC,CAAA;AAEd,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAE7D,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACtC,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrD,MAAM,CAAC,MAAM,CAAC,CAAA;AAEjB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAEhE,GAAG;KACA,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;KACjC,MAAM,CAAC,OAAO,CAAC,CAAA;AAElB,GAAG;KACA,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KAC3C,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,SAAS,CAAC,CAAA;AAEpB,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
package/dist/init/templates.d.ts
CHANGED
|
@@ -5,9 +5,13 @@ export declare class BundledTemplateNotFoundError extends Error {
|
|
|
5
5
|
export declare function getClaudeDir(): string;
|
|
6
6
|
export declare function getTargetSkillDir(): string;
|
|
7
7
|
export declare function getTargetSkillPath(): string;
|
|
8
|
+
export declare function getTargetRalphSkillDir(): string;
|
|
9
|
+
export declare function getTargetRalphSkillPath(): string;
|
|
8
10
|
export declare function getTargetCommandPath(): string;
|
|
9
11
|
export declare function getBundledSkillPath(): string;
|
|
10
12
|
export declare function getBundledCommandPath(): string;
|
|
13
|
+
export declare function getBundledRalphSkillPath(): string;
|
|
11
14
|
export declare function loadBundledSkill(): Promise<string>;
|
|
12
15
|
export declare function loadBundledCommand(): Promise<string>;
|
|
16
|
+
export declare function loadBundledRalphSkill(): Promise<string>;
|
|
13
17
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAQA,qBAAa,4BAA6B,SAAQ,KAAK;aACzB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAOxD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D"}
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAQA,qBAAa,4BAA6B,SAAQ,KAAK;aACzB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAOxD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO7D"}
|
package/dist/init/templates.js
CHANGED
|
@@ -21,6 +21,12 @@ export function getTargetSkillDir() {
|
|
|
21
21
|
export function getTargetSkillPath() {
|
|
22
22
|
return join(getTargetSkillDir(), 'SKILL.md');
|
|
23
23
|
}
|
|
24
|
+
export function getTargetRalphSkillDir() {
|
|
25
|
+
return join(getClaudeDir(), 'skills', 'ralph');
|
|
26
|
+
}
|
|
27
|
+
export function getTargetRalphSkillPath() {
|
|
28
|
+
return join(getTargetRalphSkillDir(), 'SKILL.md');
|
|
29
|
+
}
|
|
24
30
|
export function getTargetCommandPath() {
|
|
25
31
|
return join(getClaudeDir(), 'commands', 'ralph-complete-next-task.md');
|
|
26
32
|
}
|
|
@@ -30,6 +36,9 @@ export function getBundledSkillPath() {
|
|
|
30
36
|
export function getBundledCommandPath() {
|
|
31
37
|
return join(__dirname, '../../templates/ralph-complete-next-task-command.md');
|
|
32
38
|
}
|
|
39
|
+
export function getBundledRalphSkillPath() {
|
|
40
|
+
return join(__dirname, '../../templates/ralph-skill.md');
|
|
41
|
+
}
|
|
33
42
|
export async function loadBundledSkill() {
|
|
34
43
|
const path = getBundledSkillPath();
|
|
35
44
|
try {
|
|
@@ -48,4 +57,13 @@ export async function loadBundledCommand() {
|
|
|
48
57
|
throw new BundledTemplateNotFoundError(path);
|
|
49
58
|
}
|
|
50
59
|
}
|
|
60
|
+
export async function loadBundledRalphSkill() {
|
|
61
|
+
const path = getBundledRalphSkillPath();
|
|
62
|
+
try {
|
|
63
|
+
return await readFile(path, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
throw new BundledTemplateNotFoundError(path);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
51
69
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACzB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,+BAA+B,IAAI,8BAA8B,CAAC,CAAA;QAD9C,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,SAAS,EAAE,qDAAqD,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAA;IACpC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACzB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,+BAA+B,IAAI,8BAA8B,CAAC,CAAA;QAD9C,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,sBAAsB,EAAE,EAAE,UAAU,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,SAAS,EAAE,qDAAqD,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAA;IACpC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAA;IACvC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC"}
|
package/dist/prd/manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PrdDirMode, PrdJson, PrdLocation, PrdStatus } from './types.js';
|
|
1
|
+
import type { PrdDirMode, PrdInfo, PrdJson, PrdLocation, PrdStatus } from './types.js';
|
|
2
2
|
export declare function getLocalPrdsDir(): string;
|
|
3
3
|
export declare function getGlobalPrdsDir(): string;
|
|
4
4
|
export declare function getPrdsDir(): string;
|
|
@@ -19,4 +19,5 @@ export declare function createPrdFolder(name: string, location?: PrdLocation): P
|
|
|
19
19
|
export declare function copyMarkdown(src: string, name: string): Promise<void>;
|
|
20
20
|
export declare function getPrd(name: string): Promise<PrdJson>;
|
|
21
21
|
export declare function listPrds(): Promise<PrdStatus[]>;
|
|
22
|
+
export declare function getPrdInfo(name: string): Promise<PrdInfo>;
|
|
22
23
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/prd/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EAEV,MAAM,YAAY,CAAA;AAEnB,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAoBD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AAE3D;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG7D;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAC5B,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,WAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB3D;AA8BD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAiDrD"}
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/prd/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EAEV,MAAM,YAAY,CAAA;AAEnB,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAoBD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AAE3D;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG7D;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAC5B,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,WAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB3D;AA8BD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAiDrD;AAWD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6E/D"}
|
package/dist/prd/manager.js
CHANGED
|
@@ -203,4 +203,89 @@ export async function listPrds() {
|
|
|
203
203
|
}
|
|
204
204
|
return results;
|
|
205
205
|
}
|
|
206
|
+
async function countIterationFiles(iterationsDir) {
|
|
207
|
+
try {
|
|
208
|
+
const entries = await readdir(iterationsDir);
|
|
209
|
+
return entries.length;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
export async function getPrdInfo(name) {
|
|
216
|
+
const localDir = getLocalPrdDir(name);
|
|
217
|
+
const globalDir = getGlobalPrdDir(name);
|
|
218
|
+
const localExists = await dirExists(localDir);
|
|
219
|
+
const globalExists = await dirExists(globalDir);
|
|
220
|
+
// Determine which location to use (local takes precedence)
|
|
221
|
+
const found = localExists || globalExists;
|
|
222
|
+
const location = localExists ? 'local' : 'global';
|
|
223
|
+
const prdDir = localExists ? localDir : globalDir;
|
|
224
|
+
// Build file paths
|
|
225
|
+
const prdMdPath = join(prdDir, 'prd.md');
|
|
226
|
+
const prdJsonPath = join(prdDir, 'prd.json');
|
|
227
|
+
const progressPath = join(prdDir, 'progress.txt');
|
|
228
|
+
const iterationsPath = join(prdDir, 'iterations');
|
|
229
|
+
// Check file existence
|
|
230
|
+
const hasMd = found && (await fileExists(prdMdPath));
|
|
231
|
+
const hasJson = found && (await fileExists(prdJsonPath));
|
|
232
|
+
const hasProgress = found && (await fileExists(progressPath));
|
|
233
|
+
const hasIterations = found && (await dirExists(iterationsPath));
|
|
234
|
+
const iterationCount = hasIterations ? await countIterationFiles(iterationsPath) : 0;
|
|
235
|
+
// Determine status
|
|
236
|
+
let status = 'not_found';
|
|
237
|
+
let tasksCompleted = 0;
|
|
238
|
+
let tasksTotal = 0;
|
|
239
|
+
if (!found) {
|
|
240
|
+
status = 'not_found';
|
|
241
|
+
}
|
|
242
|
+
else if (hasMd && !hasJson) {
|
|
243
|
+
status = 'partial';
|
|
244
|
+
}
|
|
245
|
+
else if (hasJson) {
|
|
246
|
+
// Read prd.json to compute status
|
|
247
|
+
try {
|
|
248
|
+
const content = await readFile(prdJsonPath, 'utf-8');
|
|
249
|
+
const prd = JSON.parse(content);
|
|
250
|
+
// Validate tasks array exists
|
|
251
|
+
if (!prd.tasks || !Array.isArray(prd.tasks)) {
|
|
252
|
+
status = 'partial';
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
tasksTotal = prd.tasks.length;
|
|
256
|
+
tasksCompleted = prd.tasks.filter((t) => t.passes).length;
|
|
257
|
+
if (tasksTotal === 0) {
|
|
258
|
+
// Empty tasks array = pending, not completed
|
|
259
|
+
status = 'pending';
|
|
260
|
+
}
|
|
261
|
+
else if (tasksCompleted === 0) {
|
|
262
|
+
status = 'pending';
|
|
263
|
+
}
|
|
264
|
+
else if (tasksCompleted === tasksTotal) {
|
|
265
|
+
status = 'completed';
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
status = 'in_progress';
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
status = 'partial';
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
name,
|
|
278
|
+
found,
|
|
279
|
+
location,
|
|
280
|
+
status,
|
|
281
|
+
tasksCompleted,
|
|
282
|
+
tasksTotal,
|
|
283
|
+
files: {
|
|
284
|
+
prdMd: { path: prdMdPath, exists: hasMd },
|
|
285
|
+
prdJson: { path: prdJsonPath, exists: hasJson },
|
|
286
|
+
progress: { path: progressPath, exists: hasProgress },
|
|
287
|
+
iterations: { path: iterationsPath, exists: hasIterations, fileCount: iterationCount },
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
|
206
291
|
//# sourceMappingURL=manager.js.map
|
package/dist/prd/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/prd/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/prd/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/prd/types.d.ts
CHANGED
|
@@ -30,4 +30,27 @@ export interface PrdStatus {
|
|
|
30
30
|
tasksCompleted: number;
|
|
31
31
|
location: 'local' | 'global';
|
|
32
32
|
}
|
|
33
|
+
export interface PrdFileInfo {
|
|
34
|
+
path: string;
|
|
35
|
+
exists: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface PrdIterationsInfo {
|
|
38
|
+
path: string;
|
|
39
|
+
exists: boolean;
|
|
40
|
+
fileCount: number;
|
|
41
|
+
}
|
|
42
|
+
export interface PrdInfo {
|
|
43
|
+
name: string;
|
|
44
|
+
found: boolean;
|
|
45
|
+
location: 'local' | 'global';
|
|
46
|
+
status: 'not_found' | 'partial' | 'in_progress' | 'pending' | 'completed';
|
|
47
|
+
tasksCompleted: number;
|
|
48
|
+
tasksTotal: number;
|
|
49
|
+
files: {
|
|
50
|
+
prdMd: PrdFileInfo;
|
|
51
|
+
prdJson: PrdFileInfo;
|
|
52
|
+
progress: PrdFileInfo;
|
|
53
|
+
iterations: PrdIterationsInfo;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
33
56
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/prd/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prd/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;AAEnE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AAEzC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC7B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prd/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;AAEnE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AAEzC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,CAAA;IACzE,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE;QACL,KAAK,EAAE,WAAW,CAAA;QAClB,OAAO,EAAE,WAAW,CAAA;QACpB,QAAQ,EAAE,WAAW,CAAA;QACrB,UAAU,EAAE,iBAAiB,CAAA;KAC9B,CAAA;CACF"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralph
|
|
3
|
+
description: CLI tool for running AI agents in loops with PRD-driven task execution. Use to understand ralph commands, PRD lifecycle, and file structure.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ralph CLI
|
|
7
|
+
|
|
8
|
+
Ralph runs AI agents headlessly in loops, executing tasks from structured PRDs.
|
|
9
|
+
|
|
10
|
+
## Getting Started
|
|
11
|
+
|
|
12
|
+
Run `ralph --help` to discover available commands:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ralph --help
|
|
16
|
+
ralph prd --help
|
|
17
|
+
ralph run --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## PRD Lifecycle
|
|
21
|
+
|
|
22
|
+
1. **Create** - Write PRD markdown in `.ralph/prd/<name>/prd.md` (or use `ralph-prd` skill)
|
|
23
|
+
2. **Register** - `ralph prd add <path> <name>` converts markdown to JSON tasks
|
|
24
|
+
3. **Execute** - `ralph run <name>` loops agent against tasks until complete
|
|
25
|
+
|
|
26
|
+
## File Structure
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
.ralph/
|
|
30
|
+
├── config.json # Project configuration
|
|
31
|
+
└── prd/
|
|
32
|
+
└── <prd-name>/
|
|
33
|
+
├── prd.md # Original PRD markdown
|
|
34
|
+
├── prd.json # Structured tasks (auto-generated)
|
|
35
|
+
├── progress.txt # Cross-iteration memory
|
|
36
|
+
└── iterations/ # Agent session logs
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Location Priority
|
|
40
|
+
|
|
41
|
+
Local (`.ralph/prd/`) takes precedence over global (`~/.ralph/prd/`).
|