@dewtech/dare-cli 3.1.0 → 3.3.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 +5 -1
- package/dist/__tests__/dag-runner/ralph-loop.test.js +107 -45
- package/dist/__tests__/dag-runner/ralph-loop.test.js.map +1 -1
- package/dist/__tests__/dag-runner/state-store.test.d.ts +2 -0
- package/dist/__tests__/dag-runner/state-store.test.d.ts.map +1 -0
- package/dist/__tests__/dag-runner/state-store.test.js +74 -0
- package/dist/__tests__/dag-runner/state-store.test.js.map +1 -0
- package/dist/__tests__/ensure-skills.test.d.ts +2 -0
- package/dist/__tests__/ensure-skills.test.d.ts.map +1 -0
- package/dist/__tests__/ensure-skills.test.js +67 -0
- package/dist/__tests__/ensure-skills.test.js.map +1 -0
- package/dist/__tests__/ide-command-parity.test.d.ts +2 -0
- package/dist/__tests__/ide-command-parity.test.d.ts.map +1 -0
- package/dist/__tests__/ide-command-parity.test.js +59 -0
- package/dist/__tests__/ide-command-parity.test.js.map +1 -0
- package/dist/__tests__/project-generator.test.d.ts +2 -0
- package/dist/__tests__/project-generator.test.d.ts.map +1 -0
- package/dist/__tests__/project-generator.test.js +56 -0
- package/dist/__tests__/project-generator.test.js.map +1 -0
- package/dist/__tests__/reverse-collection.test.d.ts +2 -0
- package/dist/__tests__/reverse-collection.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-collection.test.js +87 -0
- package/dist/__tests__/reverse-collection.test.js.map +1 -0
- package/dist/bin/dare.js +2 -0
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/__tests__/bench.spec.d.ts +2 -0
- package/dist/commands/__tests__/bench.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/bench.spec.js +106 -0
- package/dist/commands/__tests__/bench.spec.js.map +1 -0
- package/dist/commands/__tests__/execute.best-of.spec.d.ts +2 -0
- package/dist/commands/__tests__/execute.best-of.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/execute.best-of.spec.js +24 -0
- package/dist/commands/__tests__/execute.best-of.spec.js.map +1 -0
- package/dist/commands/__tests__/execute.telemetry.spec.d.ts +2 -0
- package/dist/commands/__tests__/execute.telemetry.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js +93 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -0
- package/dist/commands/__tests__/execute.verify.spec.d.ts +2 -0
- package/dist/commands/__tests__/execute.verify.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/execute.verify.spec.js +150 -0
- package/dist/commands/__tests__/execute.verify.spec.js.map +1 -0
- package/dist/commands/bench.d.ts +10 -0
- package/dist/commands/bench.d.ts.map +1 -0
- package/dist/commands/bench.js +64 -0
- package/dist/commands/bench.js.map +1 -0
- package/dist/commands/dna.d.ts.map +1 -1
- package/dist/commands/dna.js +4 -0
- package/dist/commands/dna.js.map +1 -1
- package/dist/commands/execute-verification.d.ts +51 -0
- package/dist/commands/execute-verification.d.ts.map +1 -0
- package/dist/commands/execute-verification.js +201 -0
- package/dist/commands/execute-verification.js.map +1 -0
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +139 -2
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +4 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/reverse.d.ts.map +1 -1
- package/dist/commands/reverse.js +27 -8
- package/dist/commands/reverse.js.map +1 -1
- package/dist/dag-runner/ralph-loop.d.ts +9 -9
- package/dist/dag-runner/ralph-loop.d.ts.map +1 -1
- package/dist/dag-runner/ralph-loop.js +89 -113
- package/dist/dag-runner/ralph-loop.js.map +1 -1
- package/dist/dag-runner/state-store.d.ts +14 -1
- package/dist/dag-runner/state-store.d.ts.map +1 -1
- package/dist/dag-runner/state-store.js +39 -8
- package/dist/dag-runner/state-store.js.map +1 -1
- package/dist/exec/npm-invoke.d.ts +8 -0
- package/dist/exec/npm-invoke.d.ts.map +1 -0
- package/dist/exec/npm-invoke.js +45 -0
- package/dist/exec/npm-invoke.js.map +1 -0
- package/dist/exec/safe-spawn.d.ts +21 -0
- package/dist/exec/safe-spawn.d.ts.map +1 -0
- package/dist/exec/safe-spawn.js +108 -0
- package/dist/exec/safe-spawn.js.map +1 -0
- package/dist/graphrag/types.d.ts +2 -2
- package/dist/graphrag/types.d.ts.map +1 -1
- package/dist/stacks/dna-emitter.d.ts.map +1 -1
- package/dist/stacks/dna-emitter.js +1 -10
- package/dist/stacks/dna-emitter.js.map +1 -1
- package/dist/utils/UpdateApplier.d.ts.map +1 -1
- package/dist/utils/UpdateApplier.js +8 -0
- package/dist/utils/UpdateApplier.js.map +1 -1
- package/dist/utils/datamodel.d.ts.map +1 -1
- package/dist/utils/datamodel.js +97 -20
- package/dist/utils/datamodel.js.map +1 -1
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +23 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/path-safety.d.ts +22 -0
- package/dist/utils/path-safety.d.ts.map +1 -0
- package/dist/utils/path-safety.js +83 -0
- package/dist/utils/path-safety.js.map +1 -0
- package/dist/utils/project-generator.d.ts +21 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +71 -0
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/reverse-facts.d.ts +3 -2
- package/dist/utils/reverse-facts.d.ts.map +1 -1
- package/dist/utils/reverse-facts.js +89 -8
- package/dist/utils/reverse-facts.js.map +1 -1
- package/dist/utils/stack-bootstrap.js +2 -2
- package/dist/utils/stack-bootstrap.js.map +1 -1
- package/dist/verification/__tests__/anti-tamper.test.d.ts +2 -0
- package/dist/verification/__tests__/anti-tamper.test.d.ts.map +1 -0
- package/dist/verification/__tests__/anti-tamper.test.js +73 -0
- package/dist/verification/__tests__/anti-tamper.test.js.map +1 -0
- package/dist/verification/__tests__/bench-fixtures.test.d.ts +2 -0
- package/dist/verification/__tests__/bench-fixtures.test.d.ts.map +1 -0
- package/dist/verification/__tests__/bench-fixtures.test.js +35 -0
- package/dist/verification/__tests__/bench-fixtures.test.js.map +1 -0
- package/dist/verification/__tests__/bench-harness.test.d.ts +2 -0
- package/dist/verification/__tests__/bench-harness.test.d.ts.map +1 -0
- package/dist/verification/__tests__/bench-harness.test.js +75 -0
- package/dist/verification/__tests__/bench-harness.test.js.map +1 -0
- package/dist/verification/__tests__/bench-report.test.d.ts +2 -0
- package/dist/verification/__tests__/bench-report.test.d.ts.map +1 -0
- package/dist/verification/__tests__/bench-report.test.js +73 -0
- package/dist/verification/__tests__/bench-report.test.js.map +1 -0
- package/dist/verification/__tests__/best-of-n-runner.test.d.ts +2 -0
- package/dist/verification/__tests__/best-of-n-runner.test.d.ts.map +1 -0
- package/dist/verification/__tests__/best-of-n-runner.test.js +94 -0
- package/dist/verification/__tests__/best-of-n-runner.test.js.map +1 -0
- package/dist/verification/__tests__/config.test.d.ts +2 -0
- package/dist/verification/__tests__/config.test.d.ts.map +1 -0
- package/dist/verification/__tests__/config.test.js +50 -0
- package/dist/verification/__tests__/config.test.js.map +1 -0
- package/dist/verification/__tests__/decay-policy.test.d.ts +2 -0
- package/dist/verification/__tests__/decay-policy.test.d.ts.map +1 -0
- package/dist/verification/__tests__/decay-policy.test.js +130 -0
- package/dist/verification/__tests__/decay-policy.test.js.map +1 -0
- package/dist/verification/__tests__/fail-to-pass.test.d.ts +2 -0
- package/dist/verification/__tests__/fail-to-pass.test.d.ts.map +1 -0
- package/dist/verification/__tests__/fail-to-pass.test.js +107 -0
- package/dist/verification/__tests__/fail-to-pass.test.js.map +1 -0
- package/dist/verification/__tests__/failure-signature.test.d.ts +2 -0
- package/dist/verification/__tests__/failure-signature.test.d.ts.map +1 -0
- package/dist/verification/__tests__/failure-signature.test.js +40 -0
- package/dist/verification/__tests__/failure-signature.test.js.map +1 -0
- package/dist/verification/__tests__/logger.test.d.ts +2 -0
- package/dist/verification/__tests__/logger.test.d.ts.map +1 -0
- package/dist/verification/__tests__/logger.test.js +23 -0
- package/dist/verification/__tests__/logger.test.js.map +1 -0
- package/dist/verification/__tests__/mutation-cargo-mutants.test.d.ts +2 -0
- package/dist/verification/__tests__/mutation-cargo-mutants.test.d.ts.map +1 -0
- package/dist/verification/__tests__/mutation-cargo-mutants.test.js +96 -0
- package/dist/verification/__tests__/mutation-cargo-mutants.test.js.map +1 -0
- package/dist/verification/__tests__/mutation-infection.test.d.ts +2 -0
- package/dist/verification/__tests__/mutation-infection.test.d.ts.map +1 -0
- package/dist/verification/__tests__/mutation-infection.test.js +101 -0
- package/dist/verification/__tests__/mutation-infection.test.js.map +1 -0
- package/dist/verification/__tests__/mutation-mutmut.test.d.ts +2 -0
- package/dist/verification/__tests__/mutation-mutmut.test.d.ts.map +1 -0
- package/dist/verification/__tests__/mutation-mutmut.test.js +102 -0
- package/dist/verification/__tests__/mutation-mutmut.test.js.map +1 -0
- package/dist/verification/__tests__/mutation-registry.test.d.ts +2 -0
- package/dist/verification/__tests__/mutation-registry.test.d.ts.map +1 -0
- package/dist/verification/__tests__/mutation-registry.test.js +28 -0
- package/dist/verification/__tests__/mutation-registry.test.js.map +1 -0
- package/dist/verification/__tests__/mutation-stryker.test.d.ts +2 -0
- package/dist/verification/__tests__/mutation-stryker.test.d.ts.map +1 -0
- package/dist/verification/__tests__/mutation-stryker.test.js +88 -0
- package/dist/verification/__tests__/mutation-stryker.test.js.map +1 -0
- package/dist/verification/__tests__/no-shell-true.test.d.ts +2 -0
- package/dist/verification/__tests__/no-shell-true.test.d.ts.map +1 -0
- package/dist/verification/__tests__/no-shell-true.test.js +43 -0
- package/dist/verification/__tests__/no-shell-true.test.js.map +1 -0
- package/dist/verification/__tests__/path-safety.test.d.ts +2 -0
- package/dist/verification/__tests__/path-safety.test.d.ts.map +1 -0
- package/dist/verification/__tests__/path-safety.test.js +59 -0
- package/dist/verification/__tests__/path-safety.test.js.map +1 -0
- package/dist/verification/__tests__/prerank.test.d.ts +2 -0
- package/dist/verification/__tests__/prerank.test.d.ts.map +1 -0
- package/dist/verification/__tests__/prerank.test.js +44 -0
- package/dist/verification/__tests__/prerank.test.js.map +1 -0
- package/dist/verification/__tests__/runner.test.d.ts +2 -0
- package/dist/verification/__tests__/runner.test.d.ts.map +1 -0
- package/dist/verification/__tests__/runner.test.js +200 -0
- package/dist/verification/__tests__/runner.test.js.map +1 -0
- package/dist/verification/__tests__/safe-spawn.test.d.ts +2 -0
- package/dist/verification/__tests__/safe-spawn.test.d.ts.map +1 -0
- package/dist/verification/__tests__/safe-spawn.test.js +36 -0
- package/dist/verification/__tests__/safe-spawn.test.js.map +1 -0
- package/dist/verification/__tests__/security.test.d.ts +2 -0
- package/dist/verification/__tests__/security.test.d.ts.map +1 -0
- package/dist/verification/__tests__/security.test.js +79 -0
- package/dist/verification/__tests__/security.test.js.map +1 -0
- package/dist/verification/__tests__/selector-pareto.test.d.ts +2 -0
- package/dist/verification/__tests__/selector-pareto.test.d.ts.map +1 -0
- package/dist/verification/__tests__/selector-pareto.test.js +77 -0
- package/dist/verification/__tests__/selector-pareto.test.js.map +1 -0
- package/dist/verification/__tests__/telemetry.test.d.ts +2 -0
- package/dist/verification/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/verification/__tests__/telemetry.test.js +116 -0
- package/dist/verification/__tests__/telemetry.test.js.map +1 -0
- package/dist/verification/__tests__/type-check.test.d.ts +2 -0
- package/dist/verification/__tests__/type-check.test.d.ts.map +1 -0
- package/dist/verification/__tests__/type-check.test.js +52 -0
- package/dist/verification/__tests__/type-check.test.js.map +1 -0
- package/dist/verification/__tests__/worktree.test.d.ts +2 -0
- package/dist/verification/__tests__/worktree.test.d.ts.map +1 -0
- package/dist/verification/__tests__/worktree.test.js +41 -0
- package/dist/verification/__tests__/worktree.test.js.map +1 -0
- package/dist/verification/bench/fixtures.d.ts +11 -0
- package/dist/verification/bench/fixtures.d.ts.map +1 -0
- package/dist/verification/bench/fixtures.js +66 -0
- package/dist/verification/bench/fixtures.js.map +1 -0
- package/dist/verification/bench/harness.d.ts +19 -0
- package/dist/verification/bench/harness.d.ts.map +1 -0
- package/dist/verification/bench/harness.js +138 -0
- package/dist/verification/bench/harness.js.map +1 -0
- package/dist/verification/bench/report.d.ts +53 -0
- package/dist/verification/bench/report.d.ts.map +1 -0
- package/dist/verification/bench/report.js +47 -0
- package/dist/verification/bench/report.js.map +1 -0
- package/dist/verification/best-of-n/runner.d.ts +29 -0
- package/dist/verification/best-of-n/runner.d.ts.map +1 -0
- package/dist/verification/best-of-n/runner.js +76 -0
- package/dist/verification/best-of-n/runner.js.map +1 -0
- package/dist/verification/best-of-n/selector/pareto.d.ts +10 -0
- package/dist/verification/best-of-n/selector/pareto.d.ts.map +1 -0
- package/dist/verification/best-of-n/selector/pareto.js +65 -0
- package/dist/verification/best-of-n/selector/pareto.js.map +1 -0
- package/dist/verification/best-of-n/selector/prerank.d.ts +23 -0
- package/dist/verification/best-of-n/selector/prerank.d.ts.map +1 -0
- package/dist/verification/best-of-n/selector/prerank.js +32 -0
- package/dist/verification/best-of-n/selector/prerank.js.map +1 -0
- package/dist/verification/best-of-n/worktree.d.ts +9 -0
- package/dist/verification/best-of-n/worktree.d.ts.map +1 -0
- package/dist/verification/best-of-n/worktree.js +100 -0
- package/dist/verification/best-of-n/worktree.js.map +1 -0
- package/dist/verification/config.d.ts +24 -0
- package/dist/verification/config.d.ts.map +1 -0
- package/dist/verification/config.js +168 -0
- package/dist/verification/config.js.map +1 -0
- package/dist/verification/decay/policy.d.ts +16 -0
- package/dist/verification/decay/policy.d.ts.map +1 -0
- package/dist/verification/decay/policy.js +64 -0
- package/dist/verification/decay/policy.js.map +1 -0
- package/dist/verification/decay/signature.d.ts +6 -0
- package/dist/verification/decay/signature.d.ts.map +1 -0
- package/dist/verification/decay/signature.js +18 -0
- package/dist/verification/decay/signature.js.map +1 -0
- package/dist/verification/gates/anti-tamper.d.ts +16 -0
- package/dist/verification/gates/anti-tamper.d.ts.map +1 -0
- package/dist/verification/gates/anti-tamper.js +142 -0
- package/dist/verification/gates/anti-tamper.js.map +1 -0
- package/dist/verification/gates/fail-to-pass.d.ts +39 -0
- package/dist/verification/gates/fail-to-pass.d.ts.map +1 -0
- package/dist/verification/gates/fail-to-pass.js +173 -0
- package/dist/verification/gates/fail-to-pass.js.map +1 -0
- package/dist/verification/gates/mutation/adapter.d.ts +34 -0
- package/dist/verification/gates/mutation/adapter.d.ts.map +1 -0
- package/dist/verification/gates/mutation/adapter.js +22 -0
- package/dist/verification/gates/mutation/adapter.js.map +1 -0
- package/dist/verification/gates/mutation/cargo-mutants.d.ts +28 -0
- package/dist/verification/gates/mutation/cargo-mutants.d.ts.map +1 -0
- package/dist/verification/gates/mutation/cargo-mutants.js +170 -0
- package/dist/verification/gates/mutation/cargo-mutants.js.map +1 -0
- package/dist/verification/gates/mutation/infection.d.ts +28 -0
- package/dist/verification/gates/mutation/infection.d.ts.map +1 -0
- package/dist/verification/gates/mutation/infection.js +149 -0
- package/dist/verification/gates/mutation/infection.js.map +1 -0
- package/dist/verification/gates/mutation/mutmut.d.ts +23 -0
- package/dist/verification/gates/mutation/mutmut.d.ts.map +1 -0
- package/dist/verification/gates/mutation/mutmut.js +148 -0
- package/dist/verification/gates/mutation/mutmut.js.map +1 -0
- package/dist/verification/gates/mutation/stryker.d.ts +19 -0
- package/dist/verification/gates/mutation/stryker.d.ts.map +1 -0
- package/dist/verification/gates/mutation/stryker.js +103 -0
- package/dist/verification/gates/mutation/stryker.js.map +1 -0
- package/dist/verification/gates/type-check.d.ts +11 -0
- package/dist/verification/gates/type-check.d.ts.map +1 -0
- package/dist/verification/gates/type-check.js +84 -0
- package/dist/verification/gates/type-check.js.map +1 -0
- package/dist/verification/registry.d.ts +6 -0
- package/dist/verification/registry.d.ts.map +1 -0
- package/dist/verification/registry.js +49 -0
- package/dist/verification/registry.js.map +1 -0
- package/dist/verification/runner.d.ts +27 -0
- package/dist/verification/runner.d.ts.map +1 -0
- package/dist/verification/runner.js +173 -0
- package/dist/verification/runner.js.map +1 -0
- package/dist/verification/telemetry.d.ts +18 -0
- package/dist/verification/telemetry.d.ts.map +1 -0
- package/dist/verification/telemetry.js +71 -0
- package/dist/verification/telemetry.js.map +1 -0
- package/dist/verification/types.d.ts +89 -0
- package/dist/verification/types.d.ts.map +1 -0
- package/dist/verification/types.js +3 -0
- package/dist/verification/types.js.map +1 -0
- package/package.json +5 -3
- package/templates/UPDATE-MANIFEST.json +20 -0
- package/templates/ide/antigravity/.agents/skills/dare-bench/SKILL.md +21 -0
- package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -0
- package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -0
- package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-bench.md +18 -0
- package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -0
- package/templates/ide/claude/.claude/commands/dare-dag.md +27 -0
- package/templates/ide/claude/.claude/commands/dare-discover.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-graph.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-info.md +26 -0
- package/templates/ide/claude/.claude/commands/dare-init.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-skill.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-update.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-validate.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -0
- package/templates/ide/cursor/.cursor/commands/dare-bench.md +18 -0
- package/templates/ide/cursor/.cursor/commands/{generate-blueprint.md → dare-blueprint.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -0
- package/templates/ide/cursor/.cursor/commands/{run-dag.md → dare-dag-run.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{dag-viz.md → dare-dag-viz.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -0
- package/templates/ide/cursor/.cursor/commands/{generate-design.md → dare-design.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -0
- package/templates/ide/cursor/.cursor/commands/{generate-docker-compose.md → dare-docker-compose.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{generate-dockerfile.md → dare-dockerfile.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{execute-task.md → dare-execute.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -0
- package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -0
- package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -0
- package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -0
- package/templates/ide/cursor/.cursor/commands/{refine-task.md → dare-refine.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -0
- package/templates/ide/cursor/.cursor/commands/{review-task.md → dare-review.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -0
- package/templates/ide/cursor/.cursor/commands/{generate-tasks.md → dare-tasks.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{telemetry-report.md → dare-telemetry.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -0
- /package/templates/ide/cursor/.cursor/commands/{generate-bugfix-design.md → dare-bugfix-design.md} +0 -0
- /package/templates/ide/cursor/.cursor/commands/{generate-feature-design.md → dare-feature-design.md} +0 -0
package/dist/utils/datamodel.js
CHANGED
|
@@ -21,8 +21,39 @@ const IGNORE_DIRS = new Set([
|
|
|
21
21
|
const SCAN_EXT = new Set([
|
|
22
22
|
'.sql', '.prisma', '.ts', '.tsx', '.js', '.mjs', '.cjs', '.py', '.php', '.rb', '.go', '.rs',
|
|
23
23
|
]);
|
|
24
|
-
/**
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Directories whose classes/types are treated as domain entities
|
|
26
|
+
* (framework-agnostic). NOTE: `dto`/`dtos` are deliberately excluded — DTOs are
|
|
27
|
+
* API request/response shapes, not persistence entities. Filenames ending in
|
|
28
|
+
* `.entity.*` / `.model.*` are always treated as entities (see extractDataModel).
|
|
29
|
+
*/
|
|
30
|
+
const DATA_DIR_RE = /(^|\/)(models?|entities|entity|domain|schemas?)\//i;
|
|
31
|
+
/** A `*.entity.*` / `*.model.*` file is a persistence entity regardless of dir. */
|
|
32
|
+
const ENTITY_FILE_RE = /\.(entity|model)\.(ts|tsx|js|py|php|rb|go|rs)$/i;
|
|
33
|
+
/**
|
|
34
|
+
* Names that look like transport/value shapes, not persistence entities.
|
|
35
|
+
* Used to drop false positives that leak in via `domain/` type scans.
|
|
36
|
+
*/
|
|
37
|
+
const NON_ENTITY_NAME_RE = /(Dto|Request|Response|Input|Output|Payload|Params?|Query|Filter|Options?|Props|Config|Args?|Result|Mapper|Factory|Builder|Handler|Service|Controller|Module|Guard|Interceptor|Pipe|Middleware|Resolver|Strategy|Adapter|Port|UseCase|Command|Event|Query)$/;
|
|
38
|
+
/** SQL keywords that leak in as "table refs" from DDL clauses. */
|
|
39
|
+
const SQL_KEYWORDS = new Set([
|
|
40
|
+
'CASCADE', 'SET', 'NULL', 'DEFAULT', 'RESTRICT', 'ACTION', 'NO', 'KEY',
|
|
41
|
+
'PRIMARY', 'FOREIGN', 'REFERENCES', 'UNIQUE', 'INDEX', 'CONSTRAINT', 'TABLE',
|
|
42
|
+
'EXISTS', 'IF', 'AND', 'OR', 'NOT', 'TRUE', 'FALSE',
|
|
43
|
+
]);
|
|
44
|
+
function looksLikeEntity(name) {
|
|
45
|
+
if (name.length < 3)
|
|
46
|
+
return false; // single/double-char generics like "a"
|
|
47
|
+
if (!/^[A-Z]/.test(name))
|
|
48
|
+
return false; // entities are PascalCase
|
|
49
|
+
if (/^[A-Z][A-Z0-9_]*$/.test(name))
|
|
50
|
+
return false; // ALL-CAPS → SQL keyword/constant, not a class
|
|
51
|
+
if (SQL_KEYWORDS.has(name.toUpperCase()))
|
|
52
|
+
return false;
|
|
53
|
+
if (NON_ENTITY_NAME_RE.test(name))
|
|
54
|
+
return false;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
26
57
|
async function collectFiles(root) {
|
|
27
58
|
const out = [];
|
|
28
59
|
async function recurse(dir) {
|
|
@@ -57,18 +88,25 @@ export async function extractDataModel(root) {
|
|
|
57
88
|
for (const f of files) {
|
|
58
89
|
const base = path.basename(f.rel);
|
|
59
90
|
const lower = f.rel.toLowerCase();
|
|
91
|
+
// A `*.dto.*` file is never a persistence entity — skip its type scan.
|
|
92
|
+
const isDtoFile = /\.dto\.(ts|tsx|js|py|php|rb)$/i.test(f.rel) || /(^|\/)dtos?\//i.test(lower);
|
|
93
|
+
// High-confidence sources — kept regardless of name casing (SQL tables are
|
|
94
|
+
// often lowercase like `produtos` / `users`).
|
|
60
95
|
if (base === 'schema.prisma')
|
|
61
96
|
entities.push(...parsePrisma(f));
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
entities.push(...parseSqlTableRefs(f));
|
|
66
|
-
// ORM relations (framework enrichment).
|
|
97
|
+
entities.push(...parseSql(f)); // CREATE TABLE DDL
|
|
98
|
+
// Table names referenced in queries — drop SQL keywords (CASCADE, SET, …)
|
|
99
|
+
// that leak from DDL clauses, but keep real (lowercase) table names.
|
|
100
|
+
entities.push(...parseSqlTableRefs(f).filter((e) => !SQL_KEYWORDS.has(e.name.toUpperCase())));
|
|
67
101
|
if (/\.(ts|js|php|rb|py)$/.test(f.rel))
|
|
68
|
-
entities.push(...parseOrm(f));
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
102
|
+
entities.push(...parseOrm(f)); // @Entity/Eloquent/…
|
|
103
|
+
// Broad type/class scan: data dirs or *.entity.*/*.model.* files, never a
|
|
104
|
+
// DTO. `*.entity.*` files are trusted; loose `domain/` types are name-filtered
|
|
105
|
+
// to drop transport/value shapes (DTOs, generics, all-caps constants).
|
|
106
|
+
if (!isDtoFile && (DATA_DIR_RE.test(lower) || ENTITY_FILE_RE.test(f.rel))) {
|
|
107
|
+
const typed = parseTypes(f);
|
|
108
|
+
entities.push(...(ENTITY_FILE_RE.test(f.rel) ? typed : typed.filter((e) => looksLikeEntity(e.name))));
|
|
109
|
+
}
|
|
72
110
|
endpoints.push(...parseEndpoints(f));
|
|
73
111
|
}
|
|
74
112
|
return { entities: dedupeEntities(entities), endpoints: dedupeEndpoints(endpoints) };
|
|
@@ -164,20 +202,32 @@ function parseOrm(f) {
|
|
|
164
202
|
if (!name)
|
|
165
203
|
continue;
|
|
166
204
|
const entity = { name, fields: [], relations: [], source: `${f.rel}:${i + 1}` };
|
|
167
|
-
// Scan the next ~
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
205
|
+
// Scan the next ~60 lines for relations AND column/property fields, until
|
|
206
|
+
// the class body closes.
|
|
207
|
+
let depth = 0;
|
|
208
|
+
for (let j = i; j < Math.min(i + 60, lines.length); j++) {
|
|
209
|
+
const lj = lines[j];
|
|
210
|
+
depth += (lj.match(/\{/g) || []).length - (lj.match(/\}/g) || []).length;
|
|
211
|
+
const rel = /\b(belongsTo|hasMany|hasOne|belongsToMany)\s*\(\s*([A-Za-z_]\w*)/.exec(lj) ||
|
|
212
|
+
/\b(belongs_to|has_many|has_one)\s+:(\w+)/.exec(lj) ||
|
|
213
|
+
/@(ManyToOne|OneToMany|OneToOne|ManyToMany)\s*\(\s*\(\)\s*=>\s*(\w+)/.exec(lj) ||
|
|
214
|
+
/relationship\(\s*["'](\w+)["']/.exec(lj);
|
|
173
215
|
if (rel) {
|
|
174
216
|
const to = rel[2] ?? rel[1];
|
|
175
217
|
const kind = (rel[1] || 'relation').toString();
|
|
176
218
|
entity.relations.push({ to: capitalize(to.replace(/Model$|::class/g, '')), kind: normalizeKind(kind) });
|
|
177
219
|
}
|
|
220
|
+
else if (j > i) {
|
|
221
|
+
// Property/column field: `name: type` (TS), optionally @Column-decorated.
|
|
222
|
+
const fm = /^\s*(?:@\w+\([^)]*\)\s*)?(\w+)\??\s*:\s*([\w[\]<>., |]+)/.exec(lj);
|
|
223
|
+
if (fm && !/^(constructor|function|async|public|private|protected|static|get|set)$/.test(fm[1])) {
|
|
224
|
+
entity.fields.push({ name: fm[1], type: fm[2].trim().replace(/[;,].*$/, '') });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (j > i && depth <= 0)
|
|
228
|
+
break; // class body closed
|
|
178
229
|
}
|
|
179
|
-
|
|
180
|
-
out.push(entity);
|
|
230
|
+
out.push(entity); // confirmed entity by @Entity / extends Model / etc.
|
|
181
231
|
}
|
|
182
232
|
return out;
|
|
183
233
|
}
|
|
@@ -199,6 +249,20 @@ function parseEndpoints(f) {
|
|
|
199
249
|
const out = [];
|
|
200
250
|
const lines = f.content.split(/\r?\n/);
|
|
201
251
|
const isRuby = f.rel.endsWith('.rb');
|
|
252
|
+
// Class-level route prefix for frameworks that split it from the method
|
|
253
|
+
// decorator: NestJS @Controller('x'), Spring @RequestMapping("/x"). A file
|
|
254
|
+
// usually hosts one controller; we apply its prefix to method-decorator
|
|
255
|
+
// routes (NestJS @Get/@Post …). Full-path frameworks (Express/Laravel/…) are
|
|
256
|
+
// unaffected.
|
|
257
|
+
const ctrlMatch = /@Controller\(\s*['"`]([^'"`]*)['"`]/.exec(f.content) ||
|
|
258
|
+
/@RequestMapping\(\s*(?:value\s*=\s*)?['"]([^'"]*)['"]/.exec(f.content);
|
|
259
|
+
const classPrefix = ctrlMatch ? ctrlMatch[1] : '';
|
|
260
|
+
const joinRoute = (prefix, route) => {
|
|
261
|
+
const a = prefix.replace(/^\/+|\/+$/g, '');
|
|
262
|
+
const b = route.replace(/^\/+|\/+$/g, '');
|
|
263
|
+
const joined = [a, b].filter(Boolean).join('/');
|
|
264
|
+
return '/' + joined;
|
|
265
|
+
};
|
|
202
266
|
// 1. Per-method, single-line patterns.
|
|
203
267
|
for (let i = 0; i < lines.length; i++) {
|
|
204
268
|
for (const re of ENDPOINT_PATTERNS) {
|
|
@@ -208,10 +272,23 @@ function parseEndpoints(f) {
|
|
|
208
272
|
// Axum captures (path, method); the others capture (method, path).
|
|
209
273
|
const axum = re.source.startsWith('\\.route');
|
|
210
274
|
const method = (axum ? m[2] : m[1]).toUpperCase();
|
|
211
|
-
const
|
|
275
|
+
const rawRoute = axum ? m[1] : m[2];
|
|
276
|
+
// Only NestJS method decorators (first pattern, starts with @Get/@Post)
|
|
277
|
+
// need the controller prefix composed in.
|
|
278
|
+
const isNestDecorator = re.source.startsWith('@(Get');
|
|
279
|
+
const route = isNestDecorator ? joinRoute(classPrefix, rawRoute) : rawRoute;
|
|
212
280
|
out.push({ method, route, source: `${f.rel}:${i + 1}` });
|
|
213
281
|
}
|
|
214
282
|
}
|
|
283
|
+
// Bare NestJS decorators `@Get()` / `@Post()` (no path arg) → controller-root route.
|
|
284
|
+
const bareNest = /@(Get|Post|Put|Patch|Delete|Options|Head)\(\s*\)/.exec(lines[i]);
|
|
285
|
+
if (bareNest) {
|
|
286
|
+
out.push({
|
|
287
|
+
method: bareNest[1].toUpperCase(),
|
|
288
|
+
route: joinRoute(classPrefix, ''),
|
|
289
|
+
source: `${f.rel}:${i + 1}`,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
215
292
|
// Ruby Sinatra / Rails routes.rb: `get '/x'`.
|
|
216
293
|
if (isRuby) {
|
|
217
294
|
const rm = /^\s*(get|post|put|patch|delete|match)\s+['"]([^'"]+)['"]/.exec(lines[i]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datamodel.js","sourceRoot":"","sources":["../../src/utils/datamodel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datamodel.js","sourceRoot":"","sources":["../../src/utils/datamodel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAgBzC,eAAO,MAAM,MAAM,EAAE,MAEc,CAAC;AAEpC;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import pino from 'pino';
|
|
2
|
+
function resolveLevel() {
|
|
3
|
+
return process.env.DARE_LOG_LEVEL ?? 'info';
|
|
4
|
+
}
|
|
5
|
+
function buildTransport() {
|
|
6
|
+
if (!process.stdout.isTTY)
|
|
7
|
+
return undefined;
|
|
8
|
+
return {
|
|
9
|
+
target: 'pino-pretty',
|
|
10
|
+
options: { colorize: true },
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const transport = buildTransport();
|
|
14
|
+
export const logger = transport
|
|
15
|
+
? pino({ level: resolveLevel(), transport })
|
|
16
|
+
: pino({ level: resolveLevel() });
|
|
17
|
+
/**
|
|
18
|
+
* Child logger with a fixed scope binding (RNF-04).
|
|
19
|
+
*/
|
|
20
|
+
export function createLogger(scope) {
|
|
21
|
+
return logger.child({ scope });
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAqB,MAAM,MAAM,CAAC;AAEzC,SAAS,YAAY;IACnB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAW,SAAS;IACrC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Stable message for tests and CLI error handling. */
|
|
2
|
+
export declare const PATH_ESCAPE_MESSAGE = "Path escape: resolved path is outside allowed root";
|
|
3
|
+
/**
|
|
4
|
+
* Thrown when a resolved path leaves the allowed project root.
|
|
5
|
+
*/
|
|
6
|
+
export declare class PathEscapeError extends Error {
|
|
7
|
+
readonly code: "PATH_ESCAPE";
|
|
8
|
+
constructor(message?: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Ensures a path is relative and does not escape via '..' (RS-01).
|
|
12
|
+
*/
|
|
13
|
+
export declare function assertRelativeSafe(targetPath: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Garante que `resolved` está sob `root` (prefixo realpath quando possível).
|
|
16
|
+
*/
|
|
17
|
+
export declare function assertWithinRoot(root: string, resolved: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Junta root + segmentos relativos e valida confinamento.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveSafePath(root: string, ...segments: string[]): string;
|
|
22
|
+
//# sourceMappingURL=path-safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-safety.d.ts","sourceRoot":"","sources":["../../src/utils/path-safety.ts"],"names":[],"mappings":"AAGA,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,uDACsB,CAAC;AAEvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;gBAE3B,OAAO,GAAE,MAA4B;CAIlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAQ3D;AA6BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAWrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAgB3E"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/** Stable message for tests and CLI error handling. */
|
|
4
|
+
export const PATH_ESCAPE_MESSAGE = 'Path escape: resolved path is outside allowed root';
|
|
5
|
+
/**
|
|
6
|
+
* Thrown when a resolved path leaves the allowed project root.
|
|
7
|
+
*/
|
|
8
|
+
export class PathEscapeError extends Error {
|
|
9
|
+
constructor(message = PATH_ESCAPE_MESSAGE) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.code = 'PATH_ESCAPE';
|
|
12
|
+
this.name = 'PathEscapeError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ensures a path is relative and does not escape via '..' (RS-01).
|
|
17
|
+
*/
|
|
18
|
+
export function assertRelativeSafe(targetPath) {
|
|
19
|
+
if (path.isAbsolute(targetPath)) {
|
|
20
|
+
throw new Error(`targetPath must be relative, got absolute: ${targetPath}`);
|
|
21
|
+
}
|
|
22
|
+
const norm = path.posix.normalize(targetPath.replace(/\\/g, '/'));
|
|
23
|
+
if (norm.startsWith('..') || norm.includes('/../')) {
|
|
24
|
+
throw new Error(`targetPath must not contain '..': ${targetPath}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function isUncPath(p) {
|
|
28
|
+
const normalized = p.replace(/\//g, '\\');
|
|
29
|
+
return normalized.startsWith('\\\\');
|
|
30
|
+
}
|
|
31
|
+
function tryRealpath(p) {
|
|
32
|
+
try {
|
|
33
|
+
return fs.realpathSync(p);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return path.resolve(p);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function normalizeForPrefixCheck(p) {
|
|
40
|
+
const resolved = tryRealpath(p);
|
|
41
|
+
if (process.platform === 'win32') {
|
|
42
|
+
return resolved.replace(/\//g, '\\').toLowerCase();
|
|
43
|
+
}
|
|
44
|
+
return resolved;
|
|
45
|
+
}
|
|
46
|
+
function isUnderRoot(rootNorm, targetNorm) {
|
|
47
|
+
if (targetNorm === rootNorm)
|
|
48
|
+
return true;
|
|
49
|
+
const sep = process.platform === 'win32' ? '\\' : path.sep;
|
|
50
|
+
return targetNorm.startsWith(rootNorm + sep);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Garante que `resolved` está sob `root` (prefixo realpath quando possível).
|
|
54
|
+
*/
|
|
55
|
+
export function assertWithinRoot(root, resolved) {
|
|
56
|
+
if (isUncPath(root)) {
|
|
57
|
+
throw new PathEscapeError('Path escape: UNC paths are not allowed as root');
|
|
58
|
+
}
|
|
59
|
+
const rootNorm = normalizeForPrefixCheck(root);
|
|
60
|
+
const targetNorm = normalizeForPrefixCheck(resolved);
|
|
61
|
+
if (!isUnderRoot(rootNorm, targetNorm)) {
|
|
62
|
+
throw new PathEscapeError(PATH_ESCAPE_MESSAGE);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Junta root + segmentos relativos e valida confinamento.
|
|
67
|
+
*/
|
|
68
|
+
export function resolveSafePath(root, ...segments) {
|
|
69
|
+
if (isUncPath(root)) {
|
|
70
|
+
throw new PathEscapeError('Path escape: UNC paths are not allowed as root');
|
|
71
|
+
}
|
|
72
|
+
for (const segment of segments) {
|
|
73
|
+
const norm = path.posix.normalize(segment.replace(/\\/g, '/'));
|
|
74
|
+
if (norm === '..' || norm.startsWith('../') || norm.includes('/../')) {
|
|
75
|
+
throw new PathEscapeError(PATH_ESCAPE_MESSAGE);
|
|
76
|
+
}
|
|
77
|
+
assertRelativeSafe(segment);
|
|
78
|
+
}
|
|
79
|
+
const resolved = path.resolve(root, ...segments);
|
|
80
|
+
assertWithinRoot(root, resolved);
|
|
81
|
+
return resolved;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=path-safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-safety.js","sourceRoot":"","sources":["../../src/utils/path-safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,4 +31,25 @@ export interface ProjectConfig {
|
|
|
31
31
|
}
|
|
32
32
|
export declare function generateProjectStructure(config: ProjectConfig): Promise<void>;
|
|
33
33
|
export declare function installDareToExistingProject(projectDir: string, config: Omit<ProjectConfig, 'outputDir'>): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Installs the IDE-specific rules + the full set of DARE slash-commands/skills
|
|
36
|
+
* for the configured IDE. Idempotent — safe to call repeatedly. Extracted so
|
|
37
|
+
* brownfield commands (reverse/dna/migrate) can ensure the agent-side skills
|
|
38
|
+
* exist without re-running a full init.
|
|
39
|
+
*/
|
|
40
|
+
export declare function installIdeFiles(outputDir: string, config: Omit<ProjectConfig, 'outputDir'>): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Ensures the DARE slash-commands/skills are installed for the project at
|
|
43
|
+
* `targetDir`, so the two-layer workflow (CLI command + IDE skill) works.
|
|
44
|
+
*
|
|
45
|
+
* - If `dare.config.json` exists → refreshes the IDE files for the configured
|
|
46
|
+
* IDE (idempotent). No prompt.
|
|
47
|
+
* - If it does NOT exist (brownfield project never touched by DARE) → installs
|
|
48
|
+
* for ALL supported IDEs (cursor + antigravity + claude) and writes a minimal
|
|
49
|
+
* `dare.config.json`, so the workflow works regardless of which IDE is used.
|
|
50
|
+
*
|
|
51
|
+
* Brownfield commands (`dare reverse` / `dna` / `migrate`) call this before
|
|
52
|
+
* their analysis. `dare init` / `discover` already install skills themselves.
|
|
53
|
+
*/
|
|
54
|
+
export declare function ensureDareSkills(targetDir: string): Promise<void>;
|
|
34
55
|
//# sourceMappingURL=project-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAuBA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAuBA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAG9B,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,GAAG,MAAM,GAAG,IAAI,CAAC;IACnD,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;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsJnF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDvE"}
|
|
@@ -10,6 +10,7 @@ function getFrameworkVersion() {
|
|
|
10
10
|
}
|
|
11
11
|
import { generateCursorRules, generateAntigravityRules, generateSharedConfig, generateMcpCursorRules, generateMcpAntigravityRules, generateClaudeCodeRules, generateMcpClaudeCodeRules, generateClaudeCommands, generateClaudeSettings, } from './templates.js';
|
|
12
12
|
import { bootstrapBackend, bootstrapFrontend, bootstrapMcp, } from './stack-bootstrap.js';
|
|
13
|
+
import { defaultVerificationConfigForProject } from '../verification/config.js';
|
|
13
14
|
export async function generateProjectStructure(config) {
|
|
14
15
|
const { outputDir, name, structure, backend, frontend, ide, graphrag, mcp } = config;
|
|
15
16
|
await fs.ensureDir(outputDir);
|
|
@@ -45,6 +46,7 @@ export async function generateProjectStructure(config) {
|
|
|
45
46
|
// `complexity-analyzer.ts` for defaults; override per project here.
|
|
46
47
|
thresholds: { low: 5, med: 12, high: 20 },
|
|
47
48
|
},
|
|
49
|
+
verification: defaultVerificationConfigForProject(),
|
|
48
50
|
};
|
|
49
51
|
if (structure === 'mcp-server') {
|
|
50
52
|
configData.mcpTransport = config.mcpTransport;
|
|
@@ -158,6 +160,16 @@ export async function installDareToExistingProject(projectDir, config) {
|
|
|
158
160
|
await fs.writeFile(path.join(outputDir, 'DARE', 'README.md'), generateSharedConfig(name));
|
|
159
161
|
await writeDareTemplates(outputDir);
|
|
160
162
|
await writeGraphragConfig(outputDir, { ...config, outputDir });
|
|
163
|
+
await installIdeFiles(outputDir, config);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Installs the IDE-specific rules + the full set of DARE slash-commands/skills
|
|
167
|
+
* for the configured IDE. Idempotent — safe to call repeatedly. Extracted so
|
|
168
|
+
* brownfield commands (reverse/dna/migrate) can ensure the agent-side skills
|
|
169
|
+
* exist without re-running a full init.
|
|
170
|
+
*/
|
|
171
|
+
export async function installIdeFiles(outputDir, config) {
|
|
172
|
+
const { structure, backend, frontend, ide, graphrag, mcp } = config;
|
|
161
173
|
if (ide === 'cursor' || ide === 'hybrid') {
|
|
162
174
|
const cursorRulesContent = structure === 'mcp-server'
|
|
163
175
|
? generateMcpCursorRules({ mcpTransport: config.mcpTransport, mcpLanguage: config.mcpLanguage, mcpFeatures: config.mcpFeatures, graphrag, mcp })
|
|
@@ -176,6 +188,65 @@ export async function installDareToExistingProject(projectDir, config) {
|
|
|
176
188
|
await generateClaudeFiles(outputDir, { ...config, outputDir });
|
|
177
189
|
}
|
|
178
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Ensures the DARE slash-commands/skills are installed for the project at
|
|
193
|
+
* `targetDir`, so the two-layer workflow (CLI command + IDE skill) works.
|
|
194
|
+
*
|
|
195
|
+
* - If `dare.config.json` exists → refreshes the IDE files for the configured
|
|
196
|
+
* IDE (idempotent). No prompt.
|
|
197
|
+
* - If it does NOT exist (brownfield project never touched by DARE) → installs
|
|
198
|
+
* for ALL supported IDEs (cursor + antigravity + claude) and writes a minimal
|
|
199
|
+
* `dare.config.json`, so the workflow works regardless of which IDE is used.
|
|
200
|
+
*
|
|
201
|
+
* Brownfield commands (`dare reverse` / `dna` / `migrate`) call this before
|
|
202
|
+
* their analysis. `dare init` / `discover` already install skills themselves.
|
|
203
|
+
*/
|
|
204
|
+
export async function ensureDareSkills(targetDir) {
|
|
205
|
+
const cfgPath = path.join(targetDir, 'dare.config.json');
|
|
206
|
+
if (await fs.pathExists(cfgPath)) {
|
|
207
|
+
const cfg = (await fs.readJSON(cfgPath));
|
|
208
|
+
const ide = (cfg.ide ?? 'hybrid');
|
|
209
|
+
await fs.ensureDir(path.join(targetDir, 'DARE', 'EXECUTION'));
|
|
210
|
+
await installIdeFiles(targetDir, {
|
|
211
|
+
name: cfg.name ?? path.basename(targetDir),
|
|
212
|
+
structure: cfg.structure ?? 'backend',
|
|
213
|
+
backend: cfg.backend,
|
|
214
|
+
frontend: cfg.frontend,
|
|
215
|
+
ide,
|
|
216
|
+
graphrag: cfg.graphrag ?? 'sqlite',
|
|
217
|
+
mcp: cfg.mcp ?? false,
|
|
218
|
+
mcpTransport: cfg.mcpTransport,
|
|
219
|
+
mcpLanguage: cfg.mcpLanguage,
|
|
220
|
+
mcpFeatures: cfg.mcpFeatures,
|
|
221
|
+
});
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
// No DARE config yet — install for every IDE so the agent-side skills exist
|
|
225
|
+
// no matter which editor the user runs. Writes a minimal config marker.
|
|
226
|
+
const name = path.basename(targetDir);
|
|
227
|
+
await fs.ensureDir(path.join(targetDir, 'DARE', 'EXECUTION'));
|
|
228
|
+
await fs.writeFile(path.join(targetDir, 'DARE', 'README.md'), generateSharedConfig(name));
|
|
229
|
+
await writeDareTemplates(targetDir);
|
|
230
|
+
for (const ide of ['hybrid', 'claude-code']) {
|
|
231
|
+
await installIdeFiles(targetDir, {
|
|
232
|
+
name,
|
|
233
|
+
structure: 'backend',
|
|
234
|
+
ide,
|
|
235
|
+
graphrag: 'sqlite',
|
|
236
|
+
mcp: false,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
await fs.writeJSON(cfgPath, {
|
|
240
|
+
name,
|
|
241
|
+
structure: 'backend',
|
|
242
|
+
ide: 'hybrid',
|
|
243
|
+
graphrag: 'sqlite',
|
|
244
|
+
mcp: false,
|
|
245
|
+
version: getFrameworkVersion(),
|
|
246
|
+
installedAt: new Date().toISOString(),
|
|
247
|
+
installedBy: 'ensureDareSkills (brownfield command)',
|
|
248
|
+
}, { spaces: 2 });
|
|
249
|
+
}
|
|
179
250
|
async function generateMcpTemplate(dir, config) {
|
|
180
251
|
const { mcpLanguage = 'node-ts', mcpTransport = 'stdio', mcpFeatures = ['tools'] } = config;
|
|
181
252
|
await fs.ensureDir(path.join(dir, 'src'));
|