forge-dev-framework 1.0.1 → 1.2.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/.claude/commands/forge/README.md +281 -0
- package/.claude/commands/forge/add-phase.md +90 -0
- package/.claude/commands/forge/complete-milestone.md +130 -0
- package/.claude/commands/forge/config.md +115 -0
- package/.claude/commands/forge/convert.md +31 -0
- package/.claude/commands/forge/debug.md +31 -0
- package/.claude/commands/forge/discuss.md +78 -0
- package/.claude/commands/forge/execute.md +85 -0
- package/.claude/commands/forge/generate.md +21 -0
- package/.claude/commands/forge/help.md +18 -0
- package/.claude/commands/forge/init.md +21 -0
- package/.claude/commands/forge/insert-phase.md +99 -0
- package/.claude/commands/forge/new-milestone.md +114 -0
- package/.claude/commands/forge/new-project.md +24 -0
- package/.claude/commands/forge/pause-work.md +111 -0
- package/.claude/commands/forge/plan.md +129 -0
- package/.claude/commands/forge/quick.md +41 -0
- package/.claude/commands/forge/remove-phase.md +92 -0
- package/.claude/commands/forge/resume.md +22 -0
- package/.claude/commands/forge/status.md +87 -0
- package/.claude/commands/forge/team-add.md +24 -0
- package/.claude/commands/forge/team-create.md +22 -0
- package/.claude/commands/forge/team-remove.md +24 -0
- package/.claude/commands/forge/team-start.md +22 -0
- package/.claude/commands/forge/team-view.md +18 -0
- package/.claude/commands/forge/verify.md +95 -0
- package/.claude/hooks/forge-context-cleanup.cjs +79 -0
- package/.claude/hooks/forge-event-guard.cjs +36 -0
- package/.claude/hooks/forge-size-guard.cjs +55 -0
- package/.claude/rules/api-patterns.md +13 -98
- package/.claude/rules/context-efficiency.md +10 -0
- package/.claude/rules/security-baseline.md +18 -204
- package/.claude/rules/testing-standards.md +16 -177
- package/.claude/rules/ui-conventions.md +17 -142
- package/README.md +1 -0
- package/bin/forge.js +5 -3
- package/dist/bin/forge.js +5 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/convert.d.ts +6 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +132 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +3 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/index.d.ts +4 -4
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -4
- package/dist/commands/index.js.map +1 -1
- package/dist/generators/gsd-converter.d.ts +100 -0
- package/dist/generators/gsd-converter.d.ts.map +1 -0
- package/dist/generators/gsd-converter.js +335 -0
- package/dist/generators/gsd-converter.js.map +1 -0
- package/dist/templates/.claude/rules/api-patterns.md.template +212 -0
- package/dist/templates/.claude/rules/security-baseline.md.template +322 -0
- package/dist/templates/.claude/rules/testing-standards.md.template +280 -0
- package/dist/templates/.claude/rules/ui-conventions.md.template +264 -0
- package/dist/templates/.planning/forge.config.json.template +75 -0
- package/dist/templates/CLAUDE.md.template +161 -0
- package/dist/templates/PLAN.md.template +177 -0
- package/dist/templates/PROJECT.md.template +156 -0
- package/dist/templates/REQUIREMENTS.md.template +221 -0
- package/dist/templates/ROADMAP.md.template +130 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/template-client.d.ts.map +1 -1
- package/dist/utils/template-client.js +3 -2
- package/dist/utils/template-client.js.map +1 -1
- package/package.json +6 -4
- package/dist/git/__tests__/worktree.test.d.ts +0 -5
- package/dist/git/__tests__/worktree.test.d.ts.map +0 -1
- package/dist/git/__tests__/worktree.test.js +0 -121
- package/dist/git/__tests__/worktree.test.js.map +0 -1
- package/dist/git/codeowners.d.ts +0 -101
- package/dist/git/codeowners.d.ts.map +0 -1
- package/dist/git/codeowners.js +0 -216
- package/dist/git/codeowners.js.map +0 -1
- package/dist/git/commit.d.ts +0 -135
- package/dist/git/commit.d.ts.map +0 -1
- package/dist/git/commit.js +0 -223
- package/dist/git/commit.js.map +0 -1
- package/dist/git/hooks/commit-msg.d.ts +0 -8
- package/dist/git/hooks/commit-msg.d.ts.map +0 -1
- package/dist/git/hooks/commit-msg.js +0 -34
- package/dist/git/hooks/commit-msg.js.map +0 -1
- package/dist/git/hooks/pre-commit.d.ts +0 -8
- package/dist/git/hooks/pre-commit.d.ts.map +0 -1
- package/dist/git/hooks/pre-commit.js +0 -34
- package/dist/git/hooks/pre-commit.js.map +0 -1
- package/dist/git/pre-commit-hooks.d.ts +0 -117
- package/dist/git/pre-commit-hooks.d.ts.map +0 -1
- package/dist/git/pre-commit-hooks.js +0 -270
- package/dist/git/pre-commit-hooks.js.map +0 -1
- package/dist/git/wipe-protocol.d.ts +0 -281
- package/dist/git/wipe-protocol.d.ts.map +0 -1
- package/dist/git/wipe-protocol.js +0 -237
- package/dist/git/wipe-protocol.js.map +0 -1
- package/dist/git/worktree.d.ts +0 -69
- package/dist/git/worktree.d.ts.map +0 -1
- package/dist/git/worktree.js +0 -202
- package/dist/git/worktree.js.map +0 -1
|
@@ -1,142 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- Green
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### Error Messages
|
|
19
|
-
|
|
20
|
-
- Red ✗ or [ERROR] prefix
|
|
21
|
-
- What went wrong + why + how to fix
|
|
22
|
-
- Stack traces only in --debug mode
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
✗ Failed to merge events: Invalid event format in evt-003.json
|
|
26
|
-
→ Run 'forge validate' to check event schemas
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Warning Messages
|
|
30
|
-
|
|
31
|
-
- Yellow ⚠ prefix
|
|
32
|
-
- Not blocking, but noteworthy
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
⚠ Task api-003 is blocked by api-001 (in_progress)
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Info Messages
|
|
39
|
-
|
|
40
|
-
- Blue → prefix for steps
|
|
41
|
-
- Show progress for long operations
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
→ Loading events from state/events/...
|
|
45
|
-
→ Found 47 events, merging...
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Progress Indicators
|
|
49
|
-
|
|
50
|
-
For operations >2 seconds, show progress:
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
import ora from 'ora';
|
|
54
|
-
|
|
55
|
-
const spinner = ora('Initializing project...').start();
|
|
56
|
-
// ... work ...
|
|
57
|
-
spinner.succeed('Project initialized');
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Help Text Format
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
forge init Initialize a new FORGE project
|
|
64
|
-
|
|
65
|
-
USAGE:
|
|
66
|
-
forge init [options]
|
|
67
|
-
|
|
68
|
-
OPTIONS:
|
|
69
|
-
--name <name> Project name (default: current directory)
|
|
70
|
-
--quick Skip interactive prompts (use defaults)
|
|
71
|
-
|
|
72
|
-
EXAMPLES:
|
|
73
|
-
$ forge init
|
|
74
|
-
$ forge init --name my-app --quick
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Interactive Prompts
|
|
78
|
-
|
|
79
|
-
When prompting users:
|
|
80
|
-
- Show current value in brackets: `[default: my-app]`
|
|
81
|
-
- Allow (y/N) confirmations
|
|
82
|
-
- Validate input before accepting
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
import inquirer from 'inquirer';
|
|
86
|
-
|
|
87
|
-
const answers = await inquirer.prompt([
|
|
88
|
-
{
|
|
89
|
-
type: 'input',
|
|
90
|
-
name: 'projectName',
|
|
91
|
-
message: 'Project name:',
|
|
92
|
-
default: path.basename(process.cwd()),
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
type: 'confirm',
|
|
96
|
-
name: 'confirm',
|
|
97
|
-
message: 'Initialize project?',
|
|
98
|
-
default: true,
|
|
99
|
-
},
|
|
100
|
-
]);
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Tables and Lists
|
|
104
|
-
|
|
105
|
-
For structured output (status, tasks, events):
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
CURRENT TASKS:
|
|
109
|
-
|
|
110
|
-
ID STATUS OWNER TITLE
|
|
111
|
-
──────────────────────────────────────────────────────
|
|
112
|
-
api-001 completed backend User CRUD API
|
|
113
|
-
api-002 in_progress backend Auth service
|
|
114
|
-
ui-001 pending frontend Login form
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## ASCII Art Banner
|
|
118
|
-
|
|
119
|
-
Show on startup:
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
█ ██ ██
|
|
123
|
-
█ █ █ █ █ █
|
|
124
|
-
███ █ █
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Exit Codes
|
|
128
|
-
|
|
129
|
-
- `0`: Success
|
|
130
|
-
- `1`: General error
|
|
131
|
-
- `2`: Invalid arguments
|
|
132
|
-
- `3`: State corruption
|
|
133
|
-
- `4`: Git error
|
|
134
|
-
|
|
135
|
-
## Verbose Flag
|
|
136
|
-
|
|
137
|
-
Support `-v` / `--verbose` for debug output:
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
forge merge -v
|
|
141
|
-
# → Shows detailed event replay, validation errors, etc.
|
|
142
|
-
```
|
|
1
|
+
---
|
|
2
|
+
globs:
|
|
3
|
+
- "src/cli/**/*.ts"
|
|
4
|
+
- "src/commands/**/*.ts"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CLI UI Conventions
|
|
8
|
+
|
|
9
|
+
- **Success:** Green ✓ + concise message + what changed
|
|
10
|
+
- **Error:** Red ✗ + what went wrong + how to fix (stack traces only with `--debug`)
|
|
11
|
+
- **Warning:** Yellow ⚠ + non-blocking info
|
|
12
|
+
- **Info:** Blue → + progress steps
|
|
13
|
+
- **Progress:** Use `ora` spinner for ops >2 seconds
|
|
14
|
+
- **Help:** `USAGE → OPTIONS → EXAMPLES` format
|
|
15
|
+
- **Tables:** Header row + separator line for structured output (status, tasks)
|
|
16
|
+
- **Exit codes:** 0=success, 1=error, 2=bad args, 3=state corruption, 4=git error
|
|
17
|
+
- **Verbose:** Support `-v`/`--verbose` for debug output
|
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@ A multi-agent development framework for Claude Code Agent Teams that forges prod
|
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/forge-dev-framework)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
10
|
|
|
10
11
|
## Features
|
|
11
12
|
|
package/bin/forge.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* FORGE CLI Executable
|
|
5
5
|
* Entry point for the `forge` command
|
|
6
|
-
* This is the
|
|
6
|
+
* This is the source version — build copies it to dist/bin/
|
|
7
|
+
* and adjusts the import path via build:bin
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
|
-
import {
|
|
10
|
+
import { ForgeCLI } from '../cli/index.js';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
const cli = new ForgeCLI();
|
|
13
|
+
cli.run().catch((error) => {
|
|
12
14
|
console.error('FORGE CLI crashed:', error);
|
|
13
15
|
process.exit(1);
|
|
14
16
|
});
|
package/dist/bin/forge.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* FORGE CLI Executable
|
|
5
5
|
* Entry point for the `forge` command
|
|
6
|
-
* This is the
|
|
6
|
+
* This is the source version — build copies it to dist/bin/
|
|
7
|
+
* and adjusts the import path via build:bin
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
|
-
import {
|
|
10
|
+
import { ForgeCLI } from '../cli/index.js';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
const cli = new ForgeCLI();
|
|
13
|
+
cli.run().catch((error) => {
|
|
12
14
|
console.error('FORGE CLI crashed:', error);
|
|
13
15
|
process.exit(1);
|
|
14
16
|
});
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAiCH,cAAM,QAAQ;IACZ,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;;IAQvB,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,UAAU,IAAI,IAAI;IAalB;;OAEG;IACG,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBxD;AAQD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -14,10 +14,23 @@ import { StatusCommand } from '../commands/status.js';
|
|
|
14
14
|
import { ConfigCommand } from '../commands/config.js';
|
|
15
15
|
import { InitCommand } from '../commands/init.js';
|
|
16
16
|
import { GenerateCommand } from '../commands/generate.js';
|
|
17
|
+
import { ConvertCommand } from '../commands/convert.js';
|
|
17
18
|
import { createStubCommand } from '../commands/stubs.js';
|
|
18
19
|
import { Logger } from '../utils/logger.js';
|
|
20
|
+
import { readFileSync } from 'fs';
|
|
19
21
|
const __filename = fileURLToPath(import.meta.url);
|
|
20
22
|
const __dirname = path.dirname(__filename);
|
|
23
|
+
// Read version from package.json
|
|
24
|
+
function getVersion() {
|
|
25
|
+
try {
|
|
26
|
+
const pkgPath = path.resolve(__dirname, '..', '..', 'package.json');
|
|
27
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
28
|
+
return pkg.version || '0.0.0';
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return '0.0.0';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
21
34
|
class ForgeCLI {
|
|
22
35
|
program;
|
|
23
36
|
logger;
|
|
@@ -31,7 +44,7 @@ class ForgeCLI {
|
|
|
31
44
|
this.program
|
|
32
45
|
.name('forge')
|
|
33
46
|
.description('Full Orchestration for Rapid Git Engineering')
|
|
34
|
-
.version(
|
|
47
|
+
.version(getVersion())
|
|
35
48
|
.option('-q, --quiet', 'Suppress non-error output')
|
|
36
49
|
.option('-v, --verbose', 'Enable verbose output')
|
|
37
50
|
.option('--debug', 'Enable debug mode');
|
|
@@ -50,6 +63,7 @@ class ForgeCLI {
|
|
|
50
63
|
new StatusCommand(this.program).register();
|
|
51
64
|
new ConfigCommand(this.program).register();
|
|
52
65
|
new GenerateCommand(this.program).register();
|
|
66
|
+
new ConvertCommand(this.program).register();
|
|
53
67
|
new HelpCommand(this.program).register();
|
|
54
68
|
// Stub commands for future milestones
|
|
55
69
|
createStubCommand('scan', 'Map existing codebase (brownfield projects)')(this.program);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKzC,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,IAAI,IAAI;IAUV,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAkI3C"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { ForgeCommand } from './base.js';
|
|
2
|
+
import { convertGSDToForge, detectGSDProject } from '../generators/gsd-converter.js';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
export class ConvertCommand extends ForgeCommand {
|
|
6
|
+
register() {
|
|
7
|
+
this.program
|
|
8
|
+
.command('convert')
|
|
9
|
+
.description('Convert GSD project to FORGE format')
|
|
10
|
+
.option('-d, --dry-run', 'Preview changes without modifying files')
|
|
11
|
+
.option('-v, --verbose', 'Show detailed conversion output')
|
|
12
|
+
.option('-f, --force', 'Force conversion even if FORGE files exist')
|
|
13
|
+
.action((options) => this.execute(options));
|
|
14
|
+
}
|
|
15
|
+
async execute(options) {
|
|
16
|
+
const projectPath = process.cwd();
|
|
17
|
+
this.logger.header('FORGE — GSD to FORGE Converter');
|
|
18
|
+
// Detect GSD project
|
|
19
|
+
this.logger.info('Detecting GSD project...');
|
|
20
|
+
const gsdInfo = await detectGSDProject(projectPath);
|
|
21
|
+
if (!gsdInfo.hasProjectMd && !gsdInfo.hasPlanningDir) {
|
|
22
|
+
this.logger.error('Not a GSD project');
|
|
23
|
+
this.logger.info('Expected: PROJECT.md or .planning/ directory');
|
|
24
|
+
this.logger.info('Use "forge init" to initialize a new FORGE project.');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Show detected project info
|
|
28
|
+
this.logger.success('Found GSD project');
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk.cyan(' Project Information:'));
|
|
31
|
+
console.log(` Name: ${gsdInfo.name || path.basename(projectPath)}`);
|
|
32
|
+
console.log(` PROJECT.md: ${gsdInfo.hasProjectMd ? chalk.green('✓') : chalk.red('✗')}`);
|
|
33
|
+
console.log(` ROADMAP.md: ${gsdInfo.hasRoadmapMd ? chalk.green('✓') : chalk.red('✗')}`);
|
|
34
|
+
console.log(` .planning/: ${gsdInfo.hasPlanningDir ? chalk.green('✓') : chalk.red('✗')}`);
|
|
35
|
+
if (gsdInfo.phases.length > 0) {
|
|
36
|
+
console.log(` Phases: ${gsdInfo.phases.length} found`);
|
|
37
|
+
}
|
|
38
|
+
console.log();
|
|
39
|
+
// Check for existing FORGE files
|
|
40
|
+
const hasClaudeMd = gsdInfo.hasProjectMd; // Will be overwritten
|
|
41
|
+
const hasStateDir = true; // Will create it
|
|
42
|
+
if (!options.force && hasClaudeMd) {
|
|
43
|
+
// Check if it's already a FORGE project
|
|
44
|
+
const { readFile } = await import('fs/promises');
|
|
45
|
+
try {
|
|
46
|
+
const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
|
|
47
|
+
const content = await readFile(claudeMdPath, 'utf-8');
|
|
48
|
+
if (content.includes('FORGE')) {
|
|
49
|
+
this.logger.warning('This appears to already be a FORGE project');
|
|
50
|
+
this.logger.info('Use --force to overwrite existing FORGE files.');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// CLAUDE.md doesn't exist yet
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Dry run mode
|
|
59
|
+
if (options.dryRun) {
|
|
60
|
+
this.logger.info('Dry run mode — no files will be modified');
|
|
61
|
+
console.log();
|
|
62
|
+
const result = await convertGSDToForge(projectPath, {
|
|
63
|
+
dryRun: true,
|
|
64
|
+
verbose: options.verbose,
|
|
65
|
+
});
|
|
66
|
+
if (result.success) {
|
|
67
|
+
this.logger.success(result.message);
|
|
68
|
+
if (result.warnings.length > 0) {
|
|
69
|
+
console.log();
|
|
70
|
+
this.logger.warning('Warnings:');
|
|
71
|
+
result.warnings.forEach((w) => console.log(chalk.yellow(` ⚠ ${w}`)));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.logger.error(result.message);
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Confirm conversion
|
|
80
|
+
if (process.stdout.isTTY) {
|
|
81
|
+
const inquirer = await import('inquirer');
|
|
82
|
+
const { confirm } = await inquirer.default.prompt([
|
|
83
|
+
{
|
|
84
|
+
type: 'confirm',
|
|
85
|
+
name: 'confirm',
|
|
86
|
+
message: 'Convert this GSD project to FORGE?',
|
|
87
|
+
default: true,
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
90
|
+
if (!confirm) {
|
|
91
|
+
this.logger.info('Conversion cancelled.');
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Perform conversion
|
|
96
|
+
this.logger.info('Converting GSD project to FORGE...');
|
|
97
|
+
console.log();
|
|
98
|
+
const result = await convertGSDToForge(projectPath, {
|
|
99
|
+
dryRun: false,
|
|
100
|
+
verbose: options.verbose,
|
|
101
|
+
});
|
|
102
|
+
if (result.success) {
|
|
103
|
+
this.logger.success(result.message);
|
|
104
|
+
console.log();
|
|
105
|
+
if (result.filesCreated.length > 0) {
|
|
106
|
+
console.log(chalk.cyan('Files created:'));
|
|
107
|
+
result.filesCreated.forEach((file) => {
|
|
108
|
+
const relPath = path.relative(projectPath, file);
|
|
109
|
+
console.log(chalk.green(` ✓ ${relPath}`));
|
|
110
|
+
});
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
if (result.warnings.length > 0) {
|
|
114
|
+
this.logger.warning('Warnings:');
|
|
115
|
+
result.warnings.forEach((w) => console.log(chalk.yellow(` ⚠ ${w}`)));
|
|
116
|
+
console.log();
|
|
117
|
+
}
|
|
118
|
+
// Next steps
|
|
119
|
+
console.log(chalk.cyan('Next steps:'));
|
|
120
|
+
console.log(` ${chalk.dim('1.')} Review the generated CLAUDE.md`);
|
|
121
|
+
console.log(` ${chalk.dim('2.')} Run ${chalk.cyan('/forge:status')} to verify the conversion`);
|
|
122
|
+
console.log(` ${chalk.dim('3.')} Run ${chalk.cyan('/forge:plan <phase-number>')} to create detailed task plans`);
|
|
123
|
+
console.log(` ${chalk.dim('Tip:')} Use ${chalk.cyan('/clear')} to start from a fresh context`);
|
|
124
|
+
console.log();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.logger.error(result.message);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,IAAI,IAAI;IASV,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,IAAI,IAAI;IASV,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA6F5D;;OAEG;YACW,WAAW;IA4CzB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAajB"}
|
|
@@ -61,8 +61,9 @@ export class GenerateCommand extends ForgeCommand {
|
|
|
61
61
|
logger.info('Available artifacts: claude, project, requirements, roadmap, plan, config, rules');
|
|
62
62
|
process.exit(1);
|
|
63
63
|
}
|
|
64
|
-
// Check if template exists
|
|
65
|
-
const
|
|
64
|
+
// Check if template exists — look in package install dir first, then project
|
|
65
|
+
const packageTemplatesDir = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', 'templates');
|
|
66
|
+
const templatePath = path.join(packageTemplatesDir, target.template);
|
|
66
67
|
const fs = await import('fs/promises');
|
|
67
68
|
try {
|
|
68
69
|
await fs.access(templatePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,QAAQ;QACN,IAAI,CAAC,OAAO;aACT,OAAO,CAAC,qBAAqB,CAAC;aAC9B,WAAW,CAAC,oCAAoC,CAAC;aACjD,QAAQ,CAAC,YAAY,EAAE,oFAAoF,CAAC;aAC5G,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;aAChE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAY;QAC1C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAElC,uCAAuC;YACvC,MAAM,WAAW,GAAmF;gBAClG,MAAM,EAAE;oBACN,QAAQ,EAAE,oBAAoB;oBAC9B,MAAM,EAAE,WAAW;oBACnB,cAAc,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;iBACvD;gBACD,OAAO,EAAE;oBACP,QAAQ,EAAE,qBAAqB;oBAC/B,MAAM,EAAE,YAAY;oBACpB,cAAc,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;iBACvD;gBACD,YAAY,EAAE;oBACZ,QAAQ,EAAE,0BAA0B;oBACpC,MAAM,EAAE,iBAAiB;oBACzB,cAAc,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;iBAC9D;gBACD,OAAO,EAAE;oBACP,QAAQ,EAAE,qBAAqB;oBAC/B,MAAM,EAAE,YAAY;oBACpB,cAAc,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;iBACxD;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE,kBAAkB;oBAC5B,MAAM,EAAE,SAAS;oBACjB,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC;iBAC7C;gBACD,MAAM,EAAE;oBACN,QAAQ,EAAE,4BAA4B;oBACtC,MAAM,EAAE,6BAA6B;oBACrC,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC;iBAC/D;gBACD,KAAK,EAAE;oBACL,QAAQ,EAAE,6BAA6B;oBACvC,MAAM,EAAE,gBAAgB;oBACxB,cAAc,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;iBACtC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FORGE Command Exports
|
|
3
3
|
*/
|
|
4
|
-
export * from './base';
|
|
5
|
-
export * from './help';
|
|
6
|
-
export * from './status';
|
|
7
|
-
export * from './config';
|
|
4
|
+
export * from './base.js';
|
|
5
|
+
export * from './help.js';
|
|
6
|
+
export * from './status.js';
|
|
7
|
+
export * from './config.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FORGE Command Exports
|
|
3
3
|
*/
|
|
4
|
-
export * from './base';
|
|
5
|
-
export * from './help';
|
|
6
|
-
export * from './status';
|
|
7
|
-
export * from './config';
|
|
4
|
+
export * from './base.js';
|
|
5
|
+
export * from './help.js';
|
|
6
|
+
export * from './status.js';
|
|
7
|
+
export * from './config.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GSD to FORGE Project Converter
|
|
3
|
+
*
|
|
4
|
+
* Converts existing GSD projects to FORGE format by:
|
|
5
|
+
* 1. Reading GSD artifacts (PROJECT.md, ROADMAP.md, phase plans)
|
|
6
|
+
* 2. Creating FORGE equivalents (CLAUDE.md, STATE.json)
|
|
7
|
+
* 3. Preserving roadmap and phase structure
|
|
8
|
+
*
|
|
9
|
+
* @private - Not published to NPM
|
|
10
|
+
*/
|
|
11
|
+
interface LocalTask {
|
|
12
|
+
id: string;
|
|
13
|
+
title: string;
|
|
14
|
+
ownerRole: string;
|
|
15
|
+
status: 'pending' | 'in_progress' | 'completed' | 'blocked';
|
|
16
|
+
deps: string[];
|
|
17
|
+
allowedPaths: string[];
|
|
18
|
+
acceptance: string[];
|
|
19
|
+
verify: string[];
|
|
20
|
+
commit: string | null;
|
|
21
|
+
requests: string[];
|
|
22
|
+
priority: number;
|
|
23
|
+
blockedBy: string[];
|
|
24
|
+
blocks: string[];
|
|
25
|
+
assignedTo: string | null;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
startedAt: string | null;
|
|
28
|
+
completedAt: string | null;
|
|
29
|
+
}
|
|
30
|
+
interface LocalProjectState {
|
|
31
|
+
name: string;
|
|
32
|
+
status: string;
|
|
33
|
+
currentMilestone: string;
|
|
34
|
+
currentPhase: number;
|
|
35
|
+
updatedAt: string;
|
|
36
|
+
}
|
|
37
|
+
interface LocalForgeState {
|
|
38
|
+
project: LocalProjectState;
|
|
39
|
+
tasks: LocalTask[];
|
|
40
|
+
contracts: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
path: string;
|
|
43
|
+
version: string;
|
|
44
|
+
publishedBy: string;
|
|
45
|
+
consumers: string[];
|
|
46
|
+
publishedAt?: string;
|
|
47
|
+
status?: string;
|
|
48
|
+
}>;
|
|
49
|
+
eventsPointer: string;
|
|
50
|
+
}
|
|
51
|
+
export interface GSDProjectInfo {
|
|
52
|
+
name: string;
|
|
53
|
+
hasProjectMd: boolean;
|
|
54
|
+
hasRoadmapMd: boolean;
|
|
55
|
+
hasPlanningDir: boolean;
|
|
56
|
+
phases: string[];
|
|
57
|
+
}
|
|
58
|
+
export interface ConversionResult {
|
|
59
|
+
success: boolean;
|
|
60
|
+
message: string;
|
|
61
|
+
filesCreated: string[];
|
|
62
|
+
warnings: string[];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Detect if current directory is a GSD project
|
|
66
|
+
*/
|
|
67
|
+
export declare function detectGSDProject(projectPath: string): Promise<GSDProjectInfo>;
|
|
68
|
+
/**
|
|
69
|
+
* Extract project metadata from PROJECT.md
|
|
70
|
+
*/
|
|
71
|
+
export declare function extractProjectMetadata(projectPath: string): Promise<{
|
|
72
|
+
name: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
techStack?: string[];
|
|
75
|
+
team?: string[];
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Generate CLAUDE.md from PROJECT.md content
|
|
79
|
+
*/
|
|
80
|
+
export declare function generateClaudeMd(projectPath: string): Promise<string>;
|
|
81
|
+
/**
|
|
82
|
+
* Extract tasks from GSD phase plans and convert to FORGE tasks
|
|
83
|
+
*/
|
|
84
|
+
export declare function extractTasksFromPhases(projectPath: string): Promise<{
|
|
85
|
+
currentMilestone: string;
|
|
86
|
+
tasks: LocalTask[];
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Create initial STATE.json for FORGE project
|
|
90
|
+
*/
|
|
91
|
+
export declare function createForgeState(projectName: string, tasks: LocalTask[]): Promise<LocalForgeState>;
|
|
92
|
+
/**
|
|
93
|
+
* Main conversion function
|
|
94
|
+
*/
|
|
95
|
+
export declare function convertGSDToForge(projectPath: string, options?: {
|
|
96
|
+
dryRun?: boolean;
|
|
97
|
+
verbose?: boolean;
|
|
98
|
+
}): Promise<ConversionResult>;
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=gsd-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsd-converter.d.ts","sourceRoot":"","sources":["../../src/generators/gsd-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAyDnF;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,CAsCD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E3E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAqD3D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,eAAe,CAAC,CAe1B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACpD,OAAO,CAAC,gBAAgB,CAAC,CAqG3B"}
|