@dewtech/dare-cli 3.1.0 → 3.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.
Files changed (80) hide show
  1. package/README.md +3 -1
  2. package/dist/__tests__/ensure-skills.test.d.ts +2 -0
  3. package/dist/__tests__/ensure-skills.test.d.ts.map +1 -0
  4. package/dist/__tests__/ensure-skills.test.js +67 -0
  5. package/dist/__tests__/ensure-skills.test.js.map +1 -0
  6. package/dist/__tests__/ide-command-parity.test.d.ts +2 -0
  7. package/dist/__tests__/ide-command-parity.test.d.ts.map +1 -0
  8. package/dist/__tests__/ide-command-parity.test.js +58 -0
  9. package/dist/__tests__/ide-command-parity.test.js.map +1 -0
  10. package/dist/__tests__/reverse-collection.test.d.ts +2 -0
  11. package/dist/__tests__/reverse-collection.test.d.ts.map +1 -0
  12. package/dist/__tests__/reverse-collection.test.js +87 -0
  13. package/dist/__tests__/reverse-collection.test.js.map +1 -0
  14. package/dist/commands/dna.d.ts.map +1 -1
  15. package/dist/commands/dna.js +4 -0
  16. package/dist/commands/dna.js.map +1 -1
  17. package/dist/commands/migrate.d.ts.map +1 -1
  18. package/dist/commands/migrate.js +4 -0
  19. package/dist/commands/migrate.js.map +1 -1
  20. package/dist/commands/reverse.d.ts.map +1 -1
  21. package/dist/commands/reverse.js +27 -8
  22. package/dist/commands/reverse.js.map +1 -1
  23. package/dist/utils/datamodel.d.ts.map +1 -1
  24. package/dist/utils/datamodel.js +97 -20
  25. package/dist/utils/datamodel.js.map +1 -1
  26. package/dist/utils/project-generator.d.ts +21 -0
  27. package/dist/utils/project-generator.d.ts.map +1 -1
  28. package/dist/utils/project-generator.js +69 -0
  29. package/dist/utils/project-generator.js.map +1 -1
  30. package/dist/utils/reverse-facts.d.ts +3 -2
  31. package/dist/utils/reverse-facts.d.ts.map +1 -1
  32. package/dist/utils/reverse-facts.js +89 -8
  33. package/dist/utils/reverse-facts.js.map +1 -1
  34. package/package.json +1 -1
  35. package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -0
  36. package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -0
  37. package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -0
  38. package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -0
  39. package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -0
  40. package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -0
  41. package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -0
  42. package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -0
  43. package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -0
  44. package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -0
  45. package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -0
  46. package/templates/ide/claude/.claude/commands/dare-dag.md +27 -0
  47. package/templates/ide/claude/.claude/commands/dare-discover.md +28 -0
  48. package/templates/ide/claude/.claude/commands/dare-graph.md +30 -0
  49. package/templates/ide/claude/.claude/commands/dare-info.md +26 -0
  50. package/templates/ide/claude/.claude/commands/dare-init.md +30 -0
  51. package/templates/ide/claude/.claude/commands/dare-skill.md +30 -0
  52. package/templates/ide/claude/.claude/commands/dare-update.md +28 -0
  53. package/templates/ide/claude/.claude/commands/dare-validate.md +28 -0
  54. package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -0
  55. package/templates/ide/cursor/.cursor/commands/{generate-blueprint.md → dare-blueprint.md} +1 -1
  56. package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -0
  57. package/templates/ide/cursor/.cursor/commands/{run-dag.md → dare-dag-run.md} +1 -1
  58. package/templates/ide/cursor/.cursor/commands/{dag-viz.md → dare-dag-viz.md} +1 -1
  59. package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -0
  60. package/templates/ide/cursor/.cursor/commands/{generate-design.md → dare-design.md} +1 -1
  61. package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -0
  62. package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -0
  63. package/templates/ide/cursor/.cursor/commands/{generate-docker-compose.md → dare-docker-compose.md} +1 -1
  64. package/templates/ide/cursor/.cursor/commands/{generate-dockerfile.md → dare-dockerfile.md} +1 -1
  65. package/templates/ide/cursor/.cursor/commands/{execute-task.md → dare-execute.md} +1 -1
  66. package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -0
  67. package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -0
  68. package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -0
  69. package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -0
  70. package/templates/ide/cursor/.cursor/commands/{refine-task.md → dare-refine.md} +1 -1
  71. package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -0
  72. package/templates/ide/cursor/.cursor/commands/{review-task.md → dare-review.md} +1 -1
  73. package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -0
  74. package/templates/ide/cursor/.cursor/commands/{generate-tasks.md → dare-tasks.md} +1 -1
  75. package/templates/ide/cursor/.cursor/commands/{telemetry-report.md → dare-telemetry.md} +1 -1
  76. package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -0
  77. package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -0
  78. package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -0
  79. /package/templates/ide/cursor/.cursor/commands/{generate-bugfix-design.md → dare-bugfix-design.md} +0 -0
  80. /package/templates/ide/cursor/.cursor/commands/{generate-feature-design.md → dare-feature-design.md} +0 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@ A structured methodology for AI-assisted software development with mandatory hum
