@ironbackend/cli 1.0.1
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/LICENSE +21 -0
- package/README.md +113 -0
- package/bin/ironbackend.js +6 -0
- package/dist/ai-tools.d.ts +31 -0
- package/dist/ai-tools.d.ts.map +1 -0
- package/dist/ai-tools.js +103 -0
- package/dist/ai-tools.js.map +1 -0
- package/dist/commands/doctor.d.ts +10 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +251 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/export.d.ts +10 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +150 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +194 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/select.d.ts +10 -0
- package/dist/commands/select.d.ts.map +1 -0
- package/dist/commands/select.js +198 -0
- package/dist/commands/select.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export Command
|
|
3
|
+
* Export prompts to various formats
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import { getStyle, getStack } from '@ironbackend/core';
|
|
11
|
+
import { buildPromptSections } from '@ironbackend/prompts';
|
|
12
|
+
const IRONBACKEND_DIR = '.ironbackend';
|
|
13
|
+
const CONFIG_FILE = 'config.json';
|
|
14
|
+
/**
|
|
15
|
+
* Create the export command
|
|
16
|
+
*/
|
|
17
|
+
export function createExportCommand() {
|
|
18
|
+
const cmd = new Command('export');
|
|
19
|
+
cmd.description('Export prompts and configurations');
|
|
20
|
+
// Export prompts
|
|
21
|
+
cmd
|
|
22
|
+
.command('prompts')
|
|
23
|
+
.description('Export AI prompt files')
|
|
24
|
+
.option('-o, --output <dir>', 'Output directory', '.ironbackend/prompts')
|
|
25
|
+
.option('-f, --format <format>', 'Output format (markdown, cursor, claude)', 'all')
|
|
26
|
+
.action(async (options) => {
|
|
27
|
+
await exportPrompts(options);
|
|
28
|
+
});
|
|
29
|
+
// Export config
|
|
30
|
+
cmd
|
|
31
|
+
.command('config')
|
|
32
|
+
.description('Export current configuration')
|
|
33
|
+
.option('-o, --output <file>', 'Output file', 'ironbackend.config.json')
|
|
34
|
+
.action(async (options) => {
|
|
35
|
+
await exportConfig(options);
|
|
36
|
+
});
|
|
37
|
+
return cmd;
|
|
38
|
+
}
|
|
39
|
+
async function exportPrompts(options) {
|
|
40
|
+
console.log(chalk.bold.blue('\n📤 Exporting Prompts\n'));
|
|
41
|
+
const config = loadConfig();
|
|
42
|
+
if (!config.style || !config.stack) {
|
|
43
|
+
console.log(chalk.red('Style and stack must be selected before exporting.'));
|
|
44
|
+
console.log(chalk.yellow('Run: ironbackend select style <name>'));
|
|
45
|
+
console.log(chalk.yellow('Run: ironbackend select stack <name>'));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
const spinner = ora('Generating prompts...').start();
|
|
49
|
+
try {
|
|
50
|
+
const prompts = buildPromptSections({
|
|
51
|
+
styleId: config.style,
|
|
52
|
+
stackId: config.stack,
|
|
53
|
+
ruleCategories: config.rules?.enabled || undefined
|
|
54
|
+
});
|
|
55
|
+
const cwd = process.cwd();
|
|
56
|
+
const outputPath = path.resolve(cwd, options.output);
|
|
57
|
+
fs.mkdirSync(outputPath, { recursive: true });
|
|
58
|
+
// Export based on format
|
|
59
|
+
if (options.format === 'all' || options.format === 'markdown') {
|
|
60
|
+
fs.writeFileSync(path.join(outputPath, 'system-prompt.md'), prompts.combined);
|
|
61
|
+
fs.writeFileSync(path.join(outputPath, 'style.md'), prompts.style);
|
|
62
|
+
fs.writeFileSync(path.join(outputPath, 'stack.md'), prompts.stack);
|
|
63
|
+
fs.writeFileSync(path.join(outputPath, 'rules.md'), prompts.rules);
|
|
64
|
+
}
|
|
65
|
+
if (options.format === 'all' || options.format === 'cursor') {
|
|
66
|
+
const cursorPath = path.join(cwd, '.cursor', 'rules');
|
|
67
|
+
fs.mkdirSync(cursorPath, { recursive: true });
|
|
68
|
+
const cursorPrompt = `---
|
|
69
|
+
description: IronBackend - Backend Architecture Intelligence
|
|
70
|
+
globs: ["**/*.ts", "**/*.js", "**/*.py", "**/*.java", "**/*.cs", "**/*.go"]
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
${prompts.combined}`;
|
|
74
|
+
fs.writeFileSync(path.join(cursorPath, 'ironbackend.mdc'), cursorPrompt);
|
|
75
|
+
fs.writeFileSync(path.join(outputPath, 'cursor-rules.mdc'), cursorPrompt);
|
|
76
|
+
}
|
|
77
|
+
if (options.format === 'all' || options.format === 'claude') {
|
|
78
|
+
const claudePrompt = `# Claude Project Prompt - IronBackend
|
|
79
|
+
|
|
80
|
+
${prompts.combined}
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## How to Use
|
|
85
|
+
|
|
86
|
+
Copy this entire prompt to your Claude project's custom instructions or include it at the start of your conversation.`;
|
|
87
|
+
fs.writeFileSync(path.join(outputPath, 'claude-project.md'), claudePrompt);
|
|
88
|
+
}
|
|
89
|
+
// Generate Copilot instructions
|
|
90
|
+
if (options.format === 'all') {
|
|
91
|
+
const copilotPrompt = `# GitHub Copilot Custom Instructions
|
|
92
|
+
|
|
93
|
+
## Architecture: ${getStyle(config.style).name}
|
|
94
|
+
## Stack: ${getStack(config.stack).name}
|
|
95
|
+
|
|
96
|
+
${prompts.style}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
${prompts.rules}`;
|
|
101
|
+
fs.writeFileSync(path.join(outputPath, 'copilot-instructions.md'), copilotPrompt);
|
|
102
|
+
}
|
|
103
|
+
spinner.succeed('Prompts exported successfully!');
|
|
104
|
+
console.log(chalk.bold('\n📁 Exported files:'));
|
|
105
|
+
const files = fs.readdirSync(outputPath);
|
|
106
|
+
files.forEach(file => {
|
|
107
|
+
const stats = fs.statSync(path.join(outputPath, file));
|
|
108
|
+
const size = (stats.size / 1024).toFixed(1);
|
|
109
|
+
console.log(chalk.gray(` ${file} (${size} KB)`));
|
|
110
|
+
});
|
|
111
|
+
if (options.format === 'all' || options.format === 'cursor') {
|
|
112
|
+
console.log(chalk.gray(` .cursor/rules/ironbackend.mdc`));
|
|
113
|
+
}
|
|
114
|
+
console.log(chalk.bold('\n🚀 Usage:'));
|
|
115
|
+
console.log(chalk.cyan(' Cursor: Rules automatically applied from .cursor/rules/'));
|
|
116
|
+
console.log(chalk.cyan(' Claude: Copy claude-project.md to project instructions'));
|
|
117
|
+
console.log(chalk.cyan(' Copilot: Copy copilot-instructions.md to .github/copilot-instructions.md'));
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
spinner.fail('Export failed');
|
|
121
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function exportConfig(options) {
|
|
126
|
+
console.log(chalk.bold.blue('\n📤 Exporting Configuration\n'));
|
|
127
|
+
const config = loadConfig();
|
|
128
|
+
const cwd = process.cwd();
|
|
129
|
+
const outputPath = path.resolve(cwd, options.output);
|
|
130
|
+
const exportedConfig = {
|
|
131
|
+
$schema: 'https://ironbackend.dev/schema/config.json',
|
|
132
|
+
version: config.version,
|
|
133
|
+
style: config.style,
|
|
134
|
+
stack: config.stack,
|
|
135
|
+
rules: config.rules,
|
|
136
|
+
exportedAt: new Date().toISOString()
|
|
137
|
+
};
|
|
138
|
+
fs.writeFileSync(outputPath, JSON.stringify(exportedConfig, null, 2));
|
|
139
|
+
console.log(chalk.green(`✓ Configuration exported to: ${outputPath}`));
|
|
140
|
+
}
|
|
141
|
+
function loadConfig() {
|
|
142
|
+
const cwd = process.cwd();
|
|
143
|
+
const configPath = path.join(cwd, IRONBACKEND_DIR, CONFIG_FILE);
|
|
144
|
+
if (!fs.existsSync(configPath)) {
|
|
145
|
+
console.log(chalk.red('IronBackend not initialized. Run: ironbackend init'));
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Export
|
|
3
|
+
*/
|
|
4
|
+
export { createInitCommand } from './init.js';
|
|
5
|
+
export { createSelectCommand } from './select.js';
|
|
6
|
+
export { createExportCommand } from './export.js';
|
|
7
|
+
export { createDoctorCommand } from './doctor.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Export
|
|
3
|
+
*/
|
|
4
|
+
export { createInitCommand } from './init.js';
|
|
5
|
+
export { createSelectCommand } from './select.js';
|
|
6
|
+
export { createExportCommand } from './export.js';
|
|
7
|
+
export { createDoctorCommand } from './doctor.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAc3C"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command
|
|
3
|
+
* Initialize IronBackend in a project for a specific AI tool
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import inquirer from 'inquirer';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import { getStyleIds, getStackIds, getStyle, getStack, VERSION } from '@ironbackend/core';
|
|
12
|
+
import { buildPromptSections } from '@ironbackend/prompts';
|
|
13
|
+
import { AI_TOOLS, getAITool, getAIToolIds, formatForAITool } from '../ai-tools.js';
|
|
14
|
+
const IRONBACKEND_DIR = '.ironbackend';
|
|
15
|
+
const CONFIG_FILE = 'config.json';
|
|
16
|
+
/**
|
|
17
|
+
* Create the init command
|
|
18
|
+
*/
|
|
19
|
+
export function createInitCommand() {
|
|
20
|
+
const cmd = new Command('init');
|
|
21
|
+
cmd
|
|
22
|
+
.description('Initialize IronBackend for a specific AI tool')
|
|
23
|
+
.argument('[tool]', `AI tool to initialize (${getAIToolIds().join(', ')})`)
|
|
24
|
+
.option('-y, --yes', 'Skip prompts and use defaults')
|
|
25
|
+
.option('-s, --style <style>', 'Architecture style to use')
|
|
26
|
+
.option('-t, --stack <stack>', 'Tech stack to use')
|
|
27
|
+
.action(async (tool, options) => {
|
|
28
|
+
await runInit(tool, options);
|
|
29
|
+
});
|
|
30
|
+
return cmd;
|
|
31
|
+
}
|
|
32
|
+
async function runInit(toolArg, options) {
|
|
33
|
+
console.log(chalk.bold.blue('\n🔧 IronBackend Initialization\n'));
|
|
34
|
+
// Resolve AI tool
|
|
35
|
+
let selectedTool;
|
|
36
|
+
if (toolArg) {
|
|
37
|
+
selectedTool = getAITool(toolArg);
|
|
38
|
+
if (!selectedTool) {
|
|
39
|
+
console.log(chalk.red(`Unknown AI tool: ${toolArg}`));
|
|
40
|
+
console.log(chalk.yellow(`Available tools: ${getAIToolIds().join(', ')}`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (!options.yes) {
|
|
45
|
+
// Interactive tool selection
|
|
46
|
+
const toolChoices = AI_TOOLS.map(t => ({
|
|
47
|
+
name: `${t.name} - ${t.description}`,
|
|
48
|
+
value: t.id
|
|
49
|
+
}));
|
|
50
|
+
const { tool } = await inquirer.prompt([{
|
|
51
|
+
type: 'list',
|
|
52
|
+
name: 'tool',
|
|
53
|
+
message: 'Select AI tool to initialize for:',
|
|
54
|
+
choices: toolChoices
|
|
55
|
+
}]);
|
|
56
|
+
selectedTool = getAITool(tool);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.log(chalk.red('Please specify an AI tool: ironbackend init <tool>'));
|
|
60
|
+
console.log(chalk.yellow(`Available tools: ${getAIToolIds().join(', ')}`));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
if (!selectedTool) {
|
|
64
|
+
console.log(chalk.red('No AI tool selected'));
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
console.log(chalk.cyan(`Initializing for: ${selectedTool.name}\n`));
|
|
68
|
+
const cwd = process.cwd();
|
|
69
|
+
const ironbackendPath = path.join(cwd, IRONBACKEND_DIR);
|
|
70
|
+
// Check if already initialized
|
|
71
|
+
if (fs.existsSync(ironbackendPath)) {
|
|
72
|
+
const { overwrite } = await inquirer.prompt([{
|
|
73
|
+
type: 'confirm',
|
|
74
|
+
name: 'overwrite',
|
|
75
|
+
message: '.ironbackend directory already exists. Overwrite?',
|
|
76
|
+
default: false
|
|
77
|
+
}]);
|
|
78
|
+
if (!overwrite) {
|
|
79
|
+
console.log(chalk.yellow('Initialization cancelled.'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
let selectedStyle = options.style || null;
|
|
84
|
+
let selectedStack = options.stack || null;
|
|
85
|
+
// Interactive prompts if not using --yes
|
|
86
|
+
if (!options.yes) {
|
|
87
|
+
// Style selection
|
|
88
|
+
if (!selectedStyle) {
|
|
89
|
+
const styleChoices = getStyleIds().map(id => {
|
|
90
|
+
const style = getStyle(id);
|
|
91
|
+
return { name: `${style.name} - ${style.description.slice(0, 50)}...`, value: id };
|
|
92
|
+
});
|
|
93
|
+
const { style } = await inquirer.prompt([{
|
|
94
|
+
type: 'list',
|
|
95
|
+
name: 'style',
|
|
96
|
+
message: 'Select an architecture style:',
|
|
97
|
+
choices: [{ name: 'Skip (select later)', value: null }, ...styleChoices]
|
|
98
|
+
}]);
|
|
99
|
+
selectedStyle = style;
|
|
100
|
+
}
|
|
101
|
+
// Stack selection
|
|
102
|
+
if (!selectedStack) {
|
|
103
|
+
const stackChoices = getStackIds().map(id => {
|
|
104
|
+
const stack = getStack(id);
|
|
105
|
+
return { name: `${stack.name}`, value: id };
|
|
106
|
+
});
|
|
107
|
+
const { stack } = await inquirer.prompt([{
|
|
108
|
+
type: 'list',
|
|
109
|
+
name: 'stack',
|
|
110
|
+
message: 'Select a tech stack:',
|
|
111
|
+
choices: [{ name: 'Skip (select later)', value: null }, ...stackChoices]
|
|
112
|
+
}]);
|
|
113
|
+
selectedStack = stack;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Create directory structure
|
|
117
|
+
const spinner = ora('Creating IronBackend configuration...').start();
|
|
118
|
+
try {
|
|
119
|
+
// Create .ironbackend directory
|
|
120
|
+
fs.mkdirSync(ironbackendPath, { recursive: true });
|
|
121
|
+
fs.mkdirSync(path.join(ironbackendPath, 'prompts'), { recursive: true });
|
|
122
|
+
// Create config file
|
|
123
|
+
const config = {
|
|
124
|
+
version: VERSION,
|
|
125
|
+
tool: selectedTool.id,
|
|
126
|
+
style: selectedStyle,
|
|
127
|
+
stack: selectedStack,
|
|
128
|
+
rules: {
|
|
129
|
+
enabled: ['API', 'DOMAIN', 'ERROR_HANDLING', 'DATA_ACCESS', 'NAMING', 'VALIDATION', 'ASYNC'],
|
|
130
|
+
overrides: {}
|
|
131
|
+
},
|
|
132
|
+
createdAt: new Date().toISOString(),
|
|
133
|
+
updatedAt: new Date().toISOString()
|
|
134
|
+
};
|
|
135
|
+
fs.writeFileSync(path.join(ironbackendPath, CONFIG_FILE), JSON.stringify(config, null, 2));
|
|
136
|
+
// Generate prompts if style and stack are selected
|
|
137
|
+
if (selectedStyle && selectedStack) {
|
|
138
|
+
const prompts = buildPromptSections({
|
|
139
|
+
styleId: selectedStyle,
|
|
140
|
+
stackId: selectedStack
|
|
141
|
+
});
|
|
142
|
+
// Write prompt files to .ironbackend/prompts
|
|
143
|
+
fs.writeFileSync(path.join(ironbackendPath, 'prompts', 'system-prompt.md'), prompts.combined);
|
|
144
|
+
fs.writeFileSync(path.join(ironbackendPath, 'prompts', 'style.md'), prompts.style);
|
|
145
|
+
fs.writeFileSync(path.join(ironbackendPath, 'prompts', 'stack.md'), prompts.stack);
|
|
146
|
+
fs.writeFileSync(path.join(ironbackendPath, 'prompts', 'rules.md'), prompts.rules);
|
|
147
|
+
// Generate AI tool-specific file
|
|
148
|
+
const toolOutputPath = path.join(cwd, selectedTool.outputPath);
|
|
149
|
+
const toolOutputDir = path.dirname(toolOutputPath);
|
|
150
|
+
// Create directory if needed
|
|
151
|
+
if (toolOutputDir !== cwd) {
|
|
152
|
+
fs.mkdirSync(toolOutputDir, { recursive: true });
|
|
153
|
+
}
|
|
154
|
+
// Format content for the specific tool
|
|
155
|
+
const formattedContent = formatForAITool(selectedTool, prompts.combined);
|
|
156
|
+
fs.writeFileSync(toolOutputPath, formattedContent);
|
|
157
|
+
}
|
|
158
|
+
spinner.succeed('IronBackend initialized successfully!');
|
|
159
|
+
// Print summary
|
|
160
|
+
console.log(chalk.green('\n✓ Created .ironbackend/ directory'));
|
|
161
|
+
console.log(chalk.green('✓ Created config.json'));
|
|
162
|
+
if (selectedStyle && selectedStack) {
|
|
163
|
+
console.log(chalk.green('✓ Generated AI prompts'));
|
|
164
|
+
console.log(chalk.green(`✓ Created ${selectedTool.outputPath}`));
|
|
165
|
+
}
|
|
166
|
+
console.log(chalk.bold('\n📁 Files created:'));
|
|
167
|
+
console.log(chalk.gray(' .ironbackend/'));
|
|
168
|
+
console.log(chalk.gray(' ├── config.json'));
|
|
169
|
+
console.log(chalk.gray(' └── prompts/'));
|
|
170
|
+
if (selectedStyle && selectedStack) {
|
|
171
|
+
console.log(chalk.gray(' ├── system-prompt.md'));
|
|
172
|
+
console.log(chalk.gray(' ├── style.md'));
|
|
173
|
+
console.log(chalk.gray(' ├── stack.md'));
|
|
174
|
+
console.log(chalk.gray(' └── rules.md'));
|
|
175
|
+
console.log(chalk.gray(` ${selectedTool.outputPath}`));
|
|
176
|
+
}
|
|
177
|
+
console.log(chalk.bold('\n🚀 Next steps:'));
|
|
178
|
+
if (!selectedStyle || !selectedStack) {
|
|
179
|
+
console.log(chalk.cyan(' 1. Select a style: ironbackend select style <name>'));
|
|
180
|
+
console.log(chalk.cyan(' 2. Select a stack: ironbackend select stack <name>'));
|
|
181
|
+
console.log(chalk.cyan(' 3. Export prompts: ironbackend export prompts'));
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.log(chalk.cyan(` 1. Review generated prompts in ${selectedTool.outputPath}`));
|
|
185
|
+
console.log(chalk.cyan(` 2. Start coding with ${selectedTool.name}!`));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
spinner.fail('Initialization failed');
|
|
190
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsB7C"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select Command
|
|
3
|
+
* Select architecture style or tech stack
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import inquirer from 'inquirer';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import { getStyleIds, getStackIds, getStyle, getStack } from '@ironbackend/core';
|
|
12
|
+
import { buildPromptSections } from '@ironbackend/prompts';
|
|
13
|
+
const IRONBACKEND_DIR = '.ironbackend';
|
|
14
|
+
const CONFIG_FILE = 'config.json';
|
|
15
|
+
/**
|
|
16
|
+
* Create the select command
|
|
17
|
+
*/
|
|
18
|
+
export function createSelectCommand() {
|
|
19
|
+
const cmd = new Command('select');
|
|
20
|
+
cmd.description('Select architecture style or tech stack');
|
|
21
|
+
// Style subcommand
|
|
22
|
+
cmd
|
|
23
|
+
.command('style [name]')
|
|
24
|
+
.description('Select an architecture style')
|
|
25
|
+
.action(async (name) => {
|
|
26
|
+
await selectStyle(name);
|
|
27
|
+
});
|
|
28
|
+
// Stack subcommand
|
|
29
|
+
cmd
|
|
30
|
+
.command('stack [name]')
|
|
31
|
+
.description('Select a tech stack')
|
|
32
|
+
.action(async (name) => {
|
|
33
|
+
await selectStack(name);
|
|
34
|
+
});
|
|
35
|
+
return cmd;
|
|
36
|
+
}
|
|
37
|
+
async function selectStyle(name) {
|
|
38
|
+
console.log(chalk.bold.blue('\n🏗️ Select Architecture Style\n'));
|
|
39
|
+
const config = loadConfig();
|
|
40
|
+
if (!config)
|
|
41
|
+
return;
|
|
42
|
+
let selectedStyle;
|
|
43
|
+
if (name) {
|
|
44
|
+
// Validate provided style
|
|
45
|
+
const style = getStyle(name);
|
|
46
|
+
if (!style) {
|
|
47
|
+
console.log(chalk.red(`Unknown style: ${name}`));
|
|
48
|
+
console.log(chalk.yellow('\nAvailable styles:'));
|
|
49
|
+
getStyleIds().forEach(id => {
|
|
50
|
+
const s = getStyle(id);
|
|
51
|
+
console.log(chalk.gray(` - ${id}: ${s.name}`));
|
|
52
|
+
});
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
selectedStyle = name;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Interactive selection
|
|
59
|
+
const styleChoices = getStyleIds().map(id => {
|
|
60
|
+
const style = getStyle(id);
|
|
61
|
+
return {
|
|
62
|
+
name: `${chalk.bold(style.name)}\n ${chalk.gray(style.description.slice(0, 70))}...`,
|
|
63
|
+
value: id,
|
|
64
|
+
short: style.name
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
const { style } = await inquirer.prompt([{
|
|
68
|
+
type: 'list',
|
|
69
|
+
name: 'style',
|
|
70
|
+
message: 'Select an architecture style:',
|
|
71
|
+
choices: styleChoices,
|
|
72
|
+
pageSize: 10
|
|
73
|
+
}]);
|
|
74
|
+
selectedStyle = style;
|
|
75
|
+
}
|
|
76
|
+
// Update config
|
|
77
|
+
config.style = selectedStyle;
|
|
78
|
+
config.updatedAt = new Date().toISOString();
|
|
79
|
+
saveConfig(config);
|
|
80
|
+
const style = getStyle(selectedStyle);
|
|
81
|
+
console.log(chalk.green(`\n✓ Selected style: ${chalk.bold(style.name)}`));
|
|
82
|
+
// Show style info
|
|
83
|
+
console.log(chalk.bold('\nCore Principles:'));
|
|
84
|
+
style.corePrinciples.slice(0, 3).forEach(p => {
|
|
85
|
+
console.log(chalk.gray(` • ${p}`));
|
|
86
|
+
});
|
|
87
|
+
// Regenerate prompts if stack is also set
|
|
88
|
+
if (config.stack) {
|
|
89
|
+
await regeneratePrompts(config);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(chalk.yellow('\n⚠️ Select a stack to generate prompts: ironbackend select stack'));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function selectStack(name) {
|
|
96
|
+
console.log(chalk.bold.blue('\n🛠️ Select Tech Stack\n'));
|
|
97
|
+
const config = loadConfig();
|
|
98
|
+
if (!config)
|
|
99
|
+
return;
|
|
100
|
+
let selectedStack;
|
|
101
|
+
if (name) {
|
|
102
|
+
// Validate provided stack
|
|
103
|
+
const stack = getStack(name);
|
|
104
|
+
if (!stack) {
|
|
105
|
+
console.log(chalk.red(`Unknown stack: ${name}`));
|
|
106
|
+
console.log(chalk.yellow('\nAvailable stacks:'));
|
|
107
|
+
getStackIds().forEach(id => {
|
|
108
|
+
const s = getStack(id);
|
|
109
|
+
console.log(chalk.gray(` - ${id}: ${s.name}`));
|
|
110
|
+
});
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
selectedStack = name;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Interactive selection
|
|
117
|
+
const stackChoices = getStackIds().map(id => {
|
|
118
|
+
const stack = getStack(id);
|
|
119
|
+
return {
|
|
120
|
+
name: `${chalk.bold(stack.name)}\n ${chalk.gray(`${stack.language} ${stack.languageVersion} • ${stack.framework}`)}`,
|
|
121
|
+
value: id,
|
|
122
|
+
short: stack.name
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
const { stack } = await inquirer.prompt([{
|
|
126
|
+
type: 'list',
|
|
127
|
+
name: 'stack',
|
|
128
|
+
message: 'Select a tech stack:',
|
|
129
|
+
choices: stackChoices
|
|
130
|
+
}]);
|
|
131
|
+
selectedStack = stack;
|
|
132
|
+
}
|
|
133
|
+
// Update config
|
|
134
|
+
config.stack = selectedStack;
|
|
135
|
+
config.updatedAt = new Date().toISOString();
|
|
136
|
+
saveConfig(config);
|
|
137
|
+
const stack = getStack(selectedStack);
|
|
138
|
+
console.log(chalk.green(`\n✓ Selected stack: ${chalk.bold(stack.name)}`));
|
|
139
|
+
// Show stack info
|
|
140
|
+
console.log(chalk.bold('\nStack Details:'));
|
|
141
|
+
console.log(chalk.gray(` • Language: ${stack.language} ${stack.languageVersion}`));
|
|
142
|
+
console.log(chalk.gray(` • Framework: ${stack.framework} ${stack.frameworkVersion}`));
|
|
143
|
+
console.log(chalk.gray(` • Database: ${stack.database.type} + ${stack.database.orm}`));
|
|
144
|
+
// Regenerate prompts if style is also set
|
|
145
|
+
if (config.style) {
|
|
146
|
+
await regeneratePrompts(config);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.log(chalk.yellow('\n⚠️ Select a style to generate prompts: ironbackend select style'));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async function regeneratePrompts(config) {
|
|
153
|
+
const spinner = ora('Regenerating prompts...').start();
|
|
154
|
+
try {
|
|
155
|
+
const prompts = buildPromptSections({
|
|
156
|
+
styleId: config.style,
|
|
157
|
+
stackId: config.stack
|
|
158
|
+
});
|
|
159
|
+
const cwd = process.cwd();
|
|
160
|
+
const promptsPath = path.join(cwd, IRONBACKEND_DIR, 'prompts');
|
|
161
|
+
fs.mkdirSync(promptsPath, { recursive: true });
|
|
162
|
+
fs.writeFileSync(path.join(promptsPath, 'system-prompt.md'), prompts.combined);
|
|
163
|
+
fs.writeFileSync(path.join(promptsPath, 'style.md'), prompts.style);
|
|
164
|
+
fs.writeFileSync(path.join(promptsPath, 'stack.md'), prompts.stack);
|
|
165
|
+
fs.writeFileSync(path.join(promptsPath, 'rules.md'), prompts.rules);
|
|
166
|
+
// Update Cursor rules
|
|
167
|
+
const cursorPath = path.join(cwd, '.cursor', 'rules');
|
|
168
|
+
fs.mkdirSync(cursorPath, { recursive: true });
|
|
169
|
+
fs.writeFileSync(path.join(cursorPath, 'ironbackend.mdc'), `---
|
|
170
|
+
description: IronBackend - Backend Architecture Intelligence
|
|
171
|
+
globs: ["**/*.ts", "**/*.js", "**/*.py", "**/*.java", "**/*.cs"]
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
${prompts.combined}`);
|
|
175
|
+
spinner.succeed('Prompts regenerated!');
|
|
176
|
+
console.log(chalk.gray(' Updated: .ironbackend/prompts/system-prompt.md'));
|
|
177
|
+
console.log(chalk.gray(' Updated: .cursor/rules/ironbackend.mdc'));
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
spinner.fail('Failed to regenerate prompts');
|
|
181
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function loadConfig() {
|
|
185
|
+
const cwd = process.cwd();
|
|
186
|
+
const configPath = path.join(cwd, IRONBACKEND_DIR, CONFIG_FILE);
|
|
187
|
+
if (!fs.existsSync(configPath)) {
|
|
188
|
+
console.log(chalk.red('IronBackend not initialized. Run: ironbackend init'));
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
192
|
+
}
|
|
193
|
+
function saveConfig(config) {
|
|
194
|
+
const cwd = process.cwd();
|
|
195
|
+
const configPath = path.join(cwd, IRONBACKEND_DIR, CONFIG_FILE);
|
|
196
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|