@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.
@@ -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,10 @@
1
+ /**
2
+ * Init Command
3
+ * Initialize IronBackend in a project for a specific AI tool
4
+ */
5
+ import { Command } from 'commander';
6
+ /**
7
+ * Create the init command
8
+ */
9
+ export declare function createInitCommand(): Command;
10
+ //# sourceMappingURL=init.d.ts.map
@@ -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,10 @@
1
+ /**
2
+ * Select Command
3
+ * Select architecture style or tech stack
4
+ */
5
+ import { Command } from 'commander';
6
+ /**
7
+ * Create the select command
8
+ */
9
+ export declare function createSelectCommand(): Command;
10
+ //# sourceMappingURL=select.d.ts.map
@@ -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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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * IronBackend CLI
3
+ * Backend Architecture Intelligence for AI Coding Assistants
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}