@dewtech/dare-cli 0.2.0 ā 0.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/dist/bin/dare.js +2 -0
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/discover.d.ts +3 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +234 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +61 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/utils/project-detector.d.ts +15 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +243 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/project-generator.d.ts +5 -1
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +310 -28
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/templates.d.ts +9 -0
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +95 -0
- package/dist/utils/templates.js.map +1 -1
- package/package.json +12 -12
- package/LICENSE +0 -21
package/dist/bin/dare.js
CHANGED
|
@@ -4,12 +4,14 @@ import { initCommand } from '../commands/init.js';
|
|
|
4
4
|
import { designCommand } from '../commands/design.js';
|
|
5
5
|
import { blueprintCommand } from '../commands/blueprint.js';
|
|
6
6
|
import { executeCommand } from '../commands/execute.js';
|
|
7
|
+
import { discoverCommand } from '../commands/discover.js';
|
|
7
8
|
const program = new Command();
|
|
8
9
|
program
|
|
9
10
|
.name('dare')
|
|
10
11
|
.description('DARE Framework - Design, Architect, Review, Execute methodology for AI-assisted development')
|
|
11
12
|
.version('0.1.0');
|
|
12
13
|
program.addCommand(initCommand);
|
|
14
|
+
program.addCommand(discoverCommand);
|
|
13
15
|
program.addCommand(designCommand);
|
|
14
16
|
program.addCommand(blueprintCommand);
|
|
15
17
|
program.addCommand(executeCommand);
|
package/dist/bin/dare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { detectProject, formatDetectionReport } from '../utils/project-detector.js';
|
|
7
|
+
import { installDareToExistingProject } from '../utils/project-generator.js';
|
|
8
|
+
export const discoverCommand = new Command('discover')
|
|
9
|
+
.description('Detect an existing project and install DARE methodology files')
|
|
10
|
+
.option('-d, --dir <path>', 'Target directory (default: current directory)')
|
|
11
|
+
.option('--check', 'Only show detection results without installing')
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const targetDir = path.resolve(opts.dir ?? process.cwd());
|
|
14
|
+
console.log(chalk.blue.bold('\nš DARE Framework - Project Discovery\n'));
|
|
15
|
+
console.log(chalk.gray(` Scanning: ${targetDir}\n`));
|
|
16
|
+
const spinner = ora('Analyzing project...').start();
|
|
17
|
+
const detected = await detectProject(targetDir);
|
|
18
|
+
spinner.stop();
|
|
19
|
+
// āā Show detection results āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
20
|
+
console.log(chalk.yellow('Detection results:\n'));
|
|
21
|
+
console.log(formatDetectionReport(detected));
|
|
22
|
+
console.log('');
|
|
23
|
+
if (opts.check) {
|
|
24
|
+
if (detected.hasDare) {
|
|
25
|
+
console.log(chalk.green('ā
DARE is already installed in this project.'));
|
|
26
|
+
if (detected.dareConfig) {
|
|
27
|
+
console.log(chalk.gray('\nCurrent dare.config.json:'));
|
|
28
|
+
console.log(chalk.gray(JSON.stringify(detected.dareConfig, null, 2)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(chalk.yellow('ā ļø DARE is not installed. Run `dare discover` without --check to install it.'));
|
|
33
|
+
}
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// āā Already installed ā offer reconfigure āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
37
|
+
if (detected.hasDare) {
|
|
38
|
+
console.log(chalk.green('ā
DARE is already installed in this project.\n'));
|
|
39
|
+
const { action } = await inquirer.prompt([
|
|
40
|
+
{
|
|
41
|
+
type: 'list',
|
|
42
|
+
name: 'action',
|
|
43
|
+
message: 'What would you like to do?',
|
|
44
|
+
choices: [
|
|
45
|
+
{ name: 'š Reconfigure DARE (update rules and config)', value: 'reconfigure' },
|
|
46
|
+
{ name: 'šŖ Exit', value: 'exit' },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
]);
|
|
50
|
+
if (action === 'exit')
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// āā Confirm or correct detected values āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
54
|
+
console.log(chalk.cyan('Confirm project details (press Enter to accept detected values):\n'));
|
|
55
|
+
const structureChoices = [
|
|
56
|
+
{ name: 'šļø Monorepo (backend + frontend)', value: 'monorepo' },
|
|
57
|
+
{ name: 'āļø Backend only', value: 'backend' },
|
|
58
|
+
{ name: 'šØ Frontend only', value: 'frontend' },
|
|
59
|
+
{ name: 'š MCP Server', value: 'mcp-server' },
|
|
60
|
+
{ name: 'ā Unknown / Other', value: 'unknown' },
|
|
61
|
+
];
|
|
62
|
+
const answers = await inquirer.prompt([
|
|
63
|
+
{
|
|
64
|
+
type: 'input',
|
|
65
|
+
name: 'name',
|
|
66
|
+
message: 'Project name:',
|
|
67
|
+
default: detected.name,
|
|
68
|
+
validate: (input) => {
|
|
69
|
+
if (!input.trim())
|
|
70
|
+
return 'Project name cannot be empty';
|
|
71
|
+
return true;
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'list',
|
|
76
|
+
name: 'structure',
|
|
77
|
+
message: 'Project structure:',
|
|
78
|
+
default: detected.structure !== 'unknown' ? detected.structure : 'backend',
|
|
79
|
+
choices: structureChoices,
|
|
80
|
+
},
|
|
81
|
+
// āā MCP-specific āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
82
|
+
{
|
|
83
|
+
type: 'list',
|
|
84
|
+
name: 'mcpLanguage',
|
|
85
|
+
message: 'MCP server language:',
|
|
86
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
87
|
+
default: detected.mcpLanguage ?? 'node-ts',
|
|
88
|
+
choices: [
|
|
89
|
+
{ name: 'š¦ TypeScript / Node.js', value: 'node-ts' },
|
|
90
|
+
{ name: 'š Python', value: 'python' },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'list',
|
|
95
|
+
name: 'mcpTransport',
|
|
96
|
+
message: 'Transport type:',
|
|
97
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
98
|
+
default: detected.mcpTransport ?? 'stdio',
|
|
99
|
+
choices: [
|
|
100
|
+
{ name: 'š stdio (CLI tools, local agents)', value: 'stdio' },
|
|
101
|
+
{ name: 'š SSE (web integrations, remote)', value: 'sse' },
|
|
102
|
+
{ name: 'ā” HTTP Stream (streamable HTTP)', value: 'http-stream' },
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'checkbox',
|
|
107
|
+
name: 'mcpFeatures',
|
|
108
|
+
message: 'MCP capabilities present in this project:',
|
|
109
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
110
|
+
choices: [
|
|
111
|
+
{ name: 'š§ Tools (callable functions)', value: 'tools', checked: true },
|
|
112
|
+
{ name: 'š¦ Resources (readable context)', value: 'resources', checked: false },
|
|
113
|
+
{ name: 'š¬ Prompts (prompt templates)', value: 'prompts', checked: false },
|
|
114
|
+
],
|
|
115
|
+
validate: (selected) => selected.length > 0 || 'Select at least one capability',
|
|
116
|
+
},
|
|
117
|
+
// āā Backend stack āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
118
|
+
{
|
|
119
|
+
type: 'list',
|
|
120
|
+
name: 'backend',
|
|
121
|
+
message: 'Backend stack:',
|
|
122
|
+
when: (ans) => ans.structure === 'backend' || ans.structure === 'monorepo',
|
|
123
|
+
default: detected.backend ?? 'node-nestjs',
|
|
124
|
+
choices: [
|
|
125
|
+
{ name: 'š¦ Rust / Axum', value: 'rust-axum' },
|
|
126
|
+
{ name: 'š¢ Node.js / NestJS', value: 'node-nestjs' },
|
|
127
|
+
{ name: 'š Python / FastAPI', value: 'python-fastapi' },
|
|
128
|
+
{ name: 'š PHP / Laravel', value: 'php-laravel' },
|
|
129
|
+
{ name: 'š¦ Other / Not listed', value: 'other' },
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'list',
|
|
134
|
+
name: 'frontend',
|
|
135
|
+
message: 'Frontend stack:',
|
|
136
|
+
when: (ans) => ans.structure === 'frontend' || ans.structure === 'monorepo',
|
|
137
|
+
default: detected.frontend ?? 'react',
|
|
138
|
+
choices: [
|
|
139
|
+
{ name: 'āļø React 18+', value: 'react' },
|
|
140
|
+
{ name: 'š Vue 3+', value: 'vue' },
|
|
141
|
+
{ name: 'š Nuxt 3', value: 'nuxt' },
|
|
142
|
+
{ name: 'š¦ Other / Not listed', value: 'other' },
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
// āā Common āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
146
|
+
{
|
|
147
|
+
type: 'list',
|
|
148
|
+
name: 'ide',
|
|
149
|
+
message: 'Primary IDE / Agent:',
|
|
150
|
+
choices: [
|
|
151
|
+
{ name: 'š±ļø Cursor', value: 'cursor' },
|
|
152
|
+
{ name: 'š Antigravity', value: 'antigravity' },
|
|
153
|
+
{ name: 'š Both (Hybrid)', value: 'hybrid' },
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'list',
|
|
158
|
+
name: 'graphrag',
|
|
159
|
+
message: 'GraphRAG backend:',
|
|
160
|
+
choices: [
|
|
161
|
+
{ name: 'šļø SQLite (recommended - fast, local)', value: 'sqlite' },
|
|
162
|
+
{ name: 'š JSON Graph (simple, no dependencies)', value: 'json' },
|
|
163
|
+
{ name: 'š³ Neo4j Docker (enterprise)', value: 'neo4j' },
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'confirm',
|
|
168
|
+
name: 'mcp',
|
|
169
|
+
message: 'Enable DARE MCP Server for context queries?',
|
|
170
|
+
default: true,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'confirm',
|
|
174
|
+
name: 'confirmInstall',
|
|
175
|
+
message: (ans) => {
|
|
176
|
+
const files = buildFileList(ans);
|
|
177
|
+
return `Ready to install DARE. Files to create:\n${files}\n Proceed?`;
|
|
178
|
+
},
|
|
179
|
+
default: true,
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
if (!answers.confirmInstall) {
|
|
183
|
+
console.log(chalk.yellow('\nInstallation cancelled.\n'));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const installSpinner = ora('Installing DARE...').start();
|
|
187
|
+
try {
|
|
188
|
+
await installDareToExistingProject(targetDir, {
|
|
189
|
+
name: answers.name,
|
|
190
|
+
structure: answers.structure,
|
|
191
|
+
backend: answers.backend,
|
|
192
|
+
frontend: answers.frontend,
|
|
193
|
+
mcpTransport: answers.mcpTransport,
|
|
194
|
+
mcpLanguage: answers.mcpLanguage,
|
|
195
|
+
mcpFeatures: answers.mcpFeatures,
|
|
196
|
+
ide: answers.ide,
|
|
197
|
+
graphrag: answers.graphrag,
|
|
198
|
+
mcp: answers.mcp,
|
|
199
|
+
});
|
|
200
|
+
installSpinner.succeed(chalk.green('DARE installed successfully!'));
|
|
201
|
+
console.log(chalk.cyan('\nš Next steps:\n'));
|
|
202
|
+
console.log(` ${chalk.gray('1.')} dare design "Describe what this project does"`);
|
|
203
|
+
console.log(` ${chalk.gray('2.')} dare blueprint`);
|
|
204
|
+
console.log(` ${chalk.gray('3.')} dare execute --parallel\n`);
|
|
205
|
+
if (answers.structure === 'mcp-server') {
|
|
206
|
+
const inspectCmd = answers.mcpLanguage === 'python'
|
|
207
|
+
? 'npx @modelcontextprotocol/inspector python main.py'
|
|
208
|
+
: 'npx @modelcontextprotocol/inspector node dist/index.js';
|
|
209
|
+
console.log(chalk.gray(` Tip: test your MCP server with: ${inspectCmd}\n`));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
installSpinner.fail(chalk.red('Failed to install DARE'));
|
|
214
|
+
console.error(err);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
function buildFileList(ans) {
|
|
219
|
+
const files = [
|
|
220
|
+
' Ā· dare.config.json',
|
|
221
|
+
' Ā· DARE/ (README.md, EXECUTION/)',
|
|
222
|
+
];
|
|
223
|
+
const ide = ans.ide;
|
|
224
|
+
if (ide === 'cursor' || ide === 'hybrid') {
|
|
225
|
+
files.push(' Ā· .cursorrules');
|
|
226
|
+
files.push(' Ā· .cursor/rules/ + .cursor/commands/');
|
|
227
|
+
}
|
|
228
|
+
if (ide === 'antigravity' || ide === 'hybrid') {
|
|
229
|
+
files.push(' Ā· .antigravityrules');
|
|
230
|
+
files.push(' Ā· .agents/skills/ + .agents/workflows/');
|
|
231
|
+
}
|
|
232
|
+
return files.join('\n');
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAoKpB,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -32,13 +32,49 @@ export const initCommand = new Command('init')
|
|
|
32
32
|
{ name: 'šļø Monorepo (backend + frontend)', value: 'monorepo' },
|
|
33
33
|
{ name: 'āļø Backend only', value: 'backend' },
|
|
34
34
|
{ name: 'šØ Frontend only', value: 'frontend' },
|
|
35
|
+
{ name: 'š MCP Server', value: 'mcp-server' },
|
|
35
36
|
],
|
|
36
37
|
},
|
|
38
|
+
// āā MCP Server questions āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
39
|
+
{
|
|
40
|
+
type: 'list',
|
|
41
|
+
name: 'mcpLanguage',
|
|
42
|
+
message: 'MCP server language:',
|
|
43
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
44
|
+
choices: [
|
|
45
|
+
{ name: 'š¦ TypeScript / Node.js', value: 'node-ts' },
|
|
46
|
+
{ name: 'š Python', value: 'python' },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'list',
|
|
51
|
+
name: 'mcpTransport',
|
|
52
|
+
message: 'Transport type:',
|
|
53
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
54
|
+
choices: [
|
|
55
|
+
{ name: 'š stdio (CLI tools, local agents)', value: 'stdio' },
|
|
56
|
+
{ name: 'š SSE (web integrations, remote)', value: 'sse' },
|
|
57
|
+
{ name: 'ā” HTTP Stream (streamable HTTP)', value: 'http-stream' },
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'checkbox',
|
|
62
|
+
name: 'mcpFeatures',
|
|
63
|
+
message: 'MCP capabilities to include:',
|
|
64
|
+
when: (ans) => ans.structure === 'mcp-server',
|
|
65
|
+
choices: [
|
|
66
|
+
{ name: 'š§ Tools (callable functions)', value: 'tools', checked: true },
|
|
67
|
+
{ name: 'š¦ Resources (readable context)', value: 'resources', checked: false },
|
|
68
|
+
{ name: 'š¬ Prompts (prompt templates)', value: 'prompts', checked: false },
|
|
69
|
+
],
|
|
70
|
+
validate: (selected) => selected.length > 0 || 'Select at least one capability',
|
|
71
|
+
},
|
|
72
|
+
// āā Standard backend / frontend questions āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
37
73
|
{
|
|
38
74
|
type: 'list',
|
|
39
75
|
name: 'backend',
|
|
40
76
|
message: 'Backend stack:',
|
|
41
|
-
when: (ans) => ans.structure !== 'frontend',
|
|
77
|
+
when: (ans) => ans.structure !== 'frontend' && ans.structure !== 'mcp-server',
|
|
42
78
|
choices: [
|
|
43
79
|
{ name: 'š¦ Rust / Axum', value: 'rust-axum' },
|
|
44
80
|
{ name: 'š¢ Node.js / NestJS', value: 'node-nestjs' },
|
|
@@ -50,12 +86,13 @@ export const initCommand = new Command('init')
|
|
|
50
86
|
type: 'list',
|
|
51
87
|
name: 'frontend',
|
|
52
88
|
message: 'Frontend stack:',
|
|
53
|
-
when: (ans) => ans.structure !== 'backend',
|
|
89
|
+
when: (ans) => ans.structure !== 'backend' && ans.structure !== 'mcp-server',
|
|
54
90
|
choices: [
|
|
55
91
|
{ name: 'āļø React 18+', value: 'react' },
|
|
56
92
|
{ name: 'š Vue 3+', value: 'vue' },
|
|
57
93
|
],
|
|
58
94
|
},
|
|
95
|
+
// āā Common questions āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
59
96
|
{
|
|
60
97
|
type: 'list',
|
|
61
98
|
name: 'ide',
|
|
@@ -79,7 +116,7 @@ export const initCommand = new Command('init')
|
|
|
79
116
|
{
|
|
80
117
|
type: 'confirm',
|
|
81
118
|
name: 'mcp',
|
|
82
|
-
message: 'Enable MCP Server for context queries?',
|
|
119
|
+
message: 'Enable DARE MCP Server for context queries?',
|
|
83
120
|
default: true,
|
|
84
121
|
},
|
|
85
122
|
]);
|
|
@@ -91,6 +128,9 @@ export const initCommand = new Command('init')
|
|
|
91
128
|
structure: answers.structure,
|
|
92
129
|
backend: answers.backend,
|
|
93
130
|
frontend: answers.frontend,
|
|
131
|
+
mcpTransport: answers.mcpTransport,
|
|
132
|
+
mcpLanguage: answers.mcpLanguage,
|
|
133
|
+
mcpFeatures: answers.mcpFeatures,
|
|
94
134
|
ide: answers.ide,
|
|
95
135
|
graphrag: answers.graphrag,
|
|
96
136
|
mcp: answers.mcp,
|
|
@@ -99,9 +139,24 @@ export const initCommand = new Command('init')
|
|
|
99
139
|
spinner.succeed(chalk.green(`Project ${chalk.bold(name)} created successfully!`));
|
|
100
140
|
console.log(chalk.cyan('\nš Next steps:\n'));
|
|
101
141
|
console.log(` ${chalk.gray('1.')} cd ${name}`);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
142
|
+
if (answers.structure === 'mcp-server') {
|
|
143
|
+
const installCmd = answers.mcpLanguage === 'python' ? 'pip install -r requirements.txt' : 'npm install';
|
|
144
|
+
const devCmd = answers.mcpLanguage === 'python' ? 'python main.py' : 'npm run dev';
|
|
145
|
+
const inspectCmd = answers.mcpLanguage === 'python'
|
|
146
|
+
? 'npx @modelcontextprotocol/inspector python main.py'
|
|
147
|
+
: 'npm run inspect';
|
|
148
|
+
console.log(` ${chalk.gray('2.')} ${installCmd}`);
|
|
149
|
+
console.log(` ${chalk.gray('3.')} dare design "Describe what this MCP server exposes"`);
|
|
150
|
+
console.log(` ${chalk.gray('4.')} dare blueprint`);
|
|
151
|
+
console.log(` ${chalk.gray('5.')} dare execute --parallel`);
|
|
152
|
+
console.log(` ${chalk.gray('6.')} ${inspectCmd} ${chalk.gray('ā test with MCP Inspector')}`);
|
|
153
|
+
console.log(` ${chalk.gray('7.')} ${devCmd}\n`);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(` ${chalk.gray('2.')} dare design "Describe your project here"`);
|
|
157
|
+
console.log(` ${chalk.gray('3.')} dare blueprint`);
|
|
158
|
+
console.log(` ${chalk.gray('4.')} dare execute --parallel\n`);
|
|
159
|
+
}
|
|
105
160
|
}
|
|
106
161
|
catch (err) {
|
|
107
162
|
spinner.fail(chalk.red('Failed to create project'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DetectedProject {
|
|
2
|
+
structure: 'monorepo' | 'backend' | 'frontend' | 'mcp-server' | 'unknown';
|
|
3
|
+
backend?: string;
|
|
4
|
+
frontend?: string;
|
|
5
|
+
mcpLanguage?: 'node-ts' | 'python';
|
|
6
|
+
mcpTransport?: 'stdio' | 'sse' | 'http-stream';
|
|
7
|
+
name: string;
|
|
8
|
+
hasDare: boolean;
|
|
9
|
+
dareConfig?: Record<string, unknown>;
|
|
10
|
+
confidence: 'high' | 'medium' | 'low';
|
|
11
|
+
evidence: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare function detectProject(dir: string): Promise<DetectedProject>;
|
|
14
|
+
export declare function formatDetectionReport(detected: DetectedProject): string;
|
|
15
|
+
//# sourceMappingURL=project-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|