@neurcode-ai/cli 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/api-client.d.ts +169 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +271 -15
- package/dist/api-client.js.map +1 -1
- package/dist/commands/apply.d.ts +9 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +186 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +87 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +16 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +134 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/plan.d.ts +6 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +204 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/refactor.d.ts +3 -0
- package/dist/commands/refactor.d.ts.map +1 -0
- package/dist/commands/refactor.js +166 -0
- package/dist/commands/refactor.js.map +1 -0
- package/dist/commands/revert.d.ts +23 -0
- package/dist/commands/revert.d.ts.map +1 -0
- package/dist/commands/revert.js +234 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/security.d.ts +3 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +167 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/config.d.ts +17 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +88 -21
- package/dist/config.js.map +1 -1
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyCommand = applyCommand;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const api_client_1 = require("../api-client");
|
|
8
|
+
// Try to import chalk, fallback to plain strings if not available
|
|
9
|
+
let chalk;
|
|
10
|
+
try {
|
|
11
|
+
chalk = require('chalk');
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// Fallback: create a mock chalk object that returns strings as-is
|
|
15
|
+
chalk = {
|
|
16
|
+
green: (str) => str,
|
|
17
|
+
yellow: (str) => str,
|
|
18
|
+
red: (str) => str,
|
|
19
|
+
bold: (str) => str,
|
|
20
|
+
dim: (str) => str,
|
|
21
|
+
cyan: (str) => str,
|
|
22
|
+
white: (str) => str,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Apply a saved architect plan by generating and writing code files
|
|
27
|
+
*/
|
|
28
|
+
async function applyCommand(planId, options) {
|
|
29
|
+
try {
|
|
30
|
+
if (!planId || !planId.trim()) {
|
|
31
|
+
console.error(chalk.red('❌ Error: Plan ID is required'));
|
|
32
|
+
console.log(chalk.dim('Usage: neurcode apply <planId>'));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
// Validate UUID format
|
|
36
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
37
|
+
if (!uuidRegex.test(planId.trim())) {
|
|
38
|
+
console.error(chalk.red('❌ Error: Invalid plan ID format'));
|
|
39
|
+
console.log(chalk.dim('Plan ID must be a valid UUID'));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
// Load configuration
|
|
43
|
+
const config = (0, config_1.loadConfig)();
|
|
44
|
+
// API URL is automatically set to production - no need to check
|
|
45
|
+
// Require API key (shows helpful error message if missing)
|
|
46
|
+
if (!config.apiKey) {
|
|
47
|
+
config.apiKey = (0, config_1.requireApiKey)();
|
|
48
|
+
}
|
|
49
|
+
// Initialize API client
|
|
50
|
+
const client = new api_client_1.ApiClient(config);
|
|
51
|
+
console.log(chalk.dim(`📋 Applying plan: ${planId}...\n`));
|
|
52
|
+
// Step 1: Get the plan to know which files will be generated
|
|
53
|
+
// We need to add a getPlan endpoint, but for now let's use a workaround:
|
|
54
|
+
// Call apply with empty snapshots to get file list, then read snapshots, then call again
|
|
55
|
+
// Actually, better: Update API to accept snapshots and handle everything in one call
|
|
56
|
+
// For Phase 6 MVP: Let's read files that might be affected
|
|
57
|
+
// We'll need to know the plan files first. Let's add a getPlan endpoint or
|
|
58
|
+
// update apply to accept snapshots and return plan info
|
|
59
|
+
// Step 2: Read existing files before generating code (safety backup)
|
|
60
|
+
const cwd = process.cwd();
|
|
61
|
+
const snapshots = [];
|
|
62
|
+
console.log(chalk.dim('📸 Creating safety snapshots of existing files...\n'));
|
|
63
|
+
// For now, we'll call apply to get the file list, then read snapshots
|
|
64
|
+
// But the API should handle versioning, so we need to send snapshots before generation
|
|
65
|
+
// Let's implement: API fetches plan, CLI reads files based on plan, then API generates with snapshots
|
|
66
|
+
// Temporary: Call apply to get file list (API will generate code)
|
|
67
|
+
// Then we read snapshots and API will save versions
|
|
68
|
+
// Better: Add a "preview" endpoint or update apply to accept snapshots upfront
|
|
69
|
+
// For Phase 6: Update apply endpoint to:
|
|
70
|
+
// 1. Fetch plan
|
|
71
|
+
// 2. Accept snapshots
|
|
72
|
+
// 3. Save original versions
|
|
73
|
+
// 4. Generate code
|
|
74
|
+
// 5. Save new versions
|
|
75
|
+
// 6. Track in session
|
|
76
|
+
// Call API to generate code (API will handle versioning if snapshots provided)
|
|
77
|
+
const response = await client.applyPlan(planId.trim(), snapshots);
|
|
78
|
+
// Read existing files that will be overwritten (for display purposes)
|
|
79
|
+
// Note: API should have already saved versions if snapshots were sent
|
|
80
|
+
for (const file of response.files) {
|
|
81
|
+
const filePath = (0, path_1.resolve)(cwd, file.path);
|
|
82
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
83
|
+
try {
|
|
84
|
+
const originalContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
85
|
+
if (!snapshots.find(s => s.path === file.path)) {
|
|
86
|
+
snapshots.push({
|
|
87
|
+
path: file.path,
|
|
88
|
+
originalContent: originalContent
|
|
89
|
+
});
|
|
90
|
+
console.log(chalk.dim(` 📸 Snapshot: ${file.path}`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.log(chalk.yellow(` ⚠️ Could not read ${file.path}: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (snapshots.length > 0) {
|
|
99
|
+
console.log(chalk.dim(`\n✅ Created ${snapshots.length} snapshot(s) for safety`));
|
|
100
|
+
console.log(chalk.dim(' These will be saved as version history before applying changes\n'));
|
|
101
|
+
}
|
|
102
|
+
if (!response.success) {
|
|
103
|
+
console.error(chalk.red('❌ Failed to apply plan'));
|
|
104
|
+
console.error(chalk.red(response.message || 'Unknown error'));
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
// Safety check: Show summary
|
|
108
|
+
console.log(chalk.bold.white(`📊 Ready to write ${response.filesGenerated} file(s):\n`));
|
|
109
|
+
response.files.forEach((file, index) => {
|
|
110
|
+
console.log(chalk.cyan(` ${index + 1}. ${file.path}`));
|
|
111
|
+
});
|
|
112
|
+
// Confirm before writing (unless --force flag is set)
|
|
113
|
+
if (!options.force) {
|
|
114
|
+
console.log(chalk.yellow('\n⚠️ This will write files to your filesystem.'));
|
|
115
|
+
console.log(chalk.dim(' Use --force to skip this confirmation.\n'));
|
|
116
|
+
// In a real implementation, you might want to use readline for interactive confirmation
|
|
117
|
+
// For now, we'll proceed automatically but log a warning
|
|
118
|
+
console.log(chalk.dim(' Proceeding with file write...\n'));
|
|
119
|
+
}
|
|
120
|
+
// Write files to disk
|
|
121
|
+
let successCount = 0;
|
|
122
|
+
let errorCount = 0;
|
|
123
|
+
for (const file of response.files) {
|
|
124
|
+
try {
|
|
125
|
+
const filePath = (0, path_1.resolve)(cwd, file.path);
|
|
126
|
+
const fileDir = (0, path_1.dirname)(filePath);
|
|
127
|
+
// Create directory if it doesn't exist
|
|
128
|
+
if (!(0, fs_1.existsSync)(fileDir)) {
|
|
129
|
+
(0, fs_1.mkdirSync)(fileDir, { recursive: true });
|
|
130
|
+
console.log(chalk.dim(`📁 Created directory: ${fileDir}`));
|
|
131
|
+
}
|
|
132
|
+
// Check if file already exists
|
|
133
|
+
if ((0, fs_1.existsSync)(filePath) && !options.force) {
|
|
134
|
+
console.log(chalk.yellow(`⚠️ File already exists: ${file.path}`));
|
|
135
|
+
console.log(chalk.dim(` Skipping (use --force to overwrite)`));
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
// Write file
|
|
139
|
+
(0, fs_1.writeFileSync)(filePath, file.content, 'utf-8');
|
|
140
|
+
console.log(chalk.green(`✅ Written: ${file.path}`));
|
|
141
|
+
successCount++;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error(chalk.red(`❌ Failed to write ${file.path}:`));
|
|
145
|
+
if (error instanceof Error) {
|
|
146
|
+
console.error(chalk.red(` ${error.message}`));
|
|
147
|
+
}
|
|
148
|
+
errorCount++;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Summary
|
|
152
|
+
console.log('\n' + '='.repeat(60));
|
|
153
|
+
if (successCount > 0) {
|
|
154
|
+
console.log(chalk.bold.green(`\n✅ Successfully wrote ${successCount} file(s)`));
|
|
155
|
+
}
|
|
156
|
+
if (errorCount > 0) {
|
|
157
|
+
console.log(chalk.bold.red(`\n❌ Failed to write ${errorCount} file(s)`));
|
|
158
|
+
}
|
|
159
|
+
console.log(chalk.dim(`\nPlan ID: ${response.planId}`));
|
|
160
|
+
console.log(chalk.dim(`Status: APPLIED\n`));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error(chalk.red('\n❌ Error applying plan:'));
|
|
164
|
+
if (error instanceof Error) {
|
|
165
|
+
console.error(chalk.red(error.message));
|
|
166
|
+
if (error.message.includes('API request failed')) {
|
|
167
|
+
console.log(chalk.dim('\n💡 Make sure:'));
|
|
168
|
+
console.log(chalk.dim(' • Your API key is valid'));
|
|
169
|
+
console.log(chalk.dim(' • The API URL is correct'));
|
|
170
|
+
console.log(chalk.dim(' • The plan ID is correct'));
|
|
171
|
+
console.log(chalk.dim(' • You have network connectivity'));
|
|
172
|
+
}
|
|
173
|
+
else if (error.message.includes('not found')) {
|
|
174
|
+
console.log(chalk.dim('\n💡 The plan ID may be incorrect or the plan may have been deleted.'));
|
|
175
|
+
}
|
|
176
|
+
else if (error.message.includes('already been applied')) {
|
|
177
|
+
console.log(chalk.dim('\n💡 This plan has already been applied.'));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
console.error(error);
|
|
182
|
+
}
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAkNvD"}
|
package/dist/commands/check.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.checkCommand = checkCommand;
|
|
4
37
|
const child_process_1 = require("child_process");
|
|
@@ -41,18 +74,68 @@ async function checkCommand(options) {
|
|
|
41
74
|
if (options.ai) {
|
|
42
75
|
// AI-powered analysis with session tracking
|
|
43
76
|
console.log('🤖 Sending diff to Neurcode AI Analysis...');
|
|
44
|
-
|
|
77
|
+
// Read file contents for all changed files to enable proper revert
|
|
78
|
+
const diffFiles = (0, diff_parser_1.parseDiff)(diffText);
|
|
79
|
+
const fileContents = {};
|
|
80
|
+
try {
|
|
81
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
82
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
83
|
+
for (const file of diffFiles) {
|
|
84
|
+
try {
|
|
85
|
+
// Try multiple path variations to find the file
|
|
86
|
+
const pathsToTry = [
|
|
87
|
+
file.path, // Original path from diff
|
|
88
|
+
file.path.replace(/^b\//, ''), // Without "b/" prefix
|
|
89
|
+
file.path.startsWith('b/') ? file.path : `b/${file.path}`, // With "b/" prefix
|
|
90
|
+
path.basename(file.path), // Just filename
|
|
91
|
+
];
|
|
92
|
+
for (const filePath of pathsToTry) {
|
|
93
|
+
if (fs.existsSync(filePath)) {
|
|
94
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
95
|
+
// Store with multiple keys to ensure matching
|
|
96
|
+
fileContents[file.path] = content; // Original path
|
|
97
|
+
fileContents[filePath] = content; // Actual file path
|
|
98
|
+
// Also store without b/ prefix for matching
|
|
99
|
+
const pathWithoutBPrefix = file.path.replace(/^b\//, '');
|
|
100
|
+
if (pathWithoutBPrefix !== file.path) {
|
|
101
|
+
fileContents[pathWithoutBPrefix] = content;
|
|
102
|
+
}
|
|
103
|
+
break; // Found the file, no need to try other paths
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
// File might not exist (e.g., deleted), skip it
|
|
109
|
+
// We'll use diff as fallback
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
// If we can't read files, continue without fileContents
|
|
115
|
+
// The API will use diff as fallback
|
|
116
|
+
}
|
|
117
|
+
const aiResult = await client.analyzeBloat(diffText, options.intent, projectId, options.sessionId, Object.keys(fileContents).length > 0 ? fileContents : undefined);
|
|
45
118
|
// Display AI analysis results
|
|
46
119
|
console.log('\n📊 AI Analysis Results:');
|
|
47
120
|
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
48
|
-
|
|
49
|
-
|
|
121
|
+
if (aiResult.sessionId) {
|
|
122
|
+
console.log(`\n🎯 Session ID: ${aiResult.sessionId}`);
|
|
123
|
+
console.log(` View in dashboard: https://neurcode.com/dashboard/sessions/${aiResult.sessionId}`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.log(`\n⚠️ Session tracking unavailable (analysis completed successfully)`);
|
|
127
|
+
}
|
|
50
128
|
console.log(`\n📈 Redundancy Analysis:`);
|
|
51
129
|
console.log(` Original Lines: ${aiResult.analysis.redundancy.originalLines}`);
|
|
52
130
|
console.log(` Suggested Lines: ${aiResult.analysis.redundancy.suggestedLines}`);
|
|
53
131
|
console.log(` Redundancy: ${aiResult.analysis.redundancy.redundancyPercentage}%`);
|
|
54
132
|
console.log(` Token Savings: ${aiResult.analysis.redundancy.tokenSavings.toLocaleString()}`);
|
|
55
|
-
|
|
133
|
+
// Show cost with appropriate precision (4 decimal places for small amounts)
|
|
134
|
+
const costSavings = aiResult.analysis.redundancy.costSavings;
|
|
135
|
+
const costDisplay = costSavings < 0.01
|
|
136
|
+
? `$${costSavings.toFixed(6)}`
|
|
137
|
+
: `$${costSavings.toFixed(2)}`;
|
|
138
|
+
console.log(` Cost Savings: ${costDisplay}`);
|
|
56
139
|
if (aiResult.analysis.redundancy.redundantBlocks.length > 0) {
|
|
57
140
|
console.log(`\n⚠️ Redundant Blocks Found:`);
|
|
58
141
|
aiResult.analysis.redundancy.redundantBlocks.forEach((block, i) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Command
|
|
3
|
+
*
|
|
4
|
+
* Allows users to configure their API key locally for easier CLI usage.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Save API key to config file
|
|
8
|
+
*/
|
|
9
|
+
export declare function configCommand(key?: string, options?: {
|
|
10
|
+
global?: boolean;
|
|
11
|
+
}): void;
|
|
12
|
+
/**
|
|
13
|
+
* Show current configuration
|
|
14
|
+
*/
|
|
15
|
+
export declare function showConfigCommand(): void;
|
|
16
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA6EhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAkCxC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config Command
|
|
4
|
+
*
|
|
5
|
+
* Allows users to configure their API key locally for easier CLI usage.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.configCommand = configCommand;
|
|
12
|
+
exports.showConfigCommand = showConfigCommand;
|
|
13
|
+
const fs_1 = require("fs");
|
|
14
|
+
const path_1 = require("path");
|
|
15
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
+
/**
|
|
17
|
+
* Validate API key format
|
|
18
|
+
*/
|
|
19
|
+
function validateApiKey(key) {
|
|
20
|
+
if (!key || typeof key !== 'string') {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
// API keys should start with nk_ (nk_live_ or nk_test_)
|
|
24
|
+
return key.startsWith('nk_');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Save API key to config file
|
|
28
|
+
*/
|
|
29
|
+
function configCommand(key, options) {
|
|
30
|
+
if (!key) {
|
|
31
|
+
console.error(chalk_1.default.red('❌ Error: API key is required'));
|
|
32
|
+
console.log(chalk_1.default.yellow('\nUsage:'));
|
|
33
|
+
console.log(chalk_1.default.cyan(' neurcode config --key <your_api_key>'));
|
|
34
|
+
console.log(chalk_1.default.cyan(' neurcode config --key <your_api_key> --global # Save to home directory\n'));
|
|
35
|
+
console.log(chalk_1.default.gray('Get your API key from: https://dashboard.neurcode.com/api-keys'));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
// Validate key format
|
|
39
|
+
if (!validateApiKey(key)) {
|
|
40
|
+
console.error(chalk_1.default.red('❌ Error: Invalid API key format'));
|
|
41
|
+
console.log(chalk_1.default.yellow('\nAPI keys must start with "nk_" (e.g., nk_live_... or nk_test_...)'));
|
|
42
|
+
console.log(chalk_1.default.gray('Get your API key from: https://dashboard.neurcode.com/api-keys\n'));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
// Determine config file path
|
|
46
|
+
const configPath = options?.global
|
|
47
|
+
? (0, path_1.join)(process.env.HOME || process.env.USERPROFILE || '', 'neurcode.config.json')
|
|
48
|
+
: (0, path_1.join)(process.cwd(), 'neurcode.config.json');
|
|
49
|
+
try {
|
|
50
|
+
// Load existing config if it exists
|
|
51
|
+
let config = {};
|
|
52
|
+
if ((0, fs_1.existsSync)(configPath)) {
|
|
53
|
+
try {
|
|
54
|
+
const existingContent = (0, fs_1.readFileSync)(configPath, 'utf-8');
|
|
55
|
+
config = JSON.parse(existingContent);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.warn(chalk_1.default.yellow(`⚠️ Warning: Could not parse existing config file, creating new one`));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Update API key
|
|
62
|
+
config.apiKey = key;
|
|
63
|
+
// Do NOT save apiUrl to config file - it defaults to production
|
|
64
|
+
// Only save apiUrl if it was explicitly set (for enterprise/on-prem use cases)
|
|
65
|
+
// For normal users, we use the default production URL
|
|
66
|
+
// Create minimal config with only apiKey (and projectId if it exists)
|
|
67
|
+
const configToSave = {
|
|
68
|
+
apiKey: key,
|
|
69
|
+
};
|
|
70
|
+
// Preserve projectId if it exists
|
|
71
|
+
if (config.projectId) {
|
|
72
|
+
configToSave.projectId = config.projectId;
|
|
73
|
+
}
|
|
74
|
+
// Only save apiUrl if it was explicitly set in the existing config
|
|
75
|
+
// (This is for enterprise/on-prem deployments)
|
|
76
|
+
if (config.apiUrl && config.apiUrl !== 'https://api.neurcode.com') {
|
|
77
|
+
configToSave.apiUrl = config.apiUrl;
|
|
78
|
+
}
|
|
79
|
+
// Write config file (minimal - only what's needed)
|
|
80
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(configToSave, null, 2) + '\n', 'utf-8');
|
|
81
|
+
console.log(chalk_1.default.green('\n✅ API Key saved. Connected to Neurcode Web.\n'));
|
|
82
|
+
if (options?.global) {
|
|
83
|
+
console.log(chalk_1.default.cyan('💡 This key will be used for all projects unless overridden locally.\n'));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(chalk_1.default.cyan('💡 This key will be used for this project.\n'));
|
|
87
|
+
console.log(chalk_1.default.gray(' Tip: Use --global flag to save for all projects\n'));
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk_1.default.green('🚀 You are ready to go! Try:'));
|
|
90
|
+
console.log(chalk_1.default.cyan(' neurcode plan "Add a new feature"'));
|
|
91
|
+
console.log(chalk_1.default.cyan(' neurcode check --staged\n'));
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error(chalk_1.default.red(`❌ Error saving config: ${error.message}`));
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Show current configuration
|
|
100
|
+
*/
|
|
101
|
+
function showConfigCommand() {
|
|
102
|
+
const { loadConfig } = require('../config');
|
|
103
|
+
const config = loadConfig();
|
|
104
|
+
console.log(chalk_1.default.bold('\n📋 Current Configuration\n'));
|
|
105
|
+
if (config.apiKey) {
|
|
106
|
+
const maskedKey = config.apiKey.substring(0, 12) + '...' + config.apiKey.substring(config.apiKey.length - 4);
|
|
107
|
+
console.log(chalk_1.default.green(`✅ API Key: ${maskedKey}`));
|
|
108
|
+
// Show source
|
|
109
|
+
if (process.env.NEURCODE_API_KEY) {
|
|
110
|
+
console.log(chalk_1.default.gray(' Source: Environment variable (NEURCODE_API_KEY)'));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(chalk_1.default.gray(' Source: Config file'));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(chalk_1.default.red('❌ API Key: Not set'));
|
|
118
|
+
}
|
|
119
|
+
// Show API URL only if it's not the default (for enterprise/on-prem users)
|
|
120
|
+
if (config.apiUrl && config.apiUrl !== 'https://api.neurcode.com') {
|
|
121
|
+
console.log(chalk_1.default.cyan(`🌐 API URL: ${config.apiUrl} (custom)`));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.log(chalk_1.default.gray('🌐 API URL: https://api.neurcode.com (production)'));
|
|
125
|
+
}
|
|
126
|
+
if (config.projectId) {
|
|
127
|
+
console.log(chalk_1.default.blue(`📁 Project ID: ${config.projectId}`));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
console.log(chalk_1.default.gray('📁 Project ID: Not set'));
|
|
131
|
+
}
|
|
132
|
+
console.log('');
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAsBA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuID,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBAmErE"}
|