@neurcode-ai/cli 0.7.12 → 0.8.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.
Files changed (63) hide show
  1. package/dist/api-client.d.ts +37 -17
  2. package/dist/api-client.d.ts.map +1 -1
  3. package/dist/api-client.js +224 -120
  4. package/dist/api-client.js.map +1 -1
  5. package/dist/commands/check.d.ts.map +1 -1
  6. package/dist/commands/check.js +56 -13
  7. package/dist/commands/check.js.map +1 -1
  8. package/dist/commands/doctor.d.ts.map +1 -1
  9. package/dist/commands/doctor.js +14 -11
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +95 -33
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/login.d.ts.map +1 -1
  15. package/dist/commands/login.js +47 -57
  16. package/dist/commands/login.js.map +1 -1
  17. package/dist/commands/plan.d.ts +2 -0
  18. package/dist/commands/plan.d.ts.map +1 -1
  19. package/dist/commands/plan.js +177 -10
  20. package/dist/commands/plan.js.map +1 -1
  21. package/dist/commands/revert.d.ts.map +1 -1
  22. package/dist/commands/revert.js +10 -0
  23. package/dist/commands/revert.js.map +1 -1
  24. package/dist/commands/session.d.ts +29 -0
  25. package/dist/commands/session.d.ts.map +1 -0
  26. package/dist/commands/session.js +382 -0
  27. package/dist/commands/session.js.map +1 -0
  28. package/dist/commands/verify.d.ts.map +1 -1
  29. package/dist/commands/verify.js +59 -3
  30. package/dist/commands/verify.js.map +1 -1
  31. package/dist/commands/watch.d.ts.map +1 -1
  32. package/dist/commands/watch.js +20 -15
  33. package/dist/commands/watch.js.map +1 -1
  34. package/dist/index.js +78 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/services/integrations/TicketService.d.ts +68 -0
  37. package/dist/services/integrations/TicketService.d.ts.map +1 -0
  38. package/dist/services/integrations/TicketService.js +151 -0
  39. package/dist/services/integrations/TicketService.js.map +1 -0
  40. package/dist/services/security/SecurityGuard.d.ts +80 -0
  41. package/dist/services/security/SecurityGuard.d.ts.map +1 -0
  42. package/dist/services/security/SecurityGuard.js +410 -0
  43. package/dist/services/security/SecurityGuard.js.map +1 -0
  44. package/dist/services/watch/Syncer.d.ts.map +1 -1
  45. package/dist/services/watch/Syncer.js +22 -1
  46. package/dist/services/watch/Syncer.js.map +1 -1
  47. package/dist/utils/ROILogger.d.ts +16 -0
  48. package/dist/utils/ROILogger.d.ts.map +1 -0
  49. package/dist/utils/ROILogger.js +45 -0
  50. package/dist/utils/ROILogger.js.map +1 -0
  51. package/dist/utils/box.d.ts +16 -0
  52. package/dist/utils/box.d.ts.map +1 -0
  53. package/dist/utils/box.js +85 -0
  54. package/dist/utils/box.js.map +1 -0
  55. package/dist/utils/messages.d.ts +81 -0
  56. package/dist/utils/messages.d.ts.map +1 -0
  57. package/dist/utils/messages.js +306 -0
  58. package/dist/utils/messages.js.map +1 -0
  59. package/dist/utils/user-context.d.ts +28 -0
  60. package/dist/utils/user-context.d.ts.map +1 -0
  61. package/dist/utils/user-context.js +68 -0
  62. package/dist/utils/user-context.js.map +1 -0
  63. package/package.json +4 -4
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Box utility for creating terminal boxes
4
+ * Creates high-contrast, professional-looking boxes using chalk
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createBox = createBox;
8
+ let chalk;
9
+ try {
10
+ chalk = require('chalk');
11
+ }
12
+ catch {
13
+ chalk = {
14
+ green: (str) => str,
15
+ yellow: (str) => str,
16
+ red: (str) => str,
17
+ cyan: (str) => str,
18
+ white: (str) => str,
19
+ bold: (str) => str,
20
+ dim: (str) => str,
21
+ };
22
+ }
23
+ /**
24
+ * Create a boxed message for terminal output
25
+ */
26
+ function createBox(content, options = {}) {
27
+ const { title, padding = 1, borderColor = 'cyan', titleColor = 'white', align = 'left', } = options;
28
+ const borderChar = borderColor === 'green' ? chalk.green('─') :
29
+ borderColor === 'yellow' ? chalk.yellow('─') :
30
+ borderColor === 'red' ? chalk.red('─') :
31
+ borderColor === 'cyan' ? chalk.cyan('─') :
32
+ chalk.white('─');
33
+ const cornerTL = borderColor === 'green' ? chalk.green('┌') :
34
+ borderColor === 'yellow' ? chalk.yellow('┌') :
35
+ borderColor === 'red' ? chalk.red('┌') :
36
+ borderColor === 'cyan' ? chalk.cyan('┌') :
37
+ chalk.white('┌');
38
+ const cornerTR = borderColor === 'green' ? chalk.green('┐') :
39
+ borderColor === 'yellow' ? chalk.yellow('┐') :
40
+ borderColor === 'red' ? chalk.red('┐') :
41
+ borderColor === 'cyan' ? chalk.cyan('┐') :
42
+ chalk.white('┐');
43
+ const cornerBL = borderColor === 'green' ? chalk.green('└') :
44
+ borderColor === 'yellow' ? chalk.yellow('└') :
45
+ borderColor === 'red' ? chalk.red('└') :
46
+ borderColor === 'cyan' ? chalk.cyan('└') :
47
+ chalk.white('└');
48
+ const cornerBR = borderColor === 'green' ? chalk.green('┘') :
49
+ borderColor === 'yellow' ? chalk.yellow('┘') :
50
+ borderColor === 'red' ? chalk.red('┘') :
51
+ borderColor === 'cyan' ? chalk.cyan('┘') :
52
+ chalk.white('┘');
53
+ const vertical = borderColor === 'green' ? chalk.green('│') :
54
+ borderColor === 'yellow' ? chalk.yellow('│') :
55
+ borderColor === 'red' ? chalk.red('│') :
56
+ borderColor === 'cyan' ? chalk.cyan('│') :
57
+ chalk.white('│');
58
+ const titleColorFn = titleColor === 'green' ? chalk.green :
59
+ titleColor === 'yellow' ? chalk.yellow :
60
+ titleColor === 'red' ? chalk.red :
61
+ titleColor === 'cyan' ? chalk.cyan :
62
+ chalk.white;
63
+ const lines = content.split('\n');
64
+ const maxWidth = Math.max(...lines.map(line => line.length), title ? title.length + 2 : 0);
65
+ let result = '';
66
+ // Top border
67
+ result += cornerTL + borderChar.repeat(maxWidth + padding * 2) + cornerTR + '\n';
68
+ // Title (if provided)
69
+ if (title) {
70
+ const titleText = titleColorFn(chalk.bold(title));
71
+ const titlePadding = ' '.repeat(padding);
72
+ result += vertical + titlePadding + titleText + ' '.repeat(maxWidth - title.length + padding) + vertical + '\n';
73
+ result += vertical + ' '.repeat(maxWidth + padding * 2) + vertical + '\n';
74
+ }
75
+ // Content lines
76
+ for (const line of lines) {
77
+ const linePadding = ' '.repeat(padding);
78
+ const contentPadding = ' '.repeat(maxWidth - line.length);
79
+ result += vertical + linePadding + line + contentPadding + linePadding + vertical + '\n';
80
+ }
81
+ // Bottom border
82
+ result += cornerBL + borderChar.repeat(maxWidth + padding * 2) + cornerBR;
83
+ return result;
84
+ }
85
+ //# sourceMappingURL=box.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/utils/box.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Enhanced Messaging Utility
3
+ *
4
+ * Provides enterprise-grade, personalized CLI messaging with consistent formatting,
5
+ * helpful error messages, and actionable next steps.
6
+ */
7
+ import { getUserInfo, getUserFirstName } from './user-context';
8
+ export { getUserInfo, getUserFirstName };
9
+ /**
10
+ * Print a personalized greeting
11
+ */
12
+ export declare function printGreeting(message: string): Promise<void>;
13
+ /**
14
+ * Print a success message with premium formatting
15
+ */
16
+ export declare function printSuccess(message: string, details?: string): void;
17
+ /**
18
+ * Print a warning message with helpful context
19
+ */
20
+ export declare function printWarning(message: string, suggestion?: string): void;
21
+ /**
22
+ * Print an error message with actionable next steps
23
+ */
24
+ export declare function printError(message: string, error?: Error | string, nextSteps?: string[]): void;
25
+ /**
26
+ * Print an info message
27
+ */
28
+ export declare function printInfo(message: string, details?: string): void;
29
+ /**
30
+ * Print a section header with premium styling
31
+ */
32
+ export declare function printSection(title: string, emoji?: string): void;
33
+ /**
34
+ * Print a step indicator
35
+ */
36
+ export declare function printStep(step: number, total: number, description: string): void;
37
+ /**
38
+ * Print a progress indicator
39
+ */
40
+ export declare function printProgress(message: string): void;
41
+ /**
42
+ * Print completion of progress
43
+ */
44
+ export declare function printProgressComplete(success?: boolean): void;
45
+ /**
46
+ * Print authentication-related errors with helpful suggestions
47
+ */
48
+ export declare function printAuthError(error: Error | string): Promise<void>;
49
+ /**
50
+ * Print project-related errors with helpful suggestions
51
+ */
52
+ export declare function printProjectError(error: Error | string, projectId?: string): void;
53
+ /**
54
+ * Print a beautiful success banner
55
+ */
56
+ export declare function printSuccessBanner(title: string, subtitle?: string): Promise<void>;
57
+ /**
58
+ * Print command-specific help in errors
59
+ */
60
+ export declare function printCommandHelp(command: string, options?: string[]): void;
61
+ /**
62
+ * Print waiting/progress message with spinner (simple version)
63
+ */
64
+ export declare function printWaiting(message: string, showDots?: boolean): void;
65
+ /**
66
+ * Clear waiting message
67
+ */
68
+ export declare function clearWaiting(): void;
69
+ /**
70
+ * Print verification result with detailed breakdown
71
+ */
72
+ export declare function printVerificationResult(passed: boolean, score?: number, warnings?: number, violations?: number): void;
73
+ /**
74
+ * Print a table-like output for structured data
75
+ */
76
+ export declare function printTable(rows: string[][]): void;
77
+ /**
78
+ * Print a big welcome banner (like other enterprise CLIs)
79
+ */
80
+ export declare function printWelcomeBanner(): Promise<void>;
81
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AAyBzC;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAMpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAKvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAgB9F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,IAAI,CAGrE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAU1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,IAAI,CAM5E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAmBjD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBxD"}
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ /**
3
+ * Enhanced Messaging Utility
4
+ *
5
+ * Provides enterprise-grade, personalized CLI messaging with consistent formatting,
6
+ * helpful error messages, and actionable next steps.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getUserFirstName = exports.getUserInfo = void 0;
10
+ exports.printGreeting = printGreeting;
11
+ exports.printSuccess = printSuccess;
12
+ exports.printWarning = printWarning;
13
+ exports.printError = printError;
14
+ exports.printInfo = printInfo;
15
+ exports.printSection = printSection;
16
+ exports.printStep = printStep;
17
+ exports.printProgress = printProgress;
18
+ exports.printProgressComplete = printProgressComplete;
19
+ exports.printAuthError = printAuthError;
20
+ exports.printProjectError = printProjectError;
21
+ exports.printSuccessBanner = printSuccessBanner;
22
+ exports.printCommandHelp = printCommandHelp;
23
+ exports.printWaiting = printWaiting;
24
+ exports.clearWaiting = clearWaiting;
25
+ exports.printVerificationResult = printVerificationResult;
26
+ exports.printTable = printTable;
27
+ exports.printWelcomeBanner = printWelcomeBanner;
28
+ const user_context_1 = require("./user-context");
29
+ Object.defineProperty(exports, "getUserInfo", { enumerable: true, get: function () { return user_context_1.getUserInfo; } });
30
+ Object.defineProperty(exports, "getUserFirstName", { enumerable: true, get: function () { return user_context_1.getUserFirstName; } });
31
+ // Import chalk with fallback
32
+ let chalkInstance;
33
+ try {
34
+ chalkInstance = require('chalk');
35
+ // Disable colors in CI environments
36
+ if (process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true') {
37
+ chalkInstance.level = 0;
38
+ }
39
+ }
40
+ catch {
41
+ chalkInstance = {
42
+ green: (str) => str,
43
+ yellow: (str) => str,
44
+ red: (str) => str,
45
+ bold: (str) => str,
46
+ dim: (str) => str,
47
+ cyan: (str) => str,
48
+ white: (str) => str,
49
+ blue: (str) => str,
50
+ magenta: (str) => str,
51
+ gray: (str) => str,
52
+ };
53
+ }
54
+ /**
55
+ * Print a personalized greeting
56
+ */
57
+ async function printGreeting(message) {
58
+ const firstName = await (0, user_context_1.getUserFirstName)();
59
+ console.log(chalkInstance.cyan(`\n👋 Hello ${firstName}!\n`));
60
+ console.log(chalkInstance.dim(message));
61
+ console.log('');
62
+ }
63
+ /**
64
+ * Print a success message with premium formatting
65
+ */
66
+ function printSuccess(message, details) {
67
+ console.log(chalkInstance.green(`\n✨ ${message}\n`));
68
+ if (details) {
69
+ console.log(chalkInstance.dim(` ${details}`));
70
+ console.log('');
71
+ }
72
+ }
73
+ /**
74
+ * Print a warning message with helpful context
75
+ */
76
+ function printWarning(message, suggestion) {
77
+ console.log(chalkInstance.yellow(`\n⚠️ ${message}\n`));
78
+ if (suggestion) {
79
+ console.log(chalkInstance.dim(` 💡 ${suggestion}\n`));
80
+ }
81
+ }
82
+ /**
83
+ * Print an error message with actionable next steps
84
+ */
85
+ function printError(message, error, nextSteps) {
86
+ console.log(chalkInstance.red(`\n❌ ${message}\n`));
87
+ if (error) {
88
+ const errorMessage = error instanceof Error ? error.message : error;
89
+ console.log(chalkInstance.dim(` Error: ${errorMessage}`));
90
+ console.log('');
91
+ }
92
+ if (nextSteps && nextSteps.length > 0) {
93
+ console.log(chalkInstance.bold.white(' Next steps:'));
94
+ nextSteps.forEach(step => {
95
+ console.log(chalkInstance.dim(` • ${step}`));
96
+ });
97
+ console.log('');
98
+ }
99
+ }
100
+ /**
101
+ * Print an info message
102
+ */
103
+ function printInfo(message, details) {
104
+ console.log(chalkInstance.cyan(`\nℹ️ ${message}\n`));
105
+ if (details) {
106
+ console.log(chalkInstance.dim(` ${details}`));
107
+ console.log('');
108
+ }
109
+ }
110
+ /**
111
+ * Print a section header with premium styling
112
+ */
113
+ function printSection(title, emoji = '▸') {
114
+ console.log(chalkInstance.bold.white(`\n${emoji} ${title}\n`));
115
+ console.log(chalkInstance.dim('─────────────────────────────────────────────────────────'));
116
+ }
117
+ /**
118
+ * Print a step indicator
119
+ */
120
+ function printStep(step, total, description) {
121
+ console.log(chalkInstance.dim(`[${step}/${total}]`), chalkInstance.white(description));
122
+ }
123
+ /**
124
+ * Print a progress indicator
125
+ */
126
+ function printProgress(message) {
127
+ process.stdout.write(chalkInstance.dim(` ${message}... `));
128
+ }
129
+ /**
130
+ * Print completion of progress
131
+ */
132
+ function printProgressComplete(success = true) {
133
+ if (success) {
134
+ console.log(chalkInstance.green('✓'));
135
+ }
136
+ else {
137
+ console.log(chalkInstance.red('✗'));
138
+ }
139
+ }
140
+ /**
141
+ * Print authentication-related errors with helpful suggestions
142
+ */
143
+ async function printAuthError(error) {
144
+ const errorMessage = error instanceof Error ? error.message : error;
145
+ if (errorMessage.includes('401') || errorMessage.includes('Unauthorized')) {
146
+ printError('Authentication Failed', error, [
147
+ 'Your API key may be invalid or expired',
148
+ 'Run: neurcode login',
149
+ 'Verify your credentials in ~/.neurcoderc'
150
+ ]);
151
+ }
152
+ else if (errorMessage.includes('403') || errorMessage.includes('Forbidden')) {
153
+ printError('Access Denied', error, [
154
+ 'Your API key may not have the required permissions',
155
+ 'Contact your administrator to verify access',
156
+ 'Try running: neurcode logout && neurcode login'
157
+ ]);
158
+ }
159
+ else if (errorMessage.includes('Network') || errorMessage.includes('fetch')) {
160
+ printError('Network Connection Failed', error, [
161
+ 'Check your internet connection',
162
+ 'Verify the API URL: neurcode doctor',
163
+ 'Check firewall/proxy settings',
164
+ 'Try again in a few moments'
165
+ ]);
166
+ }
167
+ else {
168
+ printError('Authentication Error', error);
169
+ }
170
+ }
171
+ /**
172
+ * Print project-related errors with helpful suggestions
173
+ */
174
+ function printProjectError(error, projectId) {
175
+ const errorMessage = error instanceof Error ? error.message : error;
176
+ const nextSteps = [];
177
+ if (errorMessage.includes('not found') || errorMessage.includes('404')) {
178
+ nextSteps.push('The project may have been deleted or you don\'t have access');
179
+ nextSteps.push('List your projects: neurcode init');
180
+ nextSteps.push('Create a new project: neurcode init');
181
+ }
182
+ else if (!projectId) {
183
+ nextSteps.push('No project is configured for this directory');
184
+ nextSteps.push('Run: neurcode init');
185
+ nextSteps.push('Or set project ID: neurcode config --project-id <id>');
186
+ }
187
+ else {
188
+ nextSteps.push('Verify project configuration: neurcode doctor');
189
+ nextSteps.push('Check project access: neurcode init');
190
+ }
191
+ printError('Project Error', error, nextSteps);
192
+ }
193
+ /**
194
+ * Print a beautiful success banner
195
+ */
196
+ async function printSuccessBanner(title, subtitle) {
197
+ const firstName = await (0, user_context_1.getUserFirstName)();
198
+ console.log('');
199
+ console.log(chalkInstance.green('═══════════════════════════════════════════════════════════'));
200
+ console.log(chalkInstance.bold.green(` ✨ ${title}`));
201
+ if (subtitle) {
202
+ console.log(chalkInstance.dim(` ${subtitle}`));
203
+ }
204
+ console.log(chalkInstance.green('═══════════════════════════════════════════════════════════'));
205
+ console.log('');
206
+ }
207
+ /**
208
+ * Print command-specific help in errors
209
+ */
210
+ function printCommandHelp(command, options) {
211
+ console.log(chalkInstance.bold.white('\n Usage:'));
212
+ console.log(chalkInstance.dim(` $ neurcode ${command}${options ? ' ' + options.join(' ') : ''}`));
213
+ if (options && options.length > 0) {
214
+ console.log(chalkInstance.dim('\n Common options:'));
215
+ options.forEach(opt => {
216
+ console.log(chalkInstance.dim(` ${opt}`));
217
+ });
218
+ }
219
+ console.log('');
220
+ }
221
+ /**
222
+ * Print waiting/progress message with spinner (simple version)
223
+ */
224
+ function printWaiting(message, showDots = true) {
225
+ if (showDots) {
226
+ process.stdout.write(chalkInstance.dim(` ${message}`));
227
+ }
228
+ else {
229
+ console.log(chalkInstance.dim(` ${message}`));
230
+ }
231
+ }
232
+ /**
233
+ * Clear waiting message
234
+ */
235
+ function clearWaiting() {
236
+ process.stdout.write('\r');
237
+ }
238
+ /**
239
+ * Print verification result with detailed breakdown
240
+ */
241
+ function printVerificationResult(passed, score, warnings, violations) {
242
+ if (passed) {
243
+ if (score !== undefined) {
244
+ printSuccess(`Verification Passed`, `Your code scored ${score}% and meets all governance requirements`);
245
+ }
246
+ else {
247
+ printSuccess('Verification Passed', 'Your code meets all governance requirements');
248
+ }
249
+ }
250
+ else {
251
+ const details = [];
252
+ if (violations !== undefined && violations > 0) {
253
+ details.push(`${violations} violation(s) found`);
254
+ }
255
+ if (warnings !== undefined && warnings > 0) {
256
+ details.push(`${warnings} warning(s) found`);
257
+ }
258
+ if (score !== undefined) {
259
+ details.push(`Score: ${score}%`);
260
+ }
261
+ printError('Verification Failed', undefined, details.length > 0 ? details : undefined);
262
+ }
263
+ }
264
+ /**
265
+ * Print a table-like output for structured data
266
+ */
267
+ function printTable(rows) {
268
+ // Find max width for each column
269
+ const maxWidths = rows[0].map((_, colIndex) => {
270
+ return Math.max(...rows.map(row => row[colIndex]?.length || 0));
271
+ });
272
+ rows.forEach((row, index) => {
273
+ const formatted = row.map((cell, colIndex) => {
274
+ const width = maxWidths[colIndex];
275
+ return cell.padEnd(width);
276
+ });
277
+ if (index === 0) {
278
+ console.log(chalkInstance.bold.white(formatted.join(' ')));
279
+ }
280
+ else {
281
+ console.log(chalkInstance.dim(formatted.join(' ')));
282
+ }
283
+ });
284
+ console.log('');
285
+ }
286
+ /**
287
+ * Print a big welcome banner (like other enterprise CLIs)
288
+ */
289
+ async function printWelcomeBanner() {
290
+ const userInfo = await (0, user_context_1.getUserInfo)();
291
+ const userName = userInfo?.displayName || userInfo?.email || 'there';
292
+ console.log('');
293
+ console.log(chalkInstance.bold.cyan('═══════════════════════════════════════════════════════════'));
294
+ console.log(chalkInstance.bold.cyan(' '));
295
+ console.log(chalkInstance.bold.white(' 🚀 Welcome to Neurcode 🚀 '));
296
+ console.log(chalkInstance.bold.cyan(' '));
297
+ if (userInfo) {
298
+ console.log(chalkInstance.dim(` Hello, ${userName}! 👋 `));
299
+ }
300
+ console.log(chalkInstance.bold.cyan(' '));
301
+ console.log(chalkInstance.bold.cyan('═══════════════════════════════════════════════════════════'));
302
+ console.log('');
303
+ console.log(chalkInstance.dim(' AI-powered code governance and intelligent diff analysis '));
304
+ console.log('');
305
+ }
306
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * User Context Utility
3
+ *
4
+ * Provides user information (name, email) for personalized CLI messaging.
5
+ * Caches user info to avoid repeated API calls.
6
+ */
7
+ export interface UserInfo {
8
+ id: string;
9
+ email: string;
10
+ firstName?: string;
11
+ lastName?: string;
12
+ imageUrl?: string;
13
+ displayName: string;
14
+ }
15
+ /**
16
+ * Get current user information
17
+ * Uses cache to avoid repeated API calls
18
+ */
19
+ export declare function getUserInfo(): Promise<UserInfo | null>;
20
+ /**
21
+ * Clear cached user info (useful after logout)
22
+ */
23
+ export declare function clearUserCache(): void;
24
+ /**
25
+ * Get user's first name or fallback
26
+ */
27
+ export declare function getUserFirstName(): Promise<string>;
28
+ //# sourceMappingURL=user-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-context.d.ts","sourceRoot":"","sources":["../../src/utils/user-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAoC5D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGxD"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * User Context Utility
4
+ *
5
+ * Provides user information (name, email) for personalized CLI messaging.
6
+ * Caches user info to avoid repeated API calls.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getUserInfo = getUserInfo;
10
+ exports.clearUserCache = clearUserCache;
11
+ exports.getUserFirstName = getUserFirstName;
12
+ const config_1 = require("../config");
13
+ const api_client_1 = require("../api-client");
14
+ let cachedUserInfo = null;
15
+ let cacheTimestamp = 0;
16
+ const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
17
+ /**
18
+ * Get current user information
19
+ * Uses cache to avoid repeated API calls
20
+ */
21
+ async function getUserInfo() {
22
+ try {
23
+ // Return cached info if still valid
24
+ const now = Date.now();
25
+ if (cachedUserInfo && (now - cacheTimestamp) < CACHE_TTL) {
26
+ return cachedUserInfo;
27
+ }
28
+ const config = (0, config_1.loadConfig)();
29
+ if (!config.apiKey) {
30
+ return null;
31
+ }
32
+ const client = new api_client_1.ApiClient(config);
33
+ const user = await client.getCurrentUser();
34
+ // Build display name
35
+ const displayName = user.firstName && user.lastName
36
+ ? `${user.firstName} ${user.lastName}`
37
+ : user.firstName || user.lastName || user.email.split('@')[0] || 'User';
38
+ cachedUserInfo = {
39
+ id: user.id,
40
+ email: user.email,
41
+ firstName: user.firstName,
42
+ lastName: user.lastName,
43
+ imageUrl: user.imageUrl,
44
+ displayName,
45
+ };
46
+ cacheTimestamp = now;
47
+ return cachedUserInfo;
48
+ }
49
+ catch (error) {
50
+ // Silently fail - user info is optional for messaging
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Clear cached user info (useful after logout)
56
+ */
57
+ function clearUserCache() {
58
+ cachedUserInfo = null;
59
+ cacheTimestamp = 0;
60
+ }
61
+ /**
62
+ * Get user's first name or fallback
63
+ */
64
+ async function getUserFirstName() {
65
+ const user = await getUserInfo();
66
+ return user?.firstName || user?.displayName.split(' ')[0] || 'there';
67
+ }
68
+ //# sourceMappingURL=user-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-context.js","sourceRoot":"","sources":["../../src/utils/user-context.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAsBH,kCAoCC;AAKD,wCAGC;AAKD,4CAGC;AAxED,sCAAuC;AACvC,8CAA0C;AAW1C,IAAI,cAAc,GAAoB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAAW,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAE7C;;;GAGG;AACI,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,cAAc,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,SAAS,EAAE,CAAC;YACzD,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAE3C,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ;YACjD,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAE1E,cAAc,GAAG;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW;SACZ,CAAC;QAEF,cAAc,GAAG,GAAG,CAAC;QACrB,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;IACjC,OAAO,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AACvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurcode-ai/cli",
3
- "version": "0.7.12",
3
+ "version": "0.8.0",
4
4
  "description": "Neurcode CLI - AI code governance and diff analysis",
5
5
  "bin": {
6
6
  "neurcode": "./dist/index.js"
@@ -37,8 +37,8 @@
37
37
  "node": ">=18.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@neurcode-ai/diff-parser": "^0.1.1",
41
- "@neurcode-ai/policy-engine": "^0.1.3",
40
+ "@neurcode-ai/diff-parser": "^0.1.0",
41
+ "@neurcode-ai/policy-engine": "^0.1.0",
42
42
  "chalk": "^4.1.2",
43
43
  "chokidar": "^3.6.0",
44
44
  "commander": "^11.1.0",
@@ -58,4 +58,4 @@
58
58
  "@types/uuid": "^9.0.8",
59
59
  "typescript": "^5.3.0"
60
60
  }
61
- }
61
+ }