Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@dewtech/dare-cli

Package Overview
Dependencies
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dewtech/dare-cli - npm Package Compare versions

Comparing version
0.2.0
to
0.3.0
+3
dist/commands/discover.d.ts
import { Command } from 'commander';
export declare const discoverCommand: Command;
//# sourceMappingURL=discover.d.ts.map
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,eAAe,SAgOxB,CAAC"}
import { Command } from 'commander';
import inquirer from 'inquirer';
import chalk from 'chalk';
import ora from 'ora';
import path from 'path';
import { detectProject, formatDetectionReport } from '../utils/project-detector.js';
import { installDareToExistingProject } from '../utils/project-generator.js';
export const discoverCommand = new Command('discover')
.description('Detect an existing project and install DARE methodology files')
.option('-d, --dir <path>', 'Target directory (default: current directory)')
.option('--check', 'Only show detection results without installing')
.action(async (opts) => {
const targetDir = path.resolve(opts.dir ?? process.cwd());
console.log(chalk.blue.bold('\n🔍 DARE Framework - Project Discovery\n'));
console.log(chalk.gray(` Scanning: ${targetDir}\n`));
const spinner = ora('Analyzing project...').start();
const detected = await detectProject(targetDir);
spinner.stop();
// ── Show detection results ─────────────────────────────────────────────
console.log(chalk.yellow('Detection results:\n'));
console.log(formatDetectionReport(detected));
console.log('');
if (opts.check) {
if (detected.hasDare) {
console.log(chalk.green('✅ DARE is already installed in this project.'));
if (detected.dareConfig) {
console.log(chalk.gray('\nCurrent dare.config.json:'));
console.log(chalk.gray(JSON.stringify(detected.dareConfig, null, 2)));
}
}
else {
console.log(chalk.yellow('⚠️ DARE is not installed. Run `dare discover` without --check to install it.'));
}
return;
}
// ── Already installed — offer reconfigure ─────────────────────────────
if (detected.hasDare) {
console.log(chalk.green('✅ DARE is already installed in this project.\n'));
const { action } = await inquirer.prompt([
{
type: 'list',
name: 'action',
message: 'What would you like to do?',
choices: [
{ name: '🔄 Reconfigure DARE (update rules and config)', value: 'reconfigure' },
{ name: '🚪 Exit', value: 'exit' },
],
},
]);
if (action === 'exit')
return;
}
// ── Confirm or correct detected values ────────────────────────────────
console.log(chalk.cyan('Confirm project details (press Enter to accept detected values):\n'));
const structureChoices = [
{ name: '🏗️ Monorepo (backend + frontend)', value: 'monorepo' },
{ name: '⚙️ Backend only', value: 'backend' },
{ name: '🎨 Frontend only', value: 'frontend' },
{ name: '🔌 MCP Server', value: 'mcp-server' },
{ name: '❓ Unknown / Other', value: 'unknown' },
];
const answers = await inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'Project name:',
default: detected.name,
validate: (input) => {
if (!input.trim())
return 'Project name cannot be empty';
return true;
},
},
{
type: 'list',
name: 'structure',
message: 'Project structure:',
default: detected.structure !== 'unknown' ? detected.structure : 'backend',
choices: structureChoices,
},
// ── MCP-specific ────────────────────────────────────────────────────
{
type: 'list',
name: 'mcpLanguage',
message: 'MCP server language:',
when: (ans) => ans.structure === 'mcp-server',
default: detected.mcpLanguage ?? 'node-ts',
choices: [
{ name: '🟦 TypeScript / Node.js', value: 'node-ts' },
{ name: '🐍 Python', value: 'python' },
],
},
{
type: 'list',
name: 'mcpTransport',
message: 'Transport type:',
when: (ans) => ans.structure === 'mcp-server',
default: detected.mcpTransport ?? 'stdio',
choices: [
{ name: '📟 stdio (CLI tools, local agents)', value: 'stdio' },
{ name: '🌐 SSE (web integrations, remote)', value: 'sse' },
{ name: '⚡ HTTP Stream (streamable HTTP)', value: 'http-stream' },
],
},
{
type: 'checkbox',
name: 'mcpFeatures',
message: 'MCP capabilities present in this project:',
when: (ans) => ans.structure === 'mcp-server',
choices: [
{ name: '🔧 Tools (callable functions)', value: 'tools', checked: true },
{ name: '📦 Resources (readable context)', value: 'resources', checked: false },
{ name: '💬 Prompts (prompt templates)', value: 'prompts', checked: false },
],
validate: (selected) => selected.length > 0 || 'Select at least one capability',
},
// ── Backend stack ───────────────────────────────────────────────────
{
type: 'list',
name: 'backend',
message: 'Backend stack:',
when: (ans) => ans.structure === 'backend' || ans.structure === 'monorepo',
default: detected.backend ?? 'node-nestjs',
choices: [
{ name: '🦀 Rust / Axum', value: 'rust-axum' },
{ name: '🟢 Node.js / NestJS', value: 'node-nestjs' },
{ name: '🐍 Python / FastAPI', value: 'python-fastapi' },
{ name: '🐘 PHP / Laravel', value: 'php-laravel' },
{ name: '📦 Other / Not listed', value: 'other' },
],
},
{
type: 'list',
name: 'frontend',
message: 'Frontend stack:',
when: (ans) => ans.structure === 'frontend' || ans.structure === 'monorepo',
default: detected.frontend ?? 'react',
choices: [
{ name: '⚛️ React 18+', value: 'react' },
{ name: '💚 Vue 3+', value: 'vue' },
{ name: '💚 Nuxt 3', value: 'nuxt' },
{ name: '📦 Other / Not listed', value: 'other' },
],
},
// ── Common ──────────────────────────────────────────────────────────
{
type: 'list',
name: 'ide',
message: 'Primary IDE / Agent:',
choices: [
{ name: '🖱️ Cursor', value: 'cursor' },
{ name: '🚀 Antigravity', value: 'antigravity' },
{ name: '🔀 Both (Hybrid)', value: 'hybrid' },
],
},
{
type: 'list',
name: 'graphrag',
message: 'GraphRAG backend:',
choices: [
{ name: '🗄️ SQLite (recommended - fast, local)', value: 'sqlite' },
{ name: '📄 JSON Graph (simple, no dependencies)', value: 'json' },
{ name: '🐳 Neo4j Docker (enterprise)', value: 'neo4j' },
],
},
{
type: 'confirm',
name: 'mcp',
message: 'Enable DARE MCP Server for context queries?',
default: true,
},
{
type: 'confirm',
name: 'confirmInstall',
message: (ans) => {
const files = buildFileList(ans);
return `Ready to install DARE. Files to create:\n${files}\n Proceed?`;
},
default: true,
},
]);
if (!answers.confirmInstall) {
console.log(chalk.yellow('\nInstallation cancelled.\n'));
return;
}
const installSpinner = ora('Installing DARE...').start();
try {
await installDareToExistingProject(targetDir, {
name: answers.name,
structure: answers.structure,
backend: answers.backend,
frontend: answers.frontend,
mcpTransport: answers.mcpTransport,
mcpLanguage: answers.mcpLanguage,
mcpFeatures: answers.mcpFeatures,
ide: answers.ide,
graphrag: answers.graphrag,
mcp: answers.mcp,
});
installSpinner.succeed(chalk.green('DARE installed successfully!'));
console.log(chalk.cyan('\n📋 Next steps:\n'));
console.log(` ${chalk.gray('1.')} dare design "Describe what this project does"`);
console.log(` ${chalk.gray('2.')} dare blueprint`);
console.log(` ${chalk.gray('3.')} dare execute --parallel\n`);
if (answers.structure === 'mcp-server') {
const inspectCmd = answers.mcpLanguage === 'python'
? 'npx @modelcontextprotocol/inspector python main.py'
: 'npx @modelcontextprotocol/inspector node dist/index.js';
console.log(chalk.gray(` Tip: test your MCP server with: ${inspectCmd}\n`));
}
}
catch (err) {
installSpinner.fail(chalk.red('Failed to install DARE'));
console.error(err);
process.exit(1);
}
});
function buildFileList(ans) {
const files = [
' · dare.config.json',
' · DARE/ (README.md, EXECUTION/)',
];
const ide = ans.ide;
if (ide === 'cursor' || ide === 'hybrid') {
files.push(' · .cursorrules');
files.push(' · .cursor/rules/ + .cursor/commands/');
}
if (ide === 'antigravity' || ide === 'hybrid') {
files.push(' · .antigravityrules');
files.push(' · .agents/skills/ + .agents/workflows/');
}
return files.join('\n');
}
//# sourceMappingURL=discover.js.map
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
export interface DetectedProject {
structure: 'monorepo' | 'backend' | 'frontend' | 'mcp-server' | 'unknown';
backend?: string;
frontend?: string;
mcpLanguage?: 'node-ts' | 'python';
mcpTransport?: 'stdio' | 'sse' | 'http-stream';
name: string;
hasDare: boolean;
dareConfig?: Record<string, unknown>;
confidence: 'high' | 'medium' | 'low';
evidence: string[];
}
export declare function detectProject(dir: string): Promise<DetectedProject>;
export declare function formatDetectionReport(detected: DetectedProject): string;
//# sourceMappingURL=project-detector.d.ts.map
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4MzE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAiBvE"}
import fs from 'fs-extra';
import path from 'path';
export async function detectProject(dir) {
const evidence = [];
let structure = 'unknown';
let backend;
let frontend;
let mcpLanguage;
let mcpTransport;
let confidence = 'low';
// Detect project name from directory
const name = path.basename(dir).replace(/[^a-z0-9-_]/gi, '-').toLowerCase();
// Check if DARE is already installed
const dareConfigPath = path.join(dir, 'dare.config.json');
const hasDare = await fs.pathExists(dareConfigPath);
let dareConfig;
if (hasDare) {
dareConfig = await fs.readJSON(dareConfigPath);
evidence.push('dare.config.json found (DARE already installed)');
}
// ── Check for monorepo indicators first ──────────────────────────────────
const hasBackendDir = await fs.pathExists(path.join(dir, 'backend'));
const hasFrontendDir = await fs.pathExists(path.join(dir, 'frontend'));
const hasPnpmWorkspace = await fs.pathExists(path.join(dir, 'pnpm-workspace.yaml'));
const hasLernaJson = await fs.pathExists(path.join(dir, 'lerna.json'));
if ((hasBackendDir && hasFrontendDir) || hasPnpmWorkspace || hasLernaJson) {
structure = 'monorepo';
confidence = 'medium';
if (hasBackendDir && hasFrontendDir)
evidence.push('backend/ and frontend/ directories found');
if (hasPnpmWorkspace)
evidence.push('pnpm-workspace.yaml found');
if (hasLernaJson)
evidence.push('lerna.json found');
}
// ── Check package.json ────────────────────────────────────────────────────
const packageJsonPath = path.join(dir, 'package.json');
if (await fs.pathExists(packageJsonPath)) {
const pkg = await fs.readJSON(packageJsonPath).catch(() => ({}));
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
const pkgName = pkg.name;
// MCP detection — highest priority
if (deps['@modelcontextprotocol/sdk'] || deps['@modelcontextprotocol/server']) {
structure = 'mcp-server';
mcpLanguage = 'node-ts';
confidence = 'high';
evidence.push('@modelcontextprotocol/sdk found in package.json');
// Detect transport from scripts or deps
if (deps['express'] || deps['fastify']) {
mcpTransport = 'sse';
evidence.push('express/fastify found → likely SSE transport');
}
else {
mcpTransport = 'stdio';
evidence.push('no HTTP framework found → likely stdio transport');
}
}
else if (deps['@nestjs/core'] || deps['@nestjs/common']) {
if (structure === 'unknown')
structure = 'backend';
backend = 'node-nestjs';
confidence = 'high';
evidence.push('@nestjs/core found in package.json');
}
else if (deps['express'] && structure !== 'monorepo') {
if (structure === 'unknown')
structure = 'backend';
backend = 'node-express';
confidence = 'medium';
evidence.push('express found in package.json');
}
else if (deps['react']) {
if (structure === 'unknown')
structure = 'frontend';
frontend = 'react';
confidence = 'high';
evidence.push('react found in package.json');
}
else if (deps['vue']) {
if (structure === 'unknown')
structure = 'frontend';
frontend = 'vue';
confidence = 'high';
evidence.push('vue found in package.json');
}
else if (deps['nuxt']) {
if (structure === 'unknown')
structure = 'frontend';
frontend = 'nuxt';
confidence = 'high';
evidence.push('nuxt found in package.json');
}
else if (pkg.name) {
evidence.push(`package.json found (name: ${pkgName})`);
}
}
// ── Check Cargo.toml (Rust) ───────────────────────────────────────────────
const cargoPath = path.join(dir, 'Cargo.toml');
if (await fs.pathExists(cargoPath)) {
if (structure === 'unknown')
structure = 'backend';
backend = 'rust-axum';
confidence = 'high';
evidence.push('Cargo.toml found');
// Check if it's an MCP server built in Rust
const cargoContent = await fs.readFile(cargoPath, 'utf-8').catch(() => '');
if (cargoContent.includes('rmcp') || cargoContent.includes('mcp')) {
structure = 'mcp-server';
mcpLanguage = 'node-ts'; // closest we have, will ask
evidence.push('MCP dependency found in Cargo.toml');
}
}
// ── Check Python ──────────────────────────────────────────────────────────
const requirementsPath = path.join(dir, 'requirements.txt');
const pyprojectPath = path.join(dir, 'pyproject.toml');
const mainPyPath = path.join(dir, 'main.py');
const hasPython = await fs.pathExists(requirementsPath) || await fs.pathExists(pyprojectPath);
if (hasPython) {
let pyContent = '';
if (await fs.pathExists(requirementsPath)) {
pyContent += await fs.readFile(requirementsPath, 'utf-8').catch(() => '');
evidence.push('requirements.txt found');
}
if (await fs.pathExists(pyprojectPath)) {
pyContent += await fs.readFile(pyprojectPath, 'utf-8').catch(() => '');
evidence.push('pyproject.toml found');
}
if (await fs.pathExists(mainPyPath)) {
const mainContent = await fs.readFile(mainPyPath, 'utf-8').catch(() => '');
pyContent += mainContent;
}
const mcpPyPattern = /\bmcp\b|FastMCP|mcp\.server|@mcp\.tool/;
const fastApiPattern = /fastapi/i;
if (mcpPyPattern.test(pyContent)) {
structure = 'mcp-server';
mcpLanguage = 'python';
confidence = 'high';
evidence.push('mcp/FastMCP found in Python files');
if (pyContent.includes('sse') || pyContent.includes('transport="sse"')) {
mcpTransport = 'sse';
evidence.push('SSE transport detected in Python files');
}
else {
mcpTransport = 'stdio';
}
}
else if (fastApiPattern.test(pyContent)) {
if (structure === 'unknown')
structure = 'backend';
backend = 'python-fastapi';
confidence = 'high';
evidence.push('fastapi found in Python requirements');
}
else {
if (structure === 'unknown')
structure = 'backend';
if (!backend)
backend = 'python-fastapi';
confidence = 'medium';
}
}
// ── Check PHP / Laravel ───────────────────────────────────────────────────
const composerPath = path.join(dir, 'composer.json');
if (await fs.pathExists(composerPath)) {
if (structure === 'unknown')
structure = 'backend';
backend = 'php-laravel';
confidence = 'high';
evidence.push('composer.json found');
const composer = await fs.readJSON(composerPath).catch(() => ({}));
const require = composer.require ?? {};
if (require['laravel/framework']) {
evidence.push('laravel/framework found in composer.json');
}
}
// ── Detect frontend within a monorepo ─────────────────────────────────────
if (structure === 'monorepo' && hasFrontendDir) {
const frontendPkg = path.join(dir, 'frontend', 'package.json');
if (await fs.pathExists(frontendPkg)) {
const pkg = await fs.readJSON(frontendPkg).catch(() => ({}));
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
if (deps['react']) {
frontend = 'react';
evidence.push('react found in frontend/package.json');
}
else if (deps['vue']) {
frontend = 'vue';
evidence.push('vue found in frontend/package.json');
}
else if (deps['nuxt']) {
frontend = 'nuxt';
evidence.push('nuxt found in frontend/package.json');
}
}
}
if (structure === 'monorepo' && hasBackendDir) {
const backendPkg = path.join(dir, 'backend', 'package.json');
if (await fs.pathExists(backendPkg)) {
const pkg = await fs.readJSON(backendPkg).catch(() => ({}));
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
if (deps['@nestjs/core']) {
backend = 'node-nestjs';
evidence.push('nestjs found in backend/package.json');
}
}
}
if (evidence.length === 0) {
evidence.push('No recognizable project files found');
}
return {
name,
structure,
backend,
frontend,
mcpLanguage,
mcpTransport,
hasDare,
dareConfig,
confidence,
evidence,
};
}
export function formatDetectionReport(detected) {
const lines = [];
const confidenceColor = detected.confidence === 'high' ? '✅' : detected.confidence === 'medium' ? '⚠️' : '❓';
lines.push(` Structure: ${detected.structure} ${confidenceColor}`);
if (detected.backend)
lines.push(` Backend: ${detected.backend}`);
if (detected.frontend)
lines.push(` Frontend: ${detected.frontend}`);
if (detected.mcpLanguage)
lines.push(` MCP Lang: ${detected.mcpLanguage}`);
if (detected.mcpTransport)
lines.push(` Transport: ${detected.mcpTransport}`);
lines.push(` DARE: ${detected.hasDare ? '✅ installed' : '❌ not installed'}`);
lines.push('');
lines.push(' Evidence:');
for (const e of detected.evidence) {
lines.push(` · ${e}`);
}
return lines.join('\n');
}
//# sourceMappingURL=project-detector.js.map
{"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"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"}
+2
-0

@@ -7,2 +7,3 @@ #!/usr/bin/env node

import { executeCommand } from '../commands/execute.js';
import { discoverCommand } from '../commands/discover.js';
const program = new Command();

@@ -14,2 +15,3 @@ program

program.addCommand(initCommand);
program.addCommand(discoverCommand);
program.addCommand(designCommand);

@@ -16,0 +18,0 @@ program.addCommand(blueprintCommand);

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"dare.js","sourceRoot":"","sources":["../../src/bin/dare.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
{"version":3,"file":"dare.js","sourceRoot":"","sources":["../../src/bin/dare.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SA0GpB,CAAC"}
{"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,SAoKpB,CAAC"}

@@ -35,9 +35,45 @@ import { Command } from 'commander';

{ name: '🎨 Frontend only', value: 'frontend' },
{ name: '🔌 MCP Server', value: 'mcp-server' },
],
},
// ── MCP Server questions ──────────────────────────────────────────────
{
type: 'list',
name: 'mcpLanguage',
message: 'MCP server language:',
when: (ans) => ans.structure === 'mcp-server',
choices: [
{ name: '🟦 TypeScript / Node.js', value: 'node-ts' },
{ name: '🐍 Python', value: 'python' },
],
},
{
type: 'list',
name: 'mcpTransport',
message: 'Transport type:',
when: (ans) => ans.structure === 'mcp-server',
choices: [
{ name: '📟 stdio (CLI tools, local agents)', value: 'stdio' },
{ name: '🌐 SSE (web integrations, remote)', value: 'sse' },
{ name: '⚡ HTTP Stream (streamable HTTP)', value: 'http-stream' },
],
},
{
type: 'checkbox',
name: 'mcpFeatures',
message: 'MCP capabilities to include:',
when: (ans) => ans.structure === 'mcp-server',
choices: [
{ name: '🔧 Tools (callable functions)', value: 'tools', checked: true },
{ name: '📦 Resources (readable context)', value: 'resources', checked: false },
{ name: '💬 Prompts (prompt templates)', value: 'prompts', checked: false },
],
validate: (selected) => selected.length > 0 || 'Select at least one capability',
},
// ── Standard backend / frontend questions ─────────────────────────────
{
type: 'list',
name: 'backend',
message: 'Backend stack:',
when: (ans) => ans.structure !== 'frontend',
when: (ans) => ans.structure !== 'frontend' && ans.structure !== 'mcp-server',
choices: [

@@ -54,3 +90,3 @@ { name: '🦀 Rust / Axum', value: 'rust-axum' },

message: 'Frontend stack:',
when: (ans) => ans.structure !== 'backend',
when: (ans) => ans.structure !== 'backend' && ans.structure !== 'mcp-server',
choices: [

@@ -61,2 +97,3 @@ { name: '⚛️ React 18+', value: 'react' },

},
// ── Common questions ──────────────────────────────────────────────────
{

@@ -85,3 +122,3 @@ type: 'list',

name: 'mcp',
message: 'Enable MCP Server for context queries?',
message: 'Enable DARE MCP Server for context queries?',
default: true,

@@ -98,2 +135,5 @@ },

frontend: answers.frontend,
mcpTransport: answers.mcpTransport,
mcpLanguage: answers.mcpLanguage,
mcpFeatures: answers.mcpFeatures,
ide: answers.ide,

@@ -107,5 +147,20 @@ graphrag: answers.graphrag,

console.log(` ${chalk.gray('1.')} cd ${name}`);
console.log(` ${chalk.gray('2.')} dare design "Describe your project here"`);
console.log(` ${chalk.gray('3.')} dare blueprint`);
console.log(` ${chalk.gray('4.')} dare execute --parallel\n`);
if (answers.structure === 'mcp-server') {
const installCmd = answers.mcpLanguage === 'python' ? 'pip install -r requirements.txt' : 'npm install';
const devCmd = answers.mcpLanguage === 'python' ? 'python main.py' : 'npm run dev';
const inspectCmd = answers.mcpLanguage === 'python'
? 'npx @modelcontextprotocol/inspector python main.py'
: 'npm run inspect';
console.log(` ${chalk.gray('2.')} ${installCmd}`);
console.log(` ${chalk.gray('3.')} dare design "Describe what this MCP server exposes"`);
console.log(` ${chalk.gray('4.')} dare blueprint`);
console.log(` ${chalk.gray('5.')} dare execute --parallel`);
console.log(` ${chalk.gray('6.')} ${inspectCmd} ${chalk.gray('← test with MCP Inspector')}`);
console.log(` ${chalk.gray('7.')} ${devCmd}\n`);
}
else {
console.log(` ${chalk.gray('2.')} dare design "Describe your project here"`);
console.log(` ${chalk.gray('3.')} dare blueprint`);
console.log(` ${chalk.gray('4.')} dare execute --parallel\n`);
}
}

@@ -112,0 +167,0 @@ catch (err) {

@@ -1,1 +0,1 @@

{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
export interface ProjectConfig {
name: string;
structure: 'monorepo' | 'backend' | 'frontend';
structure: 'monorepo' | 'backend' | 'frontend' | 'mcp-server';
backend?: string;
frontend?: string;
mcpTransport?: 'stdio' | 'sse' | 'http-stream';
mcpLanguage?: 'node-ts' | 'python';
mcpFeatures?: ('tools' | 'resources' | 'prompts')[];
ide: 'cursor' | 'antigravity' | 'hybrid';

@@ -12,2 +15,3 @@ graphrag: 'sqlite' | 'json' | 'neo4j';

export declare function generateProjectStructure(config: ProjectConfig): Promise<void>;
export declare function installDareToExistingProject(projectDir: string, config: Omit<ProjectConfig, 'outputDir'>): Promise<void>;
//# sourceMappingURL=project-generator.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;IACzC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FnF"}
{"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAIA,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,CAAC;IACzC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGnF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CA+Df"}
import fs from 'fs-extra';
import path from 'path';
import { generateCursorRules, generateAntigravityRules, generateSharedConfig } from './templates.js';
import { generateCursorRules, generateAntigravityRules, generateSharedConfig, generateMcpCursorRules, generateMcpAntigravityRules } from './templates.js';
export async function generateProjectStructure(config) {

@@ -11,18 +11,33 @@ const { outputDir, name, structure, backend, frontend, ide, graphrag, mcp } = config;

// Write dare.config.json
await fs.writeJSON(path.join(outputDir, 'dare.config.json'), { name, structure, backend, frontend, ide, graphrag, mcp, version: '0.1.0' }, { spaces: 2 });
const configData = { name, structure, backend, frontend, ide, graphrag, mcp, version: '0.1.0' };
if (structure === 'mcp-server') {
configData.mcpTransport = config.mcpTransport;
configData.mcpLanguage = config.mcpLanguage;
configData.mcpFeatures = config.mcpFeatures;
}
await fs.writeJSON(path.join(outputDir, 'dare.config.json'), configData, { spaces: 2 });
// Write .gitignore
await fs.writeFile(path.join(outputDir, '.gitignore'), `node_modules/\ndist/\nbuild/\n*.db\n*.db-shm\n*.db-wal\n.env\n.env.local\n.dare/\nlogs/\n*.log\n`);
// Write .cursorrules (global)
const gitignoreExtras = structure === 'mcp-server' && config.mcpLanguage === 'python'
? '\n__pycache__/\n*.py[cod]\n.venv/\n'
: '';
await fs.writeFile(path.join(outputDir, '.gitignore'), `node_modules/\ndist/\nbuild/\n*.db\n*.db-shm\n*.db-wal\n.env\n.env.local\n.dare/\nlogs/\n*.log\n${gitignoreExtras}`);
// Cursor rules
if (ide === 'cursor' || ide === 'hybrid') {
await fs.writeFile(path.join(outputDir, '.cursorrules'), generateCursorRules({ backend, frontend, graphrag, mcp }));
const cursorRulesContent = structure === 'mcp-server'
? generateMcpCursorRules({ mcpTransport: config.mcpTransport, mcpLanguage: config.mcpLanguage, mcpFeatures: config.mcpFeatures, graphrag, mcp })
: generateCursorRules({ backend, frontend, graphrag, mcp });
await fs.writeFile(path.join(outputDir, '.cursorrules'), cursorRulesContent);
await fs.ensureDir(path.join(outputDir, '.cursor', 'rules'));
await fs.ensureDir(path.join(outputDir, '.cursor', 'commands'));
// Write stack-specific skills
if (backend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${backend}.mdc`), generateStackSkill(backend));
if (structure === 'mcp-server') {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', 'skill-mcp-server.mdc'), generateMcpStackSkill(config.mcpLanguage || 'node-ts'));
}
if (frontend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${frontend}.mdc`), generateStackSkill(frontend));
else {
if (backend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${backend}.mdc`), generateStackSkill(backend));
}
if (frontend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${frontend}.mdc`), generateStackSkill(frontend));
}
}
// Write DARE commands for Cursor
await fs.writeFile(path.join(outputDir, '.cursor', 'commands', 'generate-design.md'), `# Generate Design\nGenerate a DESIGN.md for the described feature.\n`);

@@ -32,5 +47,8 @@ await fs.writeFile(path.join(outputDir, '.cursor', 'commands', 'generate-blueprint.md'), `# Generate Blueprint\nGenerate a BLUEPRINT.md from the DESIGN.md.\n`);

}
// Write .antigravityrules
// Antigravity rules
if (ide === 'antigravity' || ide === 'hybrid') {
await fs.writeFile(path.join(outputDir, '.antigravityrules'), generateAntigravityRules({ backend, frontend, graphrag, mcp }));
const antigravityContent = structure === 'mcp-server'
? generateMcpAntigravityRules({ mcpTransport: config.mcpTransport, mcpLanguage: config.mcpLanguage, mcpFeatures: config.mcpFeatures, graphrag, mcp })
: generateAntigravityRules({ backend, frontend, graphrag, mcp });
await fs.writeFile(path.join(outputDir, '.antigravityrules'), antigravityContent);
await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-design'));

@@ -42,15 +60,260 @@ await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-blueprint'));

}
// Write shared config
// Write shared DARE README
await fs.writeFile(path.join(outputDir, 'DARE', 'README.md'), generateSharedConfig(name));
// Create backend structure
if (structure !== 'frontend' && backend) {
const backendDir = structure === 'monorepo' ? path.join(outputDir, 'backend') : outputDir;
await generateBackendTemplate(backendDir, backend);
// Generate project templates
if (structure === 'mcp-server') {
await generateMcpTemplate(outputDir, config);
}
// Create frontend structure
if (structure !== 'backend' && frontend) {
const frontendDir = structure === 'monorepo' ? path.join(outputDir, 'frontend') : outputDir;
await generateFrontendTemplate(frontendDir, frontend);
else {
if (structure !== 'frontend' && backend) {
const backendDir = structure === 'monorepo' ? path.join(outputDir, 'backend') : outputDir;
await generateBackendTemplate(backendDir, backend);
}
if (structure !== 'backend' && frontend) {
const frontendDir = structure === 'monorepo' ? path.join(outputDir, 'frontend') : outputDir;
await generateFrontendTemplate(frontendDir, frontend);
}
}
}
export async function installDareToExistingProject(projectDir, config) {
const outputDir = projectDir;
const { name, structure, backend, frontend, ide, graphrag, mcp } = config;
await fs.ensureDir(path.join(outputDir, 'DARE'));
await fs.ensureDir(path.join(outputDir, 'DARE', 'EXECUTION'));
const configData = { name, structure, backend, frontend, ide, graphrag, mcp, version: '0.1.0', installedAt: new Date().toISOString() };
if (structure === 'mcp-server') {
configData.mcpTransport = config.mcpTransport;
configData.mcpLanguage = config.mcpLanguage;
configData.mcpFeatures = config.mcpFeatures;
}
await fs.writeJSON(path.join(outputDir, 'dare.config.json'), configData, { spaces: 2 });
await fs.writeFile(path.join(outputDir, 'DARE', 'README.md'), generateSharedConfig(name));
if (ide === 'cursor' || ide === 'hybrid') {
const cursorRulesContent = structure === 'mcp-server'
? generateMcpCursorRules({ mcpTransport: config.mcpTransport, mcpLanguage: config.mcpLanguage, mcpFeatures: config.mcpFeatures, graphrag, mcp })
: generateCursorRules({ backend, frontend, graphrag, mcp });
await fs.writeFile(path.join(outputDir, '.cursorrules'), cursorRulesContent);
await fs.ensureDir(path.join(outputDir, '.cursor', 'rules'));
await fs.ensureDir(path.join(outputDir, '.cursor', 'commands'));
if (structure === 'mcp-server') {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', 'skill-mcp-server.mdc'), generateMcpStackSkill(config.mcpLanguage || 'node-ts'));
}
else {
if (backend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${backend}.mdc`), generateStackSkill(backend));
}
if (frontend) {
await fs.writeFile(path.join(outputDir, '.cursor', 'rules', `skill-${frontend}.mdc`), generateStackSkill(frontend));
}
}
await fs.writeFile(path.join(outputDir, '.cursor', 'commands', 'generate-design.md'), `# Generate Design\nGenerate a DESIGN.md for the described feature.\n`);
await fs.writeFile(path.join(outputDir, '.cursor', 'commands', 'generate-blueprint.md'), `# Generate Blueprint\nGenerate a BLUEPRINT.md from the DESIGN.md.\n`);
await fs.writeFile(path.join(outputDir, '.cursor', 'commands', 'execute-task.md'), `# Execute Task\nExecute the specified task from TASKS.md.\n`);
}
if (ide === 'antigravity' || ide === 'hybrid') {
const antigravityContent = structure === 'mcp-server'
? generateMcpAntigravityRules({ mcpTransport: config.mcpTransport, mcpLanguage: config.mcpLanguage, mcpFeatures: config.mcpFeatures, graphrag, mcp })
: generateAntigravityRules({ backend, frontend, graphrag, mcp });
await fs.writeFile(path.join(outputDir, '.antigravityrules'), antigravityContent);
await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-design'));
await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-blueprint'));
await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-execute'));
await fs.ensureDir(path.join(outputDir, '.agents', 'skills', 'dare-tasks'));
await fs.ensureDir(path.join(outputDir, '.agents', 'workflows'));
}
}
async function generateMcpTemplate(dir, config) {
const { mcpLanguage = 'node-ts', mcpTransport = 'stdio', mcpFeatures = ['tools'] } = config;
await fs.ensureDir(path.join(dir, 'src'));
if (mcpLanguage === 'node-ts') {
const hasResources = mcpFeatures.includes('resources');
const hasPrompts = mcpFeatures.includes('prompts');
const capabilities = [];
if (mcpFeatures.includes('tools'))
capabilities.push('tools: {}');
if (hasResources)
capabilities.push('resources: {}');
if (hasPrompts)
capabilities.push('prompts: {}');
const transportImport = mcpTransport === 'stdio'
? `import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';`
: `import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport express from 'express';`;
const transportSetup = mcpTransport === 'stdio'
? `const transport = new StdioServerTransport();\nawait server.connect(transport);`
: `const app = express();\napp.get('/sse', async (req, res) => {\n const transport = new SSEServerTransport('/messages', res);\n await server.connect(transport);\n});\napp.post('/messages', express.json(), (req, res) => { /* message handler */ });\napp.listen(3000, () => console.error('MCP SSE server running on :3000'));`;
const resourceSection = hasResources ? `
import {
ListResourcesRequestSchema,
ReadResourceRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
resources: [
{
uri: 'resource://example',
name: 'Example Resource',
description: 'An example resource',
mimeType: 'text/plain',
},
],
}));
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
if (request.params.uri === 'resource://example') {
return { contents: [{ uri: request.params.uri, mimeType: 'text/plain', text: 'Example content' }] };
}
throw new Error(\`Unknown resource: \${request.params.uri}\`);
});
` : '';
const promptSection = hasPrompts ? `
import {
ListPromptsRequestSchema,
GetPromptRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
prompts: [
{
name: 'example-prompt',
description: 'An example prompt template',
arguments: [{ name: 'topic', description: 'Topic to write about', required: true }],
},
],
}));
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
if (request.params.name === 'example-prompt') {
const topic = request.params.arguments?.topic ?? 'general';
return {
description: 'Example prompt',
messages: [{ role: 'user', content: { type: 'text', text: \`Write about: \${topic}\` } }],
};
}
throw new Error(\`Unknown prompt: \${request.params.name}\`);
});
` : '';
const indexContent = `import { Server } from '@modelcontextprotocol/sdk/server/index.js';
${transportImport}
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
const server = new Server(
{ name: '${config.name}', version: '0.1.0' },
{ capabilities: { ${capabilities.join(', ')} } }
);
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'hello',
description: 'Says hello to a given name',
inputSchema: {
type: 'object',
properties: {
name: { type: 'string', description: 'Name to greet' },
},
required: ['name'],
},
},
],
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'hello') {
const { name } = request.params.arguments as { name: string };
return { content: [{ type: 'text', text: \`Hello, \${name}!\` }] };
}
throw new Error(\`Unknown tool: \${request.params.name}\`);
});
${resourceSection}${promptSection}
${transportSetup}
`;
await fs.writeFile(path.join(dir, 'src', 'index.ts'), indexContent);
const extraDeps = mcpTransport !== 'stdio' ? { express: '^4.18.0' } : {};
const extraDevDeps = mcpTransport !== 'stdio' ? { '@types/express': '^4.17.0' } : {};
await fs.writeJSON(path.join(dir, 'package.json'), {
name: config.name,
version: '0.1.0',
type: 'module',
scripts: {
build: 'tsc',
start: 'node dist/index.js',
dev: 'tsx src/index.ts',
test: 'vitest',
inspect: `npx @modelcontextprotocol/inspector node dist/index.js`,
},
dependencies: {
'@modelcontextprotocol/sdk': '^1.0.0',
...extraDeps,
},
devDependencies: {
typescript: '^5.0.0',
tsx: '^4.0.0',
vitest: '^1.0.0',
'@types/node': '^20.0.0',
...extraDevDeps,
},
}, { spaces: 2 });
await fs.writeJSON(path.join(dir, 'tsconfig.json'), {
compilerOptions: {
target: 'ES2022',
module: 'Node16',
moduleResolution: 'Node16',
outDir: 'dist',
rootDir: 'src',
strict: true,
esModuleInterop: true,
skipLibCheck: true,
},
include: ['src'],
}, { spaces: 2 });
}
else {
// Python MCP
const hasResources = mcpFeatures.includes('resources');
const hasPrompts = mcpFeatures.includes('prompts');
const resourceSection = hasResources ? `
@mcp.resource("resource://example")
def example_resource() -> str:
"""An example resource."""
return "Example content"
` : '';
const promptSection = hasPrompts ? `
@mcp.prompt()
def example_prompt(topic: str) -> str:
"""An example prompt template."""
return f"Write about: {topic}"
` : '';
const transportLine = mcpTransport === 'stdio' ? '' : '\n# For SSE transport:\n# mcp.run(transport="sse", host="0.0.0.0", port=8000)\n';
await fs.writeFile(path.join(dir, 'main.py'), `from mcp.server.fastmcp import FastMCP
mcp = FastMCP("${config.name}")
@mcp.tool()
def hello(name: str) -> str:
"""Says hello to a given name."""
return f"Hello, {name}!"
${resourceSection}${promptSection}
if __name__ == "__main__":
mcp.run()${transportLine}
`);
await fs.writeFile(path.join(dir, 'requirements.txt'), `mcp>=1.0.0\n`);
await fs.writeFile(path.join(dir, 'pyproject.toml'), `[project]
name = "${config.name}"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = ["mcp>=1.0.0"]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
`);
}
}
async function generateBackendTemplate(dir, stack) {

@@ -62,3 +325,2 @@ await fs.ensureDir(path.join(dir, 'src'));

await fs.writeFile(path.join(dir, 'src', 'main.rs'), `use axum::{routing::get, Router};\n\n#[tokio::main]\nasync fn main() {\n let app = Router::new().route("/health", get(health));\n let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();\n axum::serve(listener, app).await.unwrap();\n}\n\nasync fn health() -> &'static str { "OK" }\n`);
await fs.writeFile(path.join(dir, '.cursorrules'), `# Rust/Axum Rules\n- Use Rust idioms and patterns\n- Prefer async/await with Tokio\n- Use Axum for HTTP routing\n- Handle errors with thiserror/anyhow\n- Run clippy before committing\n`);
break;

@@ -68,3 +330,2 @@ case 'node-nestjs':

await fs.writeFile(path.join(dir, 'src', 'main.ts'), `import { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n await app.listen(3000);\n}\nbootstrap();\n`);
await fs.writeFile(path.join(dir, '.cursorrules'), `# Node.js/NestJS Rules\n- Use NestJS decorators and DI\n- Define DTOs with class-validator\n- Use TypeORM or Prisma for DB\n- Write Jest tests for all services\n`);
break;

@@ -74,7 +335,5 @@ case 'python-fastapi':

await fs.writeFile(path.join(dir, 'requirements.txt'), `fastapi>=0.100.0\nuvicorn>=0.23.0\npydantic>=2.0.0\n`);
await fs.writeFile(path.join(dir, '.cursorrules'), `# Python/FastAPI Rules\n- Use Pydantic v2 for validation\n- Type all functions with PEP 484\n- Use async/await for IO operations\n- Follow PEP 8 style guide\n`);
break;
case 'php-laravel':
await fs.writeJSON(path.join(dir, 'composer.json'), { name: 'app/api', require: { php: '^8.2', 'laravel/framework': '^11.0' }, scripts: { 'post-install-cmd': ['@php artisan key:generate'] } }, { spaces: 2 });
await fs.writeFile(path.join(dir, '.cursorrules'), `# PHP/Laravel Rules\n- Follow PSR-12 coding standards\n- Use FormRequests for validation\n- Use API Resources for responses\n- Write PHPUnit tests\n- Use Eloquent ORM\n`);
break;

@@ -89,3 +348,2 @@ }

await fs.writeFile(path.join(dir, 'src', 'App.tsx'), `import React from 'react';\n\nexport default function App() {\n return <div><h1>DARE Framework - React App</h1></div>;\n}\n`);
await fs.writeFile(path.join(dir, '.cursorrules'), `# React Rules\n- Use functional components with hooks\n- Use TypeScript for all components\n- Prefer React Query for server state\n- Use Zustand or Context for client state\n- Write Vitest tests\n`);
break;

@@ -95,6 +353,30 @@ case 'vue':

await fs.writeFile(path.join(dir, 'src', 'App.vue'), `<template>\n <div><h1>DARE Framework - Vue App</h1></div>\n</template>\n\n<script setup lang="ts">\n// Composition API\n</script>\n`);
await fs.writeFile(path.join(dir, '.cursorrules'), `# Vue Rules\n- Use Composition API with <script setup>\n- Use TypeScript for all components\n- Use Pinia for state management\n- Use Vue Router for navigation\n- Write Vitest tests\n`);
break;
}
}
function generateMcpStackSkill(language) {
if (language === 'python') {
return `---
description: Python MCP server development skill
---
# Python MCP Skill
- Use FastMCP for rapid server development
- Decorate tools with @mcp.tool(), resources with @mcp.resource(), prompts with @mcp.prompt()
- Use type hints — FastMCP derives the JSON schema automatically
- Test with: npx @modelcontextprotocol/inspector python main.py
- Use mcp.run() for stdio, mcp.run(transport="sse") for SSE
`;
}
return `---
description: Node.js/TypeScript MCP server development skill
---
# TypeScript MCP Skill
- Import Server from @modelcontextprotocol/sdk/server/index.js
- Use StdioServerTransport for CLI tools, SSEServerTransport for web integrations
- Define tools with ListToolsRequestSchema + CallToolRequestSchema handlers
- Keep inputSchema strict — Claude uses it to call your tools correctly
- Test with: npm run inspect (uses @modelcontextprotocol/inspector)
- Build before shipping: npm run build
`;
}
function generateStackSkill(stack) {

@@ -101,0 +383,0 @@ const skills = {

@@ -1,1 +0,1 @@

{"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"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"}

@@ -7,6 +7,15 @@ interface TemplateConfig {

}
interface McpTemplateConfig {
mcpTransport?: string;
mcpLanguage?: string;
mcpFeatures?: string[];
graphrag: string;
mcp: boolean;
}
export declare function generateCursorRules(config: TemplateConfig): string;
export declare function generateAntigravityRules(config: TemplateConfig): string;
export declare function generateMcpCursorRules(config: McpTemplateConfig): string;
export declare function generateMcpAntigravityRules(config: McpTemplateConfig): string;
export declare function generateSharedConfig(projectName: string): string;
export {};
//# sourceMappingURL=templates.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAgFlE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA6BvE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4BhE"}
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,UAAU,iBAAiB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAgFlE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA6BvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA+DxE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAkC7E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4BhE"}

@@ -108,2 +108,97 @@ export function generateCursorRules(config) {

}
export function generateMcpCursorRules(config) {
const { mcpTransport = 'stdio', mcpLanguage = 'node-ts', mcpFeatures = ['tools'], graphrag, mcp } = config;
const featuresStr = mcpFeatures.join(', ');
const langRules = mcpLanguage === 'python'
? `## Language: Python
- Use FastMCP (@mcp.tool, @mcp.resource, @mcp.prompt decorators)
- Type all arguments — FastMCP builds JSON schema from type hints
- Use docstrings as tool/resource/prompt descriptions
- Test: npx @modelcontextprotocol/inspector python main.py
- Lint: ruff check . && mypy .`
: `## Language: TypeScript
- Import from '@modelcontextprotocol/sdk/server/index.js' and types
- Always define strict inputSchema for every tool (Claude depends on it)
- Use zod for runtime validation when needed
- Test: npm run inspect (MCP Inspector)
- Build: npm run build before marking any task DONE`;
const transportNote = mcpTransport === 'stdio'
? `- Transport: stdio — server communicates via stdin/stdout, no HTTP port needed`
: mcpTransport === 'sse'
? `- Transport: SSE — server exposes GET /sse and POST /messages endpoints`
: `- Transport: HTTP Stream — use StreamableHTTPServerTransport`;
return `# DARE Framework - Cursor Rules (MCP Server Project)
## DARE Methodology
You are an AI assistant following the DARE methodology:
- **D**esign: Define MCP server requirements and capabilities
- **A**rchitect: Create technical blueprint and task graph
- **R**eview: Validate implementation against blueprint
- **E**xecute: Implement tools, resources, and prompts following the DAG
## Core Rules
- Always read DARE/BLUEPRINT.md before implementing any tool or resource
- Update DARE/TASKS.md status after completing each task
- Never skip the Ralph Loop (build → test → inspect) before marking a task as DONE
- Test every tool with MCP Inspector before marking DONE
- Validate tool inputSchema matches actual handler logic exactly
## MCP Server Configuration
- Transport: ${mcpTransport}
- Features: ${featuresStr}
${transportNote}
${langRules}
## MCP Best Practices
- Keep tool names snake_case and descriptive
- Return structured content arrays, not plain strings
- Handle unknown tool/resource/prompt names with explicit errors
- Never expose secrets via tool outputs or resource contents
- Document every tool argument in inputSchema description fields
## GraphRAG Context (${graphrag})
${mcp ? `- Query MCP Server at http://localhost:3000 for context instead of reading full files` : '- Use DARE/BLUEPRINT.md as the single source of truth'}
## Ralph Loop (Mandatory before DONE)
1. Build (npm run build / python -m py_compile)
2. Test (npm test / pytest)
3. Inspect with MCP Inspector to verify tool contracts
4. Only mark DONE if all 3 steps pass
`;
}
export function generateMcpAntigravityRules(config) {
const { mcpTransport = 'stdio', mcpLanguage = 'node-ts', mcpFeatures = ['tools'], graphrag, mcp } = config;
return `# DARE Framework - Antigravity Rules (MCP Server Project)
## Agent Configuration
You are an autonomous AI agent implementing an MCP server using the DARE methodology.
Execute tasks from DARE/dare-dag.yaml in parallel when dependencies allow.
## DARE Phases
- **Design**: Read DARE/DESIGN.md — what tools/resources/prompts does this MCP server expose?
- **Architect**: Read DARE/BLUEPRINT.md — tool schemas, transport, auth strategy
- **Review**: Test each tool with MCP Inspector before marking DONE
- **Execute**: Implement tasks, update DARE/TASKS.md
## MCP Stack
- Language: ${mcpLanguage}
- Transport: ${mcpTransport}
- Features: ${mcpFeatures.join(', ')}
## Implementation Rules
- Each tool must have a strict inputSchema — Claude uses it to call the tool
- Test with MCP Inspector after implementing each tool
- Never skip error handling for unknown tool names
## Context Strategy (${graphrag})
${mcp ? `- Query MCP Server at http://localhost:3000 for project context` : '- Read DARE/BLUEPRINT.md for context'}
## Execution Rules
- Always check task dependencies before starting
- Update task status in DARE/TASKS.md in real-time
- Run Ralph Loop before marking any task as DONE
- Request human review for transport or auth design decisions
`;
}
export function generateSharedConfig(projectName) {

@@ -110,0 +205,0 @@ return `# DARE - ${projectName}

@@ -1,1 +0,1 @@

{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAEpD,MAAM,YAAY,GAA2B;QAC3C,WAAW,EAAE;;;;;;+DAM8C;QAC3D,aAAa,EAAE;;;;;iCAKc;QAC7B,gBAAgB,EAAE;;;;;mCAKa;QAC/B,aAAa,EAAE;;;;;6CAK0B;KAC1C,CAAC;IAEF,MAAM,aAAa,GAA2B;QAC5C,KAAK,EAAE;;;;;uCAK4B;QACnC,GAAG,EAAE;;;;;sCAK6B;KACnC,CAAC;IAEF,OAAO;;;;;;;;;;;;;;;;;;;;EAoBP,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;;EAE7D,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;;uBAE7C,QAAQ;EAC7B,GAAG,CAAC,CAAC,CAAC;oFAC4E,CAAC,CAAC,CAAC,mEAAmE;;;;;;;CAOzJ,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAsB;IAC7D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAEpD,OAAO;;;;;;;;;;;;;EAaP,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;EACtC,QAAQ,CAAC,CAAC,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;;uBAEpB,QAAQ;EAC7B,GAAG,CAAC,CAAC,CAAC;iDACyC,CAAC,CAAC,CAAC,sCAAsC;;;;;;;CAOzF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,YAAY,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/B,CAAC;AACF,CAAC"}
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
{
"name": "@dewtech/dare-cli",
"version": "0.2.0",
"version": "0.3.0",
"description": "DARE Framework CLI - Interactive project setup and task execution",

@@ -20,3 +20,11 @@ "type": "module",

],
"scripts": {
"build": "tsc",
"dev": "tsx watch src/bin/dare.ts",
"test": "vitest run",
"lint": "eslint src --ext .ts",
"format": "prettier --write src"
},
"dependencies": {
"@dewtech/dare-core": "workspace:*",
"chalk": "^5.3.0",

@@ -28,5 +36,4 @@ "commander": "^11.0.0",

"yaml": "^2.3.1",
"@dewtech/dare-core": "0.2.0",
"@dewtech/dare-graphrag": "0.2.0",
"@dewtech/dare-mcp-server": "0.2.0"
"@dewtech/dare-graphrag": "workspace:*",
"@dewtech/dare-mcp-server": "workspace:*"
},

@@ -60,10 +67,3 @@ "devDependencies": {

"node": ">=18.0.0"
},
"scripts": {
"build": "tsc",
"dev": "tsx watch src/bin/dare.ts",
"test": "vitest run",
"lint": "eslint src --ext .ts",
"format": "prettier --write src"
}
}
}
MIT License
Copyright (c) 2026 Dewtech Technologies
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.