9
9
 
10
10
  ---
11
11
 
12
- ## ⚠ Read this first — How `dare init` scaffolds a project (v3.1)
12
+ ## ⚠ Read this first — How `dare init` scaffolds a project (v3.2)
13
13
 
14
14
  `dare init` writes a **complete, DARE-shaped project** from generators
15
15
  internalized in this package — no shell-out to the framework's official CLI
@@ -164,6 +164,8 @@ Pick **one** of the two paths per stack:
164
164
  | `mcp-rust` (beta) | Rust 1.78+ (rustup) | `rust:1.83` |
165
165
  | `mcp-go` (beta) | Go 1.23+ — https://go.dev/dl/ | `golang:1.25` |
166
166
 
167
+ > **v3.2.0:** full **CLI ↔ IDE parity** — every one of the 18 CLI commands is invocable as `/dare-<cmd>` across all three IDEs (Cursor, Claude Code, Antigravity); a parity test fails the build if a command is missing a skill. Brownfield commands now **collect real data by default**: `dare reverse`/`dna` extract endpoints + entities and render them into `IDEIA.md` and the module specs (no more skeleton-only artifacts).
168
+
167
169
  > **v3.1.0:** all **11 stacks** ship a full generator internalized in `@dewtech/dare-cli` — 7 backend (ruby-rails-8, node-nestjs, python-fastapi, php-laravel, rust-axum, go-gin, go-stdlib) + 4 MCP (mcp-node-ts, mcp-python, mcp-rust, mcp-go). No isolated stack packages; everything is in one publishable tarball (fixes the `npm install -g` 404 of earlier releases). `dare new` was removed — `dare init` is the only scaffolding entrypoint.
168
170
 
169
171
  > **TL;DR:** if you have **Docker Desktop** installed, you don't strictly need
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ensure-skills.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-skills.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ensure-skills.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
+ import path from 'node:path';
4
+ import os from 'node:os';
5
+ import fs from 'fs-extra';
6
+ import { ensureDareSkills } from '../utils/project-generator.js';
7
+ let dir;
8
+ beforeEach(async () => {
9
+ dir = await fs.mkdtemp(path.join(os.tmpdir(), 'ensure-skills-'));
10
+ });
11
+ afterEach(async () => {
12
+ await fs.remove(dir);
13
+ });
14
+ describe('ensureDareSkills — brownfield projects', () => {
15
+ describe('fresh project (no dare.config.json)', () => {
16
+ beforeEach(async () => {
17
+ await ensureDareSkills(dir);
18
+ });
19
+ it('writes a dare.config.json marker', async () => {
20
+ const cfg = await fs.readJSON(path.join(dir, 'dare.config.json'));
21
+ expect(cfg.ide).toBe('hybrid');
22
+ expect(cfg.installedBy).toContain('ensureDareSkills');
23
+ });
24
+ it('installs Cursor commands so /dare-* exists', async () => {
25
+ const cmds = path.join(dir, '.cursor', 'commands');
26
+ expect(await fs.pathExists(cmds)).toBe(true);
27
+ expect((await fs.readdir(cmds)).length).toBeGreaterThan(0);
28
+ });
29
+ it('installs Claude commands including dare-reverse', async () => {
30
+ const cmds = path.join(dir, '.claude', 'commands');
31
+ expect(await fs.pathExists(cmds)).toBe(true);
32
+ const files = await fs.readdir(cmds);
33
+ expect(files.some((f) => /reverse/i.test(f))).toBe(true);
34
+ });
35
+ it('installs Antigravity skills', async () => {
36
+ const skills = path.join(dir, '.agents', 'skills');
37
+ expect(await fs.pathExists(skills)).toBe(true);
38
+ expect((await fs.readdir(skills)).length).toBeGreaterThan(0);
39
+ });
40
+ it('creates the DARE/ working dir', async () => {
41
+ expect(await fs.pathExists(path.join(dir, 'DARE', 'EXECUTION'))).toBe(true);
42
+ });
43
+ });
44
+ describe('existing dare.config.json', () => {
45
+ it('refreshes IDE files without clobbering the config name', async () => {
46
+ await fs.writeJSON(path.join(dir, 'dare.config.json'), {
47
+ name: 'my-legacy-app',
48
+ structure: 'backend',
49
+ ide: 'cursor',
50
+ graphrag: 'sqlite',
51
+ mcp: false,
52
+ });
53
+ await ensureDareSkills(dir);
54
+ const cfg = await fs.readJSON(path.join(dir, 'dare.config.json'));
55
+ expect(cfg.name).toBe('my-legacy-app');
56
+ expect(cfg.ide).toBe('cursor');
57
+ // Cursor commands installed; claude not (ide is cursor only)
58
+ expect(await fs.pathExists(path.join(dir, '.cursor', 'commands'))).toBe(true);
59
+ expect(await fs.pathExists(path.join(dir, '.claude', 'commands'))).toBe(false);
60
+ });
61
+ });
62
+ it('is idempotent (second call does not throw)', async () => {
63
+ await ensureDareSkills(dir);
64
+ await expect(ensureDareSkills(dir)).resolves.not.toThrow();
65
+ });
66
+ });
67
+ //# sourceMappingURL=ensure-skills.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-skills.test.js","sourceRoot":"","sources":["../../src/__tests__/ensure-skills.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ide-command-parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-command-parity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ide-command-parity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Trava o contrato: TODO comando do `dare` CLI precisa estar disponível na IDE
4
+ // como `/dare-<cmd>` nas três IDEs suportadas (Claude, Cursor, Antigravity).
5
+ //
6
+ // Fonte da verdade dos arquivos de IDE: implementations/ (sincronizado para
7
+ // packages/cli/templates/ide/ no build). Se um comando novo for adicionado ao
8
+ // CLI sem o skill/command correspondente, este teste falha.
9
+ import { describe, it, expect } from 'vitest';
10
+ import fs from 'fs-extra';
11
+ import path from 'node:path';
12
+ import { fileURLToPath } from 'node:url';
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ const REPO = path.resolve(__dirname, '..', '..', '..', '..');
15
+ const IMPL = path.join(REPO, 'implementations');
16
+ const BIN = path.resolve(__dirname, '..', 'bin', 'dare.ts');
17
+ // Cada comando registrado no CLI → o slug /dare-<cmd> esperado na IDE.
18
+ // Mantenha em sincronia com packages/cli/src/bin/dare.ts (program.addCommand).
19
+ const CLI_COMMANDS = {
20
+ init: 'dare-init',
21
+ bootstrap: 'dare-bootstrap',
22
+ discover: 'dare-discover',
23
+ reverse: 'dare-reverse',
24
+ dna: 'dare-dna',
25
+ migrate: 'dare-migrate',
26
+ design: 'dare-design',
27
+ blueprint: 'dare-blueprint',
28
+ execute: 'dare-execute',
29
+ graph: 'dare-graph',
30
+ dag: 'dare-dag',
31
+ validate: 'dare-validate',
32
+ info: 'dare-info',
33
+ update: 'dare-update',
34
+ review: 'dare-review',
35
+ refine: 'dare-refine',
36
+ skill: 'dare-skill',
37
+ welcome: 'dare-welcome',
38
+ };
39
+ const slugs = Object.values(CLI_COMMANDS);
40
+ describe('IDE command parity — every `dare <cmd>` exists as /dare-<cmd>', () => {
41
+ it('CLI_COMMANDS matches the number of commands registered in bin/dare.ts', async () => {
42
+ const src = await fs.readFile(BIN, 'utf8');
43
+ const registered = (src.match(/program\.addCommand\(/g) || []).length;
44
+ // Se este teste falhar: um comando foi adicionado/removido no CLI sem
45
+ // atualizar o mapa CLI_COMMANDS acima E criar o skill nas 3 IDEs.
46
+ expect(registered).toBe(Object.keys(CLI_COMMANDS).length);
47
+ });
48
+ it.each(slugs)('Claude Code expõe /%s', async (slug) => {
49
+ expect(await fs.pathExists(path.join(IMPL, 'claude', '.claude', 'commands', `${slug}.md`))).toBe(true);
50
+ });
51
+ it.each(slugs)('Cursor expõe /%s', async (slug) => {
52
+ expect(await fs.pathExists(path.join(IMPL, 'cursor', '.cursor', 'commands', `${slug}.md`))).toBe(true);
53
+ });
54
+ it.each(slugs)('Antigravity expõe /%s', async (slug) => {
55
+ expect(await fs.pathExists(path.join(IMPL, 'antigravity', '.agents', 'skills', slug, 'SKILL.md'))).toBe(true);
56
+ });
57
+ });
58
+ //# sourceMappingURL=ide-command-parity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-command-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/ide-command-parity.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reverse-collection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reverse-collection.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/reverse-collection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // v3.2 — deterministic collection enhancements for `dare reverse`:
4
+ // - @Controller prefix composed into NestJS routes
5
+ // - DTOs / value shapes excluded from entities
6
+ // - IDEIA.md / module specs rendered with the extracted model (not skeletons)
7
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
+ import path from 'node:path';
9
+ import os from 'node:os';
10
+ import fs from 'fs-extra';
11
+ import { extractDataModel } from '../utils/datamodel.js';
12
+ import { buildFacts, renderIdeiaSkeleton, } from '../utils/reverse-facts.js';
13
+ import { detectProject } from '../utils/project-detector.js';
14
+ import { detectModules } from '../utils/module-detector.js';
15
+ let dir;
16
+ beforeEach(async () => {
17
+ dir = await fs.mkdtemp(path.join(os.tmpdir(), 'reverse-col-'));
18
+ });
19
+ afterEach(async () => {
20
+ await fs.remove(dir);
21
+ });
22
+ async function write(rel, content) {
23
+ const p = path.join(dir, rel);
24
+ await fs.ensureDir(path.dirname(p));
25
+ await fs.writeFile(p, content);
26
+ }
27
+ describe('extractDataModel — v3.2 collection', () => {
28
+ it('composes the @Controller prefix into NestJS routes', async () => {
29
+ await write('src/users/users.controller.ts', `@Controller('users')
30
+ export class UsersController {
31
+ @Get(':id') findOne() {}
32
+ @Post('bulk') bulk() {}
33
+ }`);
34
+ const model = await extractDataModel(dir);
35
+ const routes = model.endpoints.map((e) => `${e.method} ${e.route}`);
36
+ expect(routes).toContain('GET /users/:id');
37
+ expect(routes).toContain('POST /users/bulk');
38
+ });
39
+ it('handles an empty @Controller() prefix', async () => {
40
+ await write('src/health/health.controller.ts', `@Controller()
41
+ export class HealthController { @Get('health') h() {} }`);
42
+ const model = await extractDataModel(dir);
43
+ expect(model.endpoints.map((e) => e.route)).toContain('/health');
44
+ });
45
+ it('does NOT count DTOs as entities', async () => {
46
+ await write('src/users/dto/create-user.dto.ts', `export class CreateUserDto { email: string; password: string; }`);
47
+ await write('src/users/entities/user.entity.ts', `@Entity() export class User { id: string; email: string; }`);
48
+ const model = await extractDataModel(dir);
49
+ const names = model.entities.map((e) => e.name);
50
+ expect(names).toContain('User');
51
+ expect(names).not.toContain('CreateUserDto');
52
+ });
53
+ it('drops SQL keywords (CASCADE) but keeps lowercase table names', async () => {
54
+ await write('db/schema.sql', `CREATE TABLE produtos (id INT);
55
+ ALTER TABLE pedidos ADD CONSTRAINT fk FOREIGN KEY (pid) REFERENCES produtos(id) ON DELETE CASCADE;`);
56
+ const model = await extractDataModel(dir);
57
+ const names = model.entities.map((e) => e.name);
58
+ expect(names).toContain('produtos');
59
+ expect(names).not.toContain('CASCADE');
60
+ });
61
+ });
62
+ describe('renderIdeiaSkeleton / module spec — render real data', () => {
63
+ it('IDEIA fills API + data-model sections from the model (no AGENT placeholder)', async () => {
64
+ await write('src/orders/orders.controller.ts', `@Controller('orders') export class OrdersController { @Get() list() {} }`);
65
+ await write('src/orders/entities/order.entity.ts', `@Entity() export class Order { id: string; total: number; }`);
66
+ const detected = await detectProject(dir);
67
+ const graph = await detectModules(dir, {});
68
+ const facts = buildFacts(detected, graph, '2026-06-02T00:00:00Z');
69
+ const model = await extractDataModel(dir);
70
+ const ideia = renderIdeiaSkeleton(facts, false, model);
71
+ expect(ideia).toContain('Superfície de API — 1 endpoints 🟢');
72
+ expect(ideia).toContain('GET');
73
+ expect(ideia).toContain('/orders');
74
+ expect(ideia).toContain('Order');
75
+ // The API section is no longer a bare AGENT placeholder
76
+ expect(ideia).not.toMatch(/## Superfície de API\n<!-- AGENT/);
77
+ });
78
+ it('falls back to AGENT placeholder when no model is passed', async () => {
79
+ const detected = await detectProject(dir);
80
+ const graph = await detectModules(dir, {});
81
+ const facts = buildFacts(detected, graph, '2026-06-02T00:00:00Z');
82
+ const ideia = renderIdeiaSkeleton(facts, false);
83
+ expect(ideia).toContain('## Superfície de API');
84
+ expect(ideia).toMatch(/Superfície de API\n<!-- AGENT/);
85
+ });
86
+ });
87
+ //# sourceMappingURL=reverse-collection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reverse-collection.test.js","sourceRoot":"","sources":["../../src/__tests__/reverse-collection.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/commands/dna.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,UAAU,SA6CnB,CAAC"}
1
+ {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/commands/dna.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,UAAU,SAgDnB,CAAC"}
@@ -5,6 +5,7 @@ import fs from 'fs-extra';
5
5
  import path from 'path';
6
6
  import { detectDna } from '../utils/dna-detector.js';
7
7
  import { renderDnaSkeleton } from '../utils/dna-facts.js';
8
+ import { ensureDareSkills } from '../utils/project-generator.js';
8
9
  export const dnaCommand = new Command('dna')
9
10
  .description('Extract a legacy codebase\'s conventions into DARE/PROJECT-DNA.md (brownfield house-style ruleset)')
10
11
  .option('-d, --dir <path>', 'Target directory (default: current directory)')
@@ -13,6 +14,9 @@ export const dnaCommand = new Command('dna')
13
14
  const targetDir = path.resolve(opts.dir ?? process.cwd());
14
15
  console.log(chalk.blue.bold('\n🧬 DARE Framework - Project DNA (conventions)\n'));
15
16
  console.log(chalk.gray(` Scanning: ${targetDir}\n`));
17
+ // --check is read-only detection; don't install skills then.
18
+ if (!opts.check)
19
+ await ensureDareSkills(targetDir);
16
20
  const spinner = ora('Extracting conventions...').start();
17
21
  const generatedAt = new Date().toISOString();
18
22
  const facts = await detectDna(targetDir, generatedAt);
@@ -1 +1 @@
1
- {"version":3,"file":"dna.js","sourceRoot":"","sources":["../../src/commands/dna.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dna.js","sourceRoot":"","sources":["../../src/commands/dna.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,cAAc,SAmFvB,CAAC"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,cAAc,SAsFvB,CAAC"}
@@ -5,6 +5,7 @@ import inquirer from 'inquirer';
5
5
  import fs from 'fs-extra';
6
6
  import path from 'path';
7
7
  import { loadReverseArtifacts, buildMigrationFacts, renderMigrationDoc, renderParityFeature, parityFeatureFilename, reverseFactsPath, KNOWN_TARGETS, } from '../utils/migration.js';
8
+ import { ensureDareSkills } from '../utils/project-generator.js';
8
9
  export const migrateCommand = new Command('migrate')
9
10
  .description('Plan a safe migration of a legacy project to a target stack, with Gherkin parity scenarios (brownfield Phase 2)')
10
11
  .option('-d, --dir <path>', 'Target directory (default: current directory)')
@@ -14,6 +15,9 @@ export const migrateCommand = new Command('migrate')
14
15
  const targetDir = path.resolve(opts.dir ?? process.cwd());
15
16
  console.log(chalk.blue.bold('\n🚚 DARE Framework - Migration (Phase 2)\n'));
16
17
  console.log(chalk.gray(` Project: ${targetDir}\n`));
18
+ // --check is read-only; don't install skills then.
19
+ if (!opts.check)
20
+ await ensureDareSkills(targetDir);
17
21
  // ── Require reverse first ─────────────────────────────────────────────
18
22
  const artifacts = await loadReverseArtifacts(targetDir);
19
23
  if (!artifacts) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,eAAO,MAAM,cAAc,SA+GvB,CAAC"}
1
+ {"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,eAAO,MAAM,cAAc,SAsIvB,CAAC"}
@@ -5,6 +5,7 @@ import fs from 'fs-extra';
5
5
  import path from 'path';
6
6
  import { detectProject, formatDetectionReport } from '../utils/project-detector.js';
7
7
  import { detectModules } from '../utils/module-detector.js';
8
+ import { ensureDareSkills } from '../utils/project-generator.js';
8
9
  import { buildFacts, renderIdeiaSkeleton, renderModuleSpecSkeleton, renderArchitectureExcalidraw, moduleSpecFilename, renderC4Component, renderC4ContextSkeleton, renderC4ContainerSkeleton, renderDomainRulesSkeleton, renderStateMachinesSkeleton, renderPermissionsSkeleton, } from '../utils/reverse-facts.js';
9
10
  import { extractDataModel, renderErd, renderApiSurface } from '../utils/datamodel.js';
10
11
  import { parseSpecConfidence, renderConfidenceReport, renderCodeSpecMatrix, aggregate, } from '../utils/confidence.js';
@@ -25,6 +26,11 @@ export const reverseCommand = new Command('reverse')
25
26
  }
26
27
  console.log(chalk.blue.bold('\n🔁 DARE Framework - Reverse Engineering (Phase 0)\n'));
27
28
  console.log(chalk.gray(` Scanning: ${targetDir}\n`));
29
+ // Ensure the DARE slash-commands/skills are installed so the IDE side of
30
+ // the workflow (`/dare-reverse`) actually exists. Idempotent. Skip in
31
+ // --check mode (read-only detection, writes nothing).
32
+ if (!opts.check)
33
+ await ensureDareSkills(targetDir);
28
34
  const only = opts.modules
29
35
  ? opts.modules.split(',').map((s) => s.trim()).filter(Boolean)
30
36
  : undefined;
@@ -56,22 +62,35 @@ export const reverseCommand = new Command('reverse')
56
62
  const facts = buildFacts(detected, graph, generatedAt);
57
63
  const dareDir = path.join(targetDir, 'DARE');
58
64
  const reverseDir = path.join(dareDir, 'REVERSE');
59
- const writeSpinner = ora('Writing IDEIA.md + module specs...').start();
65
+ const writeSpinner = ora('Extracting API surface + data model...').start();
60
66
  try {
61
67
  await fs.ensureDir(reverseDir);
62
- await fs.writeJSON(path.join(reverseDir, 'reverse-facts.json'), facts, { spaces: 2 });
63
- await fs.writeFile(path.join(dareDir, 'IDEIA.md'), renderIdeiaSkeleton(facts, opts.excalidraw !== false));
68
+ // v3.2: deterministic API/entity extraction runs by default (was --deep
69
+ // only) so IDEIA.md + module specs carry real collected data, not just
70
+ // skeletons. The agent (/dare-reverse) enriches the semantic sections.
71
+ const model = await extractDataModel(targetDir);
72
+ writeSpinner.text = 'Writing IDEIA.md + module specs...';
73
+ // Surface the counts in reverse-facts.json (no longer purely structural).
74
+ const factsWithModel = {
75
+ ...facts,
76
+ api: {
77
+ endpoints: model.endpoints.length,
78
+ entities: model.entities.length,
79
+ },
80
+ };
81
+ await fs.writeJSON(path.join(reverseDir, 'reverse-facts.json'), factsWithModel, { spaces: 2 });
82
+ await fs.writeFile(path.join(dareDir, 'IDEIA.md'), renderIdeiaSkeleton(facts, opts.excalidraw !== false, model));
64
83
  for (let i = 0; i < facts.modules.length; i++) {
65
84
  const mod = facts.modules[i];
66
- await fs.writeFile(path.join(reverseDir, moduleSpecFilename(i, mod)), renderModuleSpecSkeleton(mod, i, facts.modules.length, generatedAt));
85
+ await fs.writeFile(path.join(reverseDir, moduleSpecFilename(i, mod)), renderModuleSpecSkeleton(mod, i, facts.modules.length, generatedAt, model));
67
86
  }
68
87
  if (opts.excalidraw !== false) {
69
88
  await fs.writeFile(path.join(reverseDir, 'architecture.excalidraw'), renderArchitectureExcalidraw(facts));
70
89
  }
71
90
  if (opts.deep) {
72
- await writeDeepArtifacts(targetDir, reverseDir, facts);
91
+ await writeDeepArtifacts(targetDir, reverseDir, facts, model);
73
92
  }
74
- writeSpinner.succeed(chalk.green('IDEIA.md and module specs generated.'));
93
+ writeSpinner.succeed(chalk.green(`IDEIA.md + module specs generated (${model.endpoints.length} endpoints, ${model.entities.length} entities).`));
75
94
  }
76
95
  catch (err) {
77
96
  writeSpinner.fail(chalk.red('Failed to write reverse-engineering artifacts'));
@@ -94,9 +113,9 @@ export const reverseCommand = new Command('reverse')
94
113
  console.log(` ${chalk.gray('2.')} Review DARE/IDEIA.md and correct any wrong inference.`);
95
114
  console.log(` ${chalk.gray('3.')} Promote to a DESIGN with: dare design "<what this project does>"\n`);
96
115
  });
97
- async function writeDeepArtifacts(targetDir, reverseDir, facts) {
116
+ async function writeDeepArtifacts(targetDir, reverseDir, facts, preExtracted) {
98
117
  const generatedAt = facts.generatedAt;
99
- const model = await extractDataModel(targetDir);
118
+ const model = preExtracted ?? (await extractDataModel(targetDir));
100
119
  // Deterministic data model + API surface.
101
120
  await fs.writeFile(path.join(reverseDir, 'erd.md'), renderErd(model, generatedAt));
102
121
  await fs.writeFile(path.join(reverseDir, 'api-surface.md'), renderApiSurface(model, generatedAt));
@@ -1 +1 @@
1
- {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"datamodel.d.ts","sourceRoot":"","sources":["../../src/utils/datamodel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AA2CD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAuBvE;AAiVD,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAwCvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAmB9E"}
1
+ {"version":3,"file":"datamodel.d.ts","sourceRoot":"","sources":["../../src/utils/datamodel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AA0ED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAiCvE;AA2XD,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAwCvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAmB9E"}