@dewtech/dare-cli 2.6.0 → 2.9.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 +150 -3
- package/dist/__tests__/dag-runner/ralph-loop.test.js +5 -0
- package/dist/__tests__/dag-runner/ralph-loop.test.js.map +1 -1
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +15 -1
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +22 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/dag-runner/ralph-loop.d.ts.map +1 -1
- package/dist/dag-runner/ralph-loop.js +1 -0
- package/dist/dag-runner/ralph-loop.js.map +1 -1
- package/dist/utils/project-generator.d.ts +8 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +61 -3
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/stack-bootstrap.d.ts +15 -1
- package/dist/utils/stack-bootstrap.d.ts.map +1 -1
- package/dist/utils/stack-bootstrap.js +261 -33
- package/dist/utils/stack-bootstrap.js.map +1 -1
- package/package.json +1 -1
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -0
- package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -0
package/README.md
CHANGED
|
@@ -7,6 +7,117 @@ A structured methodology for AI-assisted software development with mandatory hum
|
|
|
7
7
|
[](https://www.npmjs.com/package/@dewtech/dare-cli)
|
|
8
8
|
[](https://github.com/dewtech-technologies/dare-method/blob/main/LICENSE)
|
|
9
9
|
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ⚠ Read this first — How `dare init` runs the official scaffold
|
|
13
|
+
|
|
14
|
+
`dare init` invokes the **official scaffold** of the stack you pick. That
|
|
15
|
+
means it literally runs:
|
|
16
|
+
|
|
17
|
+
| Stack | What `dare init` runs |
|
|
18
|
+
|-------|----------------------|
|
|
19
|
+
| `php-laravel` | `composer create-project laravel/laravel:^11 .` |
|
|
20
|
+
| `node-nestjs` | `npx @nestjs/cli new . --strict --skip-git` |
|
|
21
|
+
| `python-fastapi` | `python -m venv .venv && python -m pip install -r requirements.txt` |
|
|
22
|
+
| `rust-axum` | `cargo init` + write `Cargo.toml` (axum, sqlx, tokio…) |
|
|
23
|
+
| `go-gin` | `go mod init` + `go get gin/godotenv` + starter files |
|
|
24
|
+
| `go-stdlib` | `go mod init` + starter usando só `net/http` (zero deps externas) |
|
|
25
|
+
| `react`, `vue` | `npx degit vitejs/vite/packages/create-vite/template-<x> .` + `npm install` |
|
|
26
|
+
| `mcp-server-node-ts` | `npm init` + `@modelcontextprotocol/sdk` |
|
|
27
|
+
| `mcp-server-python` | `python -m venv .venv` + `pip install mcp[cli]` |
|
|
28
|
+
|
|
29
|
+
These need a working `composer` / `npm` / `cargo` / `python` / `go`
|
|
30
|
+
**somewhere**. There are three ways to provide it — you pick at init time
|
|
31
|
+
(prompt below), and the choice is saved in `dare.config.json` so
|
|
32
|
+
`dare bootstrap` reuses it later.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
? Toolchain for scaffolding (composer / npm / cargo / python / go):
|
|
36
|
+
❯ 🤖 Auto — use native if on PATH, else Docker (recommended)
|
|
37
|
+
🔧 Native only — require the CLI on PATH (faster, no Docker pulls)
|
|
38
|
+
🐳 Docker only — always use the official image (hermetic, no host install)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 🤖 Auto (default)
|
|
42
|
+
|
|
43
|
+
Tries the native CLI first. If missing, falls back to the official Docker
|
|
44
|
+
image automatically. If neither is present, fails fast with both install
|
|
45
|
+
links.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
which composer → ✓ found? use native
|
|
49
|
+
→ ✗ missing? which docker
|
|
50
|
+
→ ✓ found? docker run composer:latest …
|
|
51
|
+
→ ✗ missing? error: install Composer or Docker
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**When:** you don't know exactly what's installed; mixed teams (some
|
|
55
|
+
machines have the toolchain, some only have Docker). The same project
|
|
56
|
+
config (`dare.config.json` with `toolchain: auto`) works on every machine.
|
|
57
|
+
|
|
58
|
+
### 🔧 Native only
|
|
59
|
+
|
|
60
|
+
Requires the CLI on PATH. **Fails immediately** if missing — no Docker
|
|
61
|
+
fallback even if Docker is available.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
which composer → ✓ found? use native
|
|
65
|
+
→ ✗ missing? error: "Install Composer: https://getcomposer.org/"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**When:** you already have the toolchain and want **maximum speed** (no
|
|
69
|
+
`docker pull`, no bind-mount overhead, no container startup); you're in CI
|
|
70
|
+
with the toolchain pre-installed; you want to avoid Docker Desktop edge
|
|
71
|
+
cases (Windows volume throttling, Linux uid/gid issues, etc.).
|
|
72
|
+
|
|
73
|
+
### 🐳 Docker only
|
|
74
|
+
|
|
75
|
+
**Always** runs the scaffold inside the official Docker image — even if
|
|
76
|
+
the native CLI is on PATH. Fails if Docker isn't installed.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
which docker → ✓ found? docker run --rm -v ".:/app" composer:latest create-project …
|
|
80
|
+
→ ✗ missing? error: "Install Docker Desktop"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**When:** you don't want to install PHP / Cargo / Python / Go on the
|
|
84
|
+
host (keep host clean); you want **hermetic, reproducible** builds (every
|
|
85
|
+
dev uses the exact toolchain version baked into the image); you want to
|
|
86
|
+
mirror your CI locally.
|
|
87
|
+
|
|
88
|
+
### Quick decision table
|
|
89
|
+
|
|
90
|
+
| Your situation | Pick |
|
|
91
|
+
|----------------|------|
|
|
92
|
+
| Already have the toolchain installed, want speed | **🔧 Native** |
|
|
93
|
+
| Don't want to install PHP/Cargo/Python/Go on the host | **🐳 Docker** |
|
|
94
|
+
| Mixed team, varying setups | **🤖 Auto** |
|
|
95
|
+
| Just want it to work | **🤖 Auto** |
|
|
96
|
+
| Want bit-for-bit toolchain reproducibility | **🐳 Docker** |
|
|
97
|
+
| Solo dev with everything installed | **🔧 Native** |
|
|
98
|
+
|
|
99
|
+
### Override later
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
dare bootstrap --toolchain docker # rerun scaffold inside Docker
|
|
103
|
+
dare bootstrap --toolchain native --force # rerun native, overwriting framework files
|
|
104
|
+
dare bootstrap --toolchain auto # back to auto-detect
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### ⚠ Important caveat — Ralph Loop
|
|
108
|
+
|
|
109
|
+
`dare execute --complete` runs the stack's quality gates
|
|
110
|
+
(`composer dump-autoload`, `php artisan test`, `cargo build`, etc.)
|
|
111
|
+
**directly on the host** — it does **not** automatically wrap them in
|
|
112
|
+
Docker even if you picked `docker only` at init time.
|
|
113
|
+
|
|
114
|
+
If you don't have the native toolchain installed, the agent should run
|
|
115
|
+
the gates inside the container created by **task-001** (the Containerize
|
|
116
|
+
task), e.g. `docker compose exec app php artisan test`. The skills
|
|
117
|
+
shipped with `dare init` already nudge the agent toward that pattern.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
10
121
|
## Prerequisites
|
|
11
122
|
|
|
12
123
|
### Required for the CLI itself
|
|
@@ -30,7 +141,8 @@ Pick **one** of the two paths per stack:
|
|
|
30
141
|
| `node-nestjs` | Node 18+ (bundles `npx`) | `node:20-alpine` |
|
|
31
142
|
| `python-fastapi` | Python 3.11+ — https://www.python.org/downloads/ | `python:3.12-slim` |
|
|
32
143
|
| `rust-axum` | Rust 1.83+ (rustup) — https://www.rust-lang.org/tools/install | `rust:1.83` |
|
|
33
|
-
| `go-gin` | Go 1.
|
|
144
|
+
| `go-gin` | Go 1.25+ — https://go.dev/dl/ | `golang:1.25` |
|
|
145
|
+
| `go-stdlib` | Go 1.22+ — https://go.dev/dl/ | `golang:1.25` |
|
|
34
146
|
| `react`, `vue` | Node 18+ (bundles `npm`) | `node:20-alpine` |
|
|
35
147
|
| `mcp-server-node-ts` | Node 18+ | `node:20-alpine` |
|
|
36
148
|
| `mcp-server-python` | Python 3.11+ | `python:3.12-slim` |
|
|
@@ -42,6 +154,27 @@ Pick **one** of the two paths per stack:
|
|
|
42
154
|
If neither the native CLI **nor** Docker is available, `dare init` fails
|
|
43
155
|
fast with a clear error message — it never falls back to a fake template.
|
|
44
156
|
|
|
157
|
+
### Choose the toolchain at init time
|
|
158
|
+
|
|
159
|
+
The 3 modes (`auto` / `native` / `docker`) are explained in detail at the
|
|
160
|
+
top of this README — see [⚠ Read this first](#-read-this-first--how-dare-init-runs-the-official-scaffold).
|
|
161
|
+
|
|
162
|
+
Quick recap:
|
|
163
|
+
|
|
164
|
+
| Mode | Behavior |
|
|
165
|
+
|------|----------|
|
|
166
|
+
| `auto` (default) | Native if available, else Docker. Recommended. |
|
|
167
|
+
| `native` | Requires the native CLI; fails if missing. |
|
|
168
|
+
| `docker` | Always uses the official Docker image. |
|
|
169
|
+
|
|
170
|
+
The choice is persisted in `dare.config.json` (`"toolchain": "..."`).
|
|
171
|
+
Override at any time:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
dare bootstrap --toolchain docker # rerun scaffold inside Docker
|
|
175
|
+
dare bootstrap --toolchain native --force # rerun native, overwriting
|
|
176
|
+
```
|
|
177
|
+
|
|
45
178
|
### Required for the Ralph Loop (per project)
|
|
46
179
|
|
|
47
180
|
Once the project is scaffolded, every `dare execute --complete` runs the
|
|
@@ -71,7 +204,7 @@ dare init my-project
|
|
|
71
204
|
Prompts:
|
|
72
205
|
- **Structure:** Monorepo · Backend only · Frontend only · **MCP Server** ← new
|
|
73
206
|
- **MCP Server:** language (TypeScript / Python), transport (stdio / SSE / HTTP Stream), capabilities (Tools / Resources / Prompts)
|
|
74
|
-
- **Backend stack:** Rust/Axum · Node.js/NestJS · Python/FastAPI · PHP/Laravel · Go/Gin
|
|
207
|
+
- **Backend stack:** Rust/Axum · Node.js/NestJS · Python/FastAPI · PHP/Laravel · Go/Gin · Go/stdlib
|
|
75
208
|
- **Frontend stack:** React 18+ · Vue 3+
|
|
76
209
|
- **IDE / Agent:** Claude Code · Cursor · Antigravity · Hybrid
|
|
77
210
|
- **GraphRAG backend:** SQLite · JSON · Neo4j
|
|
@@ -173,6 +306,20 @@ The skills shipped by `dare init` (`.cursor/rules/skill-dag-runner.mdc`,
|
|
|
173
306
|
`.agents/skills/dare-dag-runner/SKILL.md`, `.claude/commands/dare-dag-run.md`)
|
|
174
307
|
guide the IDE agent through this loop.
|
|
175
308
|
|
|
309
|
+
#### Stack-specific skills
|
|
310
|
+
|
|
311
|
+
`dare init` also ships skills focused on architectural decisions for
|
|
312
|
+
specific stacks. As of v2.9.0:
|
|
313
|
+
|
|
314
|
+
- **`skill-rust-workspace.mdc`** (Cursor) /
|
|
315
|
+
**`dare-rust-workspace/SKILL.md`** (Antigravity) /
|
|
316
|
+
**`/dare-rust-workspace`** (Claude command) — guides the agent on
|
|
317
|
+
whether a Rust project should start single-crate or as a Cargo
|
|
318
|
+
workspace, and gives a step-by-step PR-by-PR migration plan when an
|
|
319
|
+
existing single-crate project has outgrown its layout. Active during
|
|
320
|
+
`/dare-design` and `/dare-blueprint` for `rust-axum` projects, plus on
|
|
321
|
+
demand for migration analysis.
|
|
322
|
+
|
|
176
323
|
### `dare bootstrap`
|
|
177
324
|
|
|
178
325
|
Run the official scaffold for a project's stack on **an existing project**
|
|
@@ -350,7 +497,7 @@ npm run inspect
|
|
|
350
497
|
|
|
351
498
|
| Type | Options |
|
|
352
499
|
|------|---------|
|
|
353
|
-
| **Backend** | Rust/Axum · Node.js/NestJS · Python/FastAPI · PHP/Laravel · Go/Gin |
|
|
500
|
+
| **Backend** | Rust/Axum · Node.js/NestJS · Python/FastAPI · PHP/Laravel · Go/Gin · Go/stdlib |
|
|
354
501
|
| **Frontend** | React 18+ · Vue 3+ |
|
|
355
502
|
| **MCP Server** | TypeScript/Node.js · Python — stdio / SSE / HTTP Stream |
|
|
356
503
|
| **IDE / Agent** | Claude Code · Cursor · Antigravity · Hybrid |
|
|
@@ -25,6 +25,11 @@ describe('gatesFor', () => {
|
|
|
25
25
|
expect(gates.find((g) => g.name === 'test')?.command).toBe('go test ./...');
|
|
26
26
|
expect(gates.find((g) => g.name === 'lint')?.command).toBe('go vet ./...');
|
|
27
27
|
});
|
|
28
|
+
it('returns the same gates for go-stdlib (same Go toolchain)', () => {
|
|
29
|
+
const gin = gatesFor('go-gin');
|
|
30
|
+
const stdlib = gatesFor('go-stdlib');
|
|
31
|
+
expect(stdlib).toEqual(gin);
|
|
32
|
+
});
|
|
28
33
|
it('returns gates for python-fastapi (with venv-aware shell)', () => {
|
|
29
34
|
const gates = gatesFor('python-fastapi');
|
|
30
35
|
expect(gates).toHaveLength(3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-loop.test.js","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/ralph-loop.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ralph-loop.test.js","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/ralph-loop.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,SA4FzB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { bootstrapBackend, bootstrapFrontend, bootstrapMcp, } from '../utils/stack-bootstrap.js';
|
|
6
|
+
const VALID_TOOLCHAINS = ['auto', 'native', 'docker'];
|
|
6
7
|
/**
|
|
7
8
|
* `dare bootstrap` — runs the official scaffold for the current project's
|
|
8
9
|
* stack, **without** touching DARE artifacts. Use this on a project that
|
|
@@ -17,6 +18,7 @@ import { bootstrapBackend, bootstrapFrontend, bootstrapMcp, } from '../utils/sta
|
|
|
17
18
|
export const bootstrapCommand = new Command('bootstrap')
|
|
18
19
|
.description("Run the official scaffold for the current project's stack (uses dare.config.json)")
|
|
19
20
|
.option('--force', 'Run even if framework artifacts already exist (may overwrite files)', false)
|
|
21
|
+
.option('--toolchain <mode>', 'Override toolchain mode for this run: auto | native | docker')
|
|
20
22
|
.action(async (options) => {
|
|
21
23
|
const cwd = process.cwd();
|
|
22
24
|
const cfgPath = path.join(cwd, 'dare.config.json');
|
|
@@ -26,6 +28,15 @@ export const bootstrapCommand = new Command('bootstrap')
|
|
|
26
28
|
process.exit(1);
|
|
27
29
|
}
|
|
28
30
|
const cfg = (await fs.readJson(cfgPath));
|
|
31
|
+
// CLI flag wins over saved config; default 'auto' if neither set.
|
|
32
|
+
let toolchain = cfg.toolchain ?? 'auto';
|
|
33
|
+
if (options.toolchain) {
|
|
34
|
+
if (!VALID_TOOLCHAINS.includes(options.toolchain)) {
|
|
35
|
+
console.error(chalk.red(`❌ Invalid --toolchain "${options.toolchain}". Use: auto | native | docker.`));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
toolchain = options.toolchain;
|
|
39
|
+
}
|
|
29
40
|
const projectName = cfg.name ?? path.basename(cwd);
|
|
30
41
|
if (!options.force) {
|
|
31
42
|
const conflicts = await detectConflicts(cwd);
|
|
@@ -41,13 +52,14 @@ export const bootstrapCommand = new Command('bootstrap')
|
|
|
41
52
|
try {
|
|
42
53
|
if (cfg.structure === 'mcp-server') {
|
|
43
54
|
const lang = (cfg.mcpLanguage ?? 'node-ts');
|
|
44
|
-
await bootstrapMcp({ language: lang, dir: cwd, projectName });
|
|
55
|
+
await bootstrapMcp({ language: lang, dir: cwd, projectName, toolchain });
|
|
45
56
|
}
|
|
46
57
|
else if (cfg.structure === 'frontend' && cfg.frontend) {
|
|
47
58
|
await bootstrapFrontend({
|
|
48
59
|
stack: cfg.frontend,
|
|
49
60
|
dir: cwd,
|
|
50
61
|
projectName,
|
|
62
|
+
toolchain,
|
|
51
63
|
});
|
|
52
64
|
}
|
|
53
65
|
else if ((cfg.structure === 'backend' || cfg.structure === 'monorepo') && cfg.backend) {
|
|
@@ -57,6 +69,7 @@ export const bootstrapCommand = new Command('bootstrap')
|
|
|
57
69
|
stack: cfg.backend,
|
|
58
70
|
dir,
|
|
59
71
|
projectName,
|
|
72
|
+
toolchain,
|
|
60
73
|
});
|
|
61
74
|
if (cfg.structure === 'monorepo' && cfg.frontend) {
|
|
62
75
|
const fdir = path.join(cwd, 'frontend');
|
|
@@ -65,6 +78,7 @@ export const bootstrapCommand = new Command('bootstrap')
|
|
|
65
78
|
stack: cfg.frontend,
|
|
66
79
|
dir: fdir,
|
|
67
80
|
projectName,
|
|
81
|
+
toolchain,
|
|
68
82
|
});
|
|
69
83
|
}
|
|
70
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAkMpB,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -81,6 +81,7 @@ export const initCommand = new Command('init')
|
|
|
81
81
|
{ name: '🐍 Python / FastAPI', value: 'python-fastapi' },
|
|
82
82
|
{ name: '🐘 PHP / Laravel', value: 'php-laravel' },
|
|
83
83
|
{ name: '🐹 Go / Gin', value: 'go-gin' },
|
|
84
|
+
{ name: '🐹 Go / stdlib (no framework, net/http only)', value: 'go-stdlib' },
|
|
84
85
|
],
|
|
85
86
|
},
|
|
86
87
|
{
|
|
@@ -122,6 +123,26 @@ export const initCommand = new Command('init')
|
|
|
122
123
|
message: 'Enable DARE MCP Server for context queries?',
|
|
123
124
|
default: true,
|
|
124
125
|
},
|
|
126
|
+
{
|
|
127
|
+
type: 'list',
|
|
128
|
+
name: 'toolchain',
|
|
129
|
+
message: 'Toolchain for scaffolding (composer / npm / cargo / python / go):',
|
|
130
|
+
choices: [
|
|
131
|
+
{
|
|
132
|
+
name: '🤖 Auto — use native if on PATH, else Docker (recommended)',
|
|
133
|
+
value: 'auto',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: '🔧 Native only — require the CLI on PATH (faster, no Docker pulls)',
|
|
137
|
+
value: 'native',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: '🐳 Docker only — always use the official image (hermetic, no host install)',
|
|
141
|
+
value: 'docker',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
default: 'auto',
|
|
145
|
+
},
|
|
125
146
|
]);
|
|
126
147
|
const name = projectName || answers.name;
|
|
127
148
|
const spinner = ora(`Creating project ${chalk.cyan(name)}...`).start();
|
|
@@ -137,6 +158,7 @@ export const initCommand = new Command('init')
|
|
|
137
158
|
ide: answers.ide,
|
|
138
159
|
graphrag: answers.graphrag,
|
|
139
160
|
mcp: answers.mcp,
|
|
161
|
+
toolchain: answers.toolchain,
|
|
140
162
|
outputDir: path.resolve(process.cwd(), name),
|
|
141
163
|
});
|
|
142
164
|
spinner.succeed(chalk.green(`Project ${chalk.bold(name)} created successfully!`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-loop.d.ts","sourceRoot":"","sources":["../../src/dag-runner/ralph-loop.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"ralph-loop.d.ts","sourceRoot":"","sources":["../../src/dag-runner/ralph-loop.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAgEvD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACpF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CA8B1B;AA0ED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-loop.js","sourceRoot":"","sources":["../../src/dag-runner/ralph-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAkB1B;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa;YAChB,OAAO;gBACL,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE;gBACrE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE;gBAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;aACtD,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO;gBACL,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;gBAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,EAAE;gBAC1D,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;aAC1C,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO;gBACL;oBACE,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC;iBAClE;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;gBACxE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;aACjE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE;gBACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE;gBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qCAAqC,EAAE;aACjE,CAAC;QACJ,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"ralph-loop.js","sourceRoot":"","sources":["../../src/dag-runner/ralph-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ToolchainMode } from './stack-bootstrap.js';
|
|
1
2
|
export interface ProjectConfig {
|
|
2
3
|
name: string;
|
|
3
4
|
structure: 'monorepo' | 'backend' | 'frontend' | 'mcp-server';
|
|
@@ -16,6 +17,13 @@ export interface ProjectConfig {
|
|
|
16
17
|
* Defaults to false — i.e., scaffolding is the normal path.
|
|
17
18
|
*/
|
|
18
19
|
skipBootstrap?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Toolchain preference for the scaffold step (and reused by `dare bootstrap`):
|
|
22
|
+
* - `auto` (default): use native CLI if on PATH, otherwise Docker.
|
|
23
|
+
* - `native`: require composer/npm/cargo/python/go on PATH; fail otherwise.
|
|
24
|
+
* - `docker`: always run via the official Docker image, even if native is available.
|
|
25
|
+
*/
|
|
26
|
+
toolchain?: ToolchainMode;
|
|
19
27
|
}
|
|
20
28
|
export declare function generateProjectStructure(config: ProjectConfig): Promise<void>;
|
|
21
29
|
export declare function installDareToExistingProject(projectDir: string, config: Omit<ProjectConfig, 'outputDir'>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3E,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoInF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -9,13 +9,24 @@ export async function generateProjectStructure(config) {
|
|
|
9
9
|
// 0) Run the official scaffold for the chosen stack BEFORE laying down DARE
|
|
10
10
|
// artifacts. The scaffold needs an empty (or near-empty) directory.
|
|
11
11
|
if (!config.skipBootstrap) {
|
|
12
|
+
await assertOutputDirIsEmpty(config);
|
|
12
13
|
await runStackBootstrap(config);
|
|
13
14
|
}
|
|
14
15
|
// Create DARE directory
|
|
15
16
|
await fs.ensureDir(path.join(outputDir, 'DARE'));
|
|
16
17
|
await fs.ensureDir(path.join(outputDir, 'DARE', 'EXECUTION'));
|
|
17
18
|
// Write dare.config.json
|
|
18
|
-
const configData = {
|
|
19
|
+
const configData = {
|
|
20
|
+
name,
|
|
21
|
+
structure,
|
|
22
|
+
backend,
|
|
23
|
+
frontend,
|
|
24
|
+
ide,
|
|
25
|
+
graphrag,
|
|
26
|
+
mcp,
|
|
27
|
+
toolchain: config.toolchain ?? 'auto',
|
|
28
|
+
version: '0.1.0',
|
|
29
|
+
};
|
|
19
30
|
if (structure === 'mcp-server') {
|
|
20
31
|
configData.mcpTransport = config.mcpTransport;
|
|
21
32
|
configData.mcpLanguage = config.mcpLanguage;
|
|
@@ -639,10 +650,49 @@ const BACKEND_STACKS = new Set([
|
|
|
639
650
|
'python-fastapi',
|
|
640
651
|
'rust-axum',
|
|
641
652
|
'go-gin',
|
|
653
|
+
'go-stdlib',
|
|
642
654
|
]);
|
|
643
655
|
const FRONTEND_STACKS = new Set(['react', 'vue']);
|
|
656
|
+
/**
|
|
657
|
+
* Official scaffolders (composer create-project, npx degit, cargo init,
|
|
658
|
+
* `npm create`, etc.) all refuse to run inside a directory that already
|
|
659
|
+
* has files. We check for that BEFORE running the scaffold so the user gets
|
|
660
|
+
* a single clear error — not a cryptic stack trace from inside Composer or
|
|
661
|
+
* Cargo. We tolerate `.git` because some users initialize a repo first.
|
|
662
|
+
*/
|
|
663
|
+
async function assertOutputDirIsEmpty(config) {
|
|
664
|
+
const dirsToCheck = [];
|
|
665
|
+
if (config.structure === 'mcp-server' || config.structure === 'frontend') {
|
|
666
|
+
dirsToCheck.push(config.outputDir);
|
|
667
|
+
}
|
|
668
|
+
else if (config.structure === 'backend') {
|
|
669
|
+
dirsToCheck.push(config.outputDir);
|
|
670
|
+
}
|
|
671
|
+
else if (config.structure === 'monorepo') {
|
|
672
|
+
if (config.backend)
|
|
673
|
+
dirsToCheck.push(path.join(config.outputDir, 'backend'));
|
|
674
|
+
if (config.frontend)
|
|
675
|
+
dirsToCheck.push(path.join(config.outputDir, 'frontend'));
|
|
676
|
+
}
|
|
677
|
+
for (const dir of dirsToCheck) {
|
|
678
|
+
if (!(await fs.pathExists(dir)))
|
|
679
|
+
continue;
|
|
680
|
+
const entries = (await fs.readdir(dir)).filter((e) => e !== '.git' && e !== '.gitkeep');
|
|
681
|
+
if (entries.length > 0) {
|
|
682
|
+
const preview = entries.slice(0, 8).join(', ');
|
|
683
|
+
const more = entries.length > 8 ? `, … (+${entries.length - 8})` : '';
|
|
684
|
+
throw new Error(`Target directory is not empty: ${dir}\n` +
|
|
685
|
+
` Found: ${preview}${more}\n\n` +
|
|
686
|
+
`Likely cause: a previous \`dare init\` for this project failed midway and left files behind.\n` +
|
|
687
|
+
`Resolve by either:\n` +
|
|
688
|
+
` 1) Removing the directory and trying again: Remove-Item -Recurse -Force "${dir}"\n` +
|
|
689
|
+
` 2) Choosing a different project name.\n` +
|
|
690
|
+
` 3) Running \`dare bootstrap --force\` if you want to reuse the existing directory and overwrite framework files.`);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
644
694
|
async function runStackBootstrap(config) {
|
|
645
|
-
const { outputDir, name, structure, backend, frontend, mcpLanguage } = config;
|
|
695
|
+
const { outputDir, name, structure, backend, frontend, mcpLanguage, toolchain } = config;
|
|
646
696
|
// Backend / monorepo backend
|
|
647
697
|
if ((structure === 'backend' || structure === 'monorepo') && backend) {
|
|
648
698
|
if (!BACKEND_STACKS.has(backend)) {
|
|
@@ -654,6 +704,7 @@ async function runStackBootstrap(config) {
|
|
|
654
704
|
stack: backend,
|
|
655
705
|
dir: backendDir,
|
|
656
706
|
projectName: name,
|
|
707
|
+
toolchain,
|
|
657
708
|
});
|
|
658
709
|
}
|
|
659
710
|
// Frontend / monorepo frontend
|
|
@@ -667,12 +718,18 @@ async function runStackBootstrap(config) {
|
|
|
667
718
|
stack: frontend,
|
|
668
719
|
dir: frontendDir,
|
|
669
720
|
projectName: name,
|
|
721
|
+
toolchain,
|
|
670
722
|
});
|
|
671
723
|
}
|
|
672
724
|
// MCP Server
|
|
673
725
|
if (structure === 'mcp-server') {
|
|
674
726
|
const lang = (mcpLanguage ?? 'node-ts');
|
|
675
|
-
await bootstrapMcp({
|
|
727
|
+
await bootstrapMcp({
|
|
728
|
+
language: lang,
|
|
729
|
+
dir: outputDir,
|
|
730
|
+
projectName: name,
|
|
731
|
+
toolchain,
|
|
732
|
+
});
|
|
676
733
|
}
|
|
677
734
|
console.log(chalk.green('\n✓ Stack scaffold complete.\n'));
|
|
678
735
|
}
|
|
@@ -680,6 +737,7 @@ function generateStackSkill(stack) {
|
|
|
680
737
|
const skills = {
|
|
681
738
|
'rust-axum': `---\ndescription: Rust/Axum API development skill\n---\n# Rust/Axum Skill\n- Use Axum for HTTP routing\n- Use Tokio for async runtime\n- Use SQLx for database\n- Run clippy and cargo test\n`,
|
|
682
739
|
'go-gin': `---\ndescription: Go/Gin API development skill\n---\n# Go + Gin Skill\n- Use Gin for HTTP routing (github.com/gin-gonic/gin)\n- Project layout: cmd/api/main.go (entrypoint), internal/handlers, internal/middleware, internal/services, internal/repository\n- Use context.Context propagation in every handler/service\n- Use struct tags for binding/validation (binding:"required" on DTOs)\n- For SQL: prefer database/sql + sqlx, parametrize ALL queries, no string concat\n- Errors: return wrapped errors (fmt.Errorf("...: %w", err)), not panics\n- Tests: use net/http/httptest + table-driven tests; place *_test.go alongside the package\n- Ralph Loop: \`go build ./...\`, \`go test ./...\`, \`go vet ./...\`\n`,
|
|
740
|
+
'go-stdlib': `---\ndescription: Go API development with stdlib only (no framework)\n---\n# Go stdlib Skill (net/http only)\n- Use \`net/http\` from stdlib — NO framework (no Gin, Echo, Chi, Fiber). Adding one defeats the purpose of this stack.\n- Routing: \`http.NewServeMux()\` with the Go 1.22+ pattern syntax: \`mux.HandleFunc("GET /api/v1/users/{id}", h)\`, \`mux.HandleFunc("POST /api/v1/users", h)\`. Use \`r.PathValue("id")\` to extract path params.\n- Project layout: \`cmd/api/main.go\` (entrypoint), \`internal/handlers/\`, \`internal/middleware/\`, \`internal/services/\`, \`internal/repository/\`.\n- Middleware = function wrapping http.Handler. Compose with \`middleware.Recover(middleware.Logger(mux))\` style — no framework chain.\n- JSON: \`json.NewDecoder(r.Body).Decode(&dto)\` for input, \`json.NewEncoder(w).Encode(obj)\` for output. Always set \`Content-Type: application/json\` and the status code explicitly.\n- Validation: prefer \`github.com/go-playground/validator/v10\` for struct tags (lightweight, no framework lock-in). For trivial cases, manual validation in the handler is fine.\n- Logging: \`log/slog\` from stdlib. \`slog.Info("...", "key", val)\` style. Configure JSON handler in main.\n- Context propagation: \`r.Context()\` flows through every layer. NEVER use context.Background() inside handlers.\n- For SQL: prefer \`database/sql\` + \`github.com/jmoiron/sqlx\` or \`github.com/jackc/pgx/v5\`. Parametrize ALL queries.\n- Errors: \`fmt.Errorf("doing X: %w", err)\`. Map domain errors to HTTP status in the handler layer, not deeper.\n- Tests: \`net/http/httptest\` + table-driven. \`httptest.NewRequest\` + \`httptest.NewRecorder\`. Test each handler in isolation.\n- Ralph Loop: \`go build ./...\`, \`go test ./...\`, \`go vet ./...\`.\n- Avoid: middleware libraries that pull in heavyweight deps; ORM (use sqlx); reflection-based DI (wire by hand in main).\n`,
|
|
683
741
|
'node-nestjs': `---\ndescription: Node.js/NestJS development skill\n---\n# NestJS Skill\n- Use NestJS modules and DI\n- Use DTOs with class-validator\n- Write Jest tests\n`,
|
|
684
742
|
'python-fastapi': `---\ndescription: Python/FastAPI development skill\n---\n# FastAPI Skill\n- Use Pydantic for validation\n- Use async endpoints\n- Write pytest tests\n`,
|
|
685
743
|
'php-laravel': `---\ndescription: PHP/Laravel development skill\n---\n# Laravel Skill\n- Use FormRequests\n- Use API Resources\n- Write PHPUnit tests\n`,
|