@radkode/neo 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +167 -0
  2. package/bin/cli.js +2 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +74 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/config/index.d.ts +3 -0
  8. package/dist/commands/config/index.d.ts.map +1 -0
  9. package/dist/commands/config/index.js +43 -0
  10. package/dist/commands/config/index.js.map +1 -0
  11. package/dist/commands/git/index.d.ts +3 -0
  12. package/dist/commands/git/index.d.ts.map +1 -0
  13. package/dist/commands/git/index.js +8 -0
  14. package/dist/commands/git/index.js.map +1 -0
  15. package/dist/commands/git/push/index.d.ts +3 -0
  16. package/dist/commands/git/push/index.d.ts.map +1 -0
  17. package/dist/commands/git/push/index.js +140 -0
  18. package/dist/commands/git/push/index.js.map +1 -0
  19. package/dist/commands/index.d.ts +6 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +12 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/init/index.d.ts +3 -0
  24. package/dist/commands/init/index.d.ts.map +1 -0
  25. package/dist/commands/init/index.js +136 -0
  26. package/dist/commands/init/index.js.map +1 -0
  27. package/dist/core/errors/index.d.ts +168 -0
  28. package/dist/core/errors/index.d.ts.map +1 -0
  29. package/dist/core/errors/index.js +260 -0
  30. package/dist/core/errors/index.js.map +1 -0
  31. package/dist/core/interfaces/index.d.ts +292 -0
  32. package/dist/core/interfaces/index.d.ts.map +1 -0
  33. package/dist/core/interfaces/index.js +9 -0
  34. package/dist/core/interfaces/index.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types/index.d.ts +17 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/index.js +2 -0
  42. package/dist/types/index.js.map +1 -0
  43. package/dist/utils/banner.d.ts +2 -0
  44. package/dist/utils/banner.d.ts.map +1 -0
  45. package/dist/utils/banner.js +13 -0
  46. package/dist/utils/banner.js.map +1 -0
  47. package/dist/utils/completions.d.ts +6 -0
  48. package/dist/utils/completions.d.ts.map +1 -0
  49. package/dist/utils/completions.js +108 -0
  50. package/dist/utils/completions.js.map +1 -0
  51. package/dist/utils/config.d.ts +38 -0
  52. package/dist/utils/config.d.ts.map +1 -0
  53. package/dist/utils/config.js +128 -0
  54. package/dist/utils/config.js.map +1 -0
  55. package/dist/utils/installer.d.ts +28 -0
  56. package/dist/utils/installer.d.ts.map +1 -0
  57. package/dist/utils/installer.js +219 -0
  58. package/dist/utils/installer.js.map +1 -0
  59. package/dist/utils/logger.d.ts +13 -0
  60. package/dist/utils/logger.d.ts.map +1 -0
  61. package/dist/utils/logger.js +29 -0
  62. package/dist/utils/logger.js.map +1 -0
  63. package/dist/utils/shell.d.ts +31 -0
  64. package/dist/utils/shell.d.ts.map +1 -0
  65. package/dist/utils/shell.js +213 -0
  66. package/dist/utils/shell.js.map +1 -0
  67. package/package.json +83 -0
@@ -0,0 +1,136 @@
1
+ import { Command } from '@commander-js/extra-typings';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import inquirer from 'inquirer';
5
+ import { logger } from '../../utils/logger.js';
6
+ import { configManager } from '../../utils/config.js';
7
+ import { GlobalInstaller } from '../../utils/installer.js';
8
+ import { ZshIntegration } from '../../utils/shell.js';
9
+ import { CompletionGenerator } from '../../utils/completions.js';
10
+ import { join } from 'path';
11
+ export function createInitCommand() {
12
+ const command = new Command('init');
13
+ command
14
+ .description('Install and configure Neo CLI globally')
15
+ .option('--force', 'force reconfiguration if already initialized')
16
+ .option('--skip-install', 'skip global installation (configuration only)')
17
+ .action(async (options) => {
18
+ const spinner = ora('Checking current setup...').start();
19
+ try {
20
+ const installer = new GlobalInstaller();
21
+ const shell = new ZshIntegration();
22
+ const isInitialized = await configManager.isInitialized();
23
+ const installStatus = await installer.getStatus();
24
+ spinner.stop();
25
+ if (isInitialized && !options.force) {
26
+ const config = await configManager.read();
27
+ logger.info(`Neo CLI is already initialized (v${config.installation.version})`);
28
+ logger.info(`Config location: ${chalk.cyan(configManager.getConfigFile())}`);
29
+ const { action } = await inquirer.prompt([
30
+ {
31
+ type: 'list',
32
+ name: 'action',
33
+ message: 'What would you like to do?',
34
+ choices: [
35
+ { name: 'Update configuration', value: 'update' },
36
+ { name: 'Reset everything', value: 'reset' },
37
+ { name: 'Cancel', value: 'cancel' },
38
+ ],
39
+ },
40
+ ]);
41
+ if (action === 'cancel') {
42
+ logger.info('Initialization cancelled.');
43
+ return;
44
+ }
45
+ if (action === 'reset') {
46
+ const backup = await configManager.backup();
47
+ if (backup) {
48
+ logger.info(`Configuration backed up to: ${chalk.gray(backup)}`);
49
+ }
50
+ const shellBackup = await shell.backup();
51
+ if (shellBackup) {
52
+ logger.info(`Shell configuration backed up to: ${chalk.gray(shellBackup)}`);
53
+ }
54
+ }
55
+ }
56
+ if (!options.skipInstall) {
57
+ const installSpinner = ora('Installing Neo CLI globally...').start();
58
+ if (!installStatus.pnpmInstalled) {
59
+ installSpinner.fail('pnpm is not installed');
60
+ logger.error('Please install pnpm first: https://pnpm.io/installation');
61
+ logger.info('Then run this command again.');
62
+ return;
63
+ }
64
+ logger.debug(`pnpm version: ${installStatus.pnpmVersion}`);
65
+ if (installStatus.packageInstalled) {
66
+ installSpinner.text = 'Updating Neo CLI to latest version...';
67
+ const updateResult = await installer.update();
68
+ if (!updateResult.success) {
69
+ installSpinner.fail('Failed to update Neo CLI');
70
+ logger.error(updateResult.error || 'Unknown error occurred');
71
+ return;
72
+ }
73
+ installSpinner.succeed(`Neo CLI updated to v${updateResult.version}`);
74
+ }
75
+ else {
76
+ const installResult = await installer.install();
77
+ if (!installResult.success) {
78
+ installSpinner.fail('Failed to install Neo CLI globally');
79
+ logger.error(installResult.error || 'Unknown error occurred');
80
+ return;
81
+ }
82
+ installSpinner.succeed(`Neo CLI v${installResult.version} installed globally`);
83
+ }
84
+ const commandWorking = await installer.verifyGlobalCommand();
85
+ if (!commandWorking) {
86
+ logger.warn('Neo command may not be accessible. You might need to restart your terminal.');
87
+ }
88
+ }
89
+ const configSpinner = ora('Setting up configuration...').start();
90
+ const newConfig = {
91
+ user: {},
92
+ preferences: {
93
+ aliases: {
94
+ n: true,
95
+ },
96
+ theme: 'auto',
97
+ },
98
+ shell: {
99
+ type: 'zsh',
100
+ rcFile: shell.getRcFile(),
101
+ },
102
+ installation: {
103
+ installedAt: new Date().toISOString(),
104
+ version: installStatus.packageVersion || '0.1.0',
105
+ ...(installStatus.globalPath && { globalPath: installStatus.globalPath }),
106
+ completionsPath: join(configManager.getConfigDir(), 'completions'),
107
+ },
108
+ };
109
+ await configManager.write(newConfig);
110
+ configSpinner.succeed('Configuration saved');
111
+ const completionSpinner = ora('Creating completion files...').start();
112
+ await CompletionGenerator.createCompletionFiles(newConfig.installation.completionsPath);
113
+ completionSpinner.succeed('Completion files created');
114
+ const shellSpinner = ora('Setting up shell integration...').start();
115
+ await shell.applyConfig(newConfig);
116
+ shellSpinner.succeed('Shell integration configured');
117
+ logger.success('\n🎉 Neo CLI has been successfully initialized!');
118
+ logger.info('\nWhat was configured:');
119
+ logger.log(` ✓ Global installation: ${chalk.cyan('neo')} command available`);
120
+ logger.log(` ✓ Configuration: ${chalk.cyan(configManager.getConfigFile())}`);
121
+ logger.log(` ✓ Shell alias: ${chalk.cyan('n')} → ${chalk.cyan('neo')}`);
122
+ logger.log(` ✓ Shell completions: enabled`);
123
+ logger.info('\nNext steps:');
124
+ logger.log(` ${chalk.gray('1.')} Restart your terminal or run: ${chalk.cyan('source ~/.zshrc')}`);
125
+ logger.log(` ${chalk.gray('2.')} Try: ${chalk.cyan('neo --help')} or ${chalk.cyan('n --help')}`);
126
+ logger.log(` ${chalk.gray('3.')} Configure settings: ${chalk.cyan('neo config')}`);
127
+ }
128
+ catch (error) {
129
+ spinner.fail('Initialization failed');
130
+ logger.error(`Error: ${error}`);
131
+ throw error;
132
+ }
133
+ });
134
+ return command;
135
+ }
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ export declare enum ErrorSeverity {
2
+ LOW = "low",
3
+ MEDIUM = "medium",
4
+ HIGH = "high",
5
+ CRITICAL = "critical"
6
+ }
7
+ export declare enum ErrorCategory {
8
+ VALIDATION = "VALIDATION",
9
+ CONFIGURATION = "CONFIGURATION",
10
+ FILESYSTEM = "FILESYSTEM",
11
+ NETWORK = "NETWORK",
12
+ COMMAND = "COMMAND",
13
+ PLUGIN = "PLUGIN",
14
+ AUTHENTICATION = "AUTHENTICATION",
15
+ PERMISSION = "PERMISSION",
16
+ UNKNOWN = "UNKNOWN"
17
+ }
18
+ export interface IError {
19
+ readonly code: string;
20
+ readonly message: string;
21
+ readonly severity: ErrorSeverity;
22
+ readonly category: ErrorCategory;
23
+ readonly timestamp: Date;
24
+ readonly context?: Record<string, unknown> | undefined;
25
+ readonly suggestions?: string[] | undefined;
26
+ readonly originalError?: Error | undefined;
27
+ }
28
+ export declare abstract class AppError extends Error implements IError {
29
+ abstract readonly code: string;
30
+ abstract readonly severity: ErrorSeverity;
31
+ abstract readonly category: ErrorCategory;
32
+ readonly timestamp: Date;
33
+ readonly context?: Record<string, unknown> | undefined;
34
+ readonly suggestions?: string[] | undefined;
35
+ readonly originalError?: Error | undefined;
36
+ constructor(message: string, options?: {
37
+ context?: Record<string, unknown>;
38
+ suggestions?: string[];
39
+ originalError?: Error;
40
+ });
41
+ getUserMessage(): string;
42
+ getDetailedReport(): string;
43
+ toJSON(): Record<string, unknown>;
44
+ }
45
+ export declare class CommandError extends AppError {
46
+ readonly commandName: string;
47
+ readonly code = "COMMAND_ERROR";
48
+ readonly severity = ErrorSeverity.MEDIUM;
49
+ readonly category = ErrorCategory.COMMAND;
50
+ constructor(message: string, commandName: string, options?: {
51
+ context?: Record<string, unknown>;
52
+ suggestions?: string[];
53
+ originalError?: Error;
54
+ });
55
+ }
56
+ export declare class ValidationError extends AppError {
57
+ readonly field?: string | undefined;
58
+ readonly value?: unknown | undefined;
59
+ readonly code = "VALIDATION_ERROR";
60
+ readonly severity = ErrorSeverity.LOW;
61
+ readonly category = ErrorCategory.VALIDATION;
62
+ constructor(message: string, field?: string | undefined, value?: unknown | undefined, options?: {
63
+ context?: Record<string, unknown>;
64
+ suggestions?: string[];
65
+ });
66
+ }
67
+ export declare class ConfigurationError extends AppError {
68
+ readonly configKey?: string | undefined;
69
+ readonly code = "CONFIGURATION_ERROR";
70
+ readonly severity = ErrorSeverity.HIGH;
71
+ readonly category = ErrorCategory.CONFIGURATION;
72
+ constructor(message: string, configKey?: string | undefined, options?: {
73
+ context?: Record<string, unknown>;
74
+ suggestions?: string[];
75
+ });
76
+ }
77
+ export declare class FileSystemError extends AppError {
78
+ readonly path: string;
79
+ readonly operation: 'read' | 'write' | 'delete' | 'create' | 'access';
80
+ readonly code = "FILESYSTEM_ERROR";
81
+ readonly severity = ErrorSeverity.MEDIUM;
82
+ readonly category = ErrorCategory.FILESYSTEM;
83
+ constructor(message: string, path: string, operation: 'read' | 'write' | 'delete' | 'create' | 'access', options?: {
84
+ context?: Record<string, unknown>;
85
+ suggestions?: string[];
86
+ originalError?: Error;
87
+ });
88
+ }
89
+ export declare class NetworkError extends AppError {
90
+ readonly url?: string | undefined;
91
+ readonly statusCode?: number | undefined;
92
+ readonly code = "NETWORK_ERROR";
93
+ readonly severity = ErrorSeverity.MEDIUM;
94
+ readonly category = ErrorCategory.NETWORK;
95
+ constructor(message: string, url?: string | undefined, statusCode?: number | undefined, options?: {
96
+ context?: Record<string, unknown>;
97
+ suggestions?: string[];
98
+ originalError?: Error;
99
+ });
100
+ }
101
+ export declare class PluginError extends AppError {
102
+ readonly pluginName: string;
103
+ readonly code = "PLUGIN_ERROR";
104
+ readonly severity = ErrorSeverity.MEDIUM;
105
+ readonly category = ErrorCategory.PLUGIN;
106
+ constructor(message: string, pluginName: string, options?: {
107
+ context?: Record<string, unknown>;
108
+ suggestions?: string[];
109
+ originalError?: Error;
110
+ });
111
+ }
112
+ export declare class AuthenticationError extends AppError {
113
+ readonly code = "AUTHENTICATION_ERROR";
114
+ readonly severity = ErrorSeverity.HIGH;
115
+ readonly category = ErrorCategory.AUTHENTICATION;
116
+ constructor(message?: string, options?: {
117
+ context?: Record<string, unknown>;
118
+ suggestions?: string[];
119
+ });
120
+ }
121
+ export declare class PermissionError extends AppError {
122
+ readonly resource: string;
123
+ readonly requiredPermission?: string | undefined;
124
+ readonly code = "PERMISSION_ERROR";
125
+ readonly severity = ErrorSeverity.HIGH;
126
+ readonly category = ErrorCategory.PERMISSION;
127
+ constructor(message: string, resource: string, requiredPermission?: string | undefined, options?: {
128
+ context?: Record<string, unknown>;
129
+ suggestions?: string[];
130
+ });
131
+ }
132
+ export type Result<T, E extends AppError = AppError> = {
133
+ success: true;
134
+ data: T;
135
+ } | {
136
+ success: false;
137
+ error: E;
138
+ };
139
+ export declare function success<T>(data: T): Result<T>;
140
+ export declare function failure<E extends AppError>(error: E): Result<never, E>;
141
+ export declare function isSuccess<T, E extends AppError>(result: Result<T, E>): result is {
142
+ success: true;
143
+ data: T;
144
+ };
145
+ export declare function isFailure<T, E extends AppError>(result: Result<T, E>): result is {
146
+ success: false;
147
+ error: E;
148
+ };
149
+ export interface ErrorRecoveryStrategy<E extends AppError = AppError> {
150
+ canRecover(error: E): boolean;
151
+ recover(error: E): Promise<void>;
152
+ }
153
+ export declare class RetryStrategy implements ErrorRecoveryStrategy {
154
+ private maxRetries;
155
+ private delayMs;
156
+ private backoff;
157
+ constructor(maxRetries?: number, delayMs?: number, backoff?: boolean);
158
+ canRecover(error: AppError): boolean;
159
+ recover(_error: AppError): Promise<void>;
160
+ }
161
+ export declare class ErrorHandler {
162
+ private strategies;
163
+ registerStrategy(strategy: ErrorRecoveryStrategy): void;
164
+ handle(error: unknown): Promise<void>;
165
+ private normalizeError;
166
+ }
167
+ export declare const errorHandler: ErrorHandler;
168
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ export var ErrorSeverity;
2
+ (function (ErrorSeverity) {
3
+ ErrorSeverity["LOW"] = "low";
4
+ ErrorSeverity["MEDIUM"] = "medium";
5
+ ErrorSeverity["HIGH"] = "high";
6
+ ErrorSeverity["CRITICAL"] = "critical";
7
+ })(ErrorSeverity || (ErrorSeverity = {}));
8
+ export var ErrorCategory;
9
+ (function (ErrorCategory) {
10
+ ErrorCategory["VALIDATION"] = "VALIDATION";
11
+ ErrorCategory["CONFIGURATION"] = "CONFIGURATION";
12
+ ErrorCategory["FILESYSTEM"] = "FILESYSTEM";
13
+ ErrorCategory["NETWORK"] = "NETWORK";
14
+ ErrorCategory["COMMAND"] = "COMMAND";
15
+ ErrorCategory["PLUGIN"] = "PLUGIN";
16
+ ErrorCategory["AUTHENTICATION"] = "AUTHENTICATION";
17
+ ErrorCategory["PERMISSION"] = "PERMISSION";
18
+ ErrorCategory["UNKNOWN"] = "UNKNOWN";
19
+ })(ErrorCategory || (ErrorCategory = {}));
20
+ export class AppError extends Error {
21
+ timestamp;
22
+ context;
23
+ suggestions;
24
+ originalError;
25
+ constructor(message, options) {
26
+ super(message);
27
+ this.name = this.constructor.name;
28
+ this.timestamp = new Date();
29
+ this.context = options?.context;
30
+ this.suggestions = options?.suggestions;
31
+ this.originalError = options?.originalError;
32
+ Error.captureStackTrace(this, this.constructor);
33
+ }
34
+ getUserMessage() {
35
+ let message = this.message;
36
+ if (this.suggestions && this.suggestions.length > 0) {
37
+ message += '\n\nSuggestions:';
38
+ this.suggestions.forEach((suggestion) => {
39
+ message += `\n • ${suggestion}`;
40
+ });
41
+ }
42
+ return message;
43
+ }
44
+ getDetailedReport() {
45
+ const report = [
46
+ `Error: ${this.name}`,
47
+ `Code: ${this.code}`,
48
+ `Message: ${this.message}`,
49
+ `Severity: ${this.severity}`,
50
+ `Category: ${this.category}`,
51
+ `Timestamp: ${this.timestamp.toISOString()}`,
52
+ ];
53
+ if (this.context) {
54
+ report.push(`Context: ${JSON.stringify(this.context, null, 2)}`);
55
+ }
56
+ if (this.suggestions && this.suggestions.length > 0) {
57
+ report.push(`Suggestions: ${this.suggestions.join(', ')}`);
58
+ }
59
+ if (this.stack) {
60
+ report.push(`Stack Trace:\n${this.stack}`);
61
+ }
62
+ return report.join('\n');
63
+ }
64
+ toJSON() {
65
+ return {
66
+ name: this.name,
67
+ code: this.code,
68
+ message: this.message,
69
+ severity: this.severity,
70
+ category: this.category,
71
+ timestamp: this.timestamp.toISOString(),
72
+ context: this.context,
73
+ suggestions: this.suggestions,
74
+ stack: this.stack,
75
+ };
76
+ }
77
+ }
78
+ export class CommandError extends AppError {
79
+ commandName;
80
+ code = 'COMMAND_ERROR';
81
+ severity = ErrorSeverity.MEDIUM;
82
+ category = ErrorCategory.COMMAND;
83
+ constructor(message, commandName, options) {
84
+ super(message, options);
85
+ this.commandName = commandName;
86
+ }
87
+ }
88
+ export class ValidationError extends AppError {
89
+ field;
90
+ value;
91
+ code = 'VALIDATION_ERROR';
92
+ severity = ErrorSeverity.LOW;
93
+ category = ErrorCategory.VALIDATION;
94
+ constructor(message, field, value, options) {
95
+ super(message, options);
96
+ this.field = field;
97
+ this.value = value;
98
+ }
99
+ }
100
+ export class ConfigurationError extends AppError {
101
+ configKey;
102
+ code = 'CONFIGURATION_ERROR';
103
+ severity = ErrorSeverity.HIGH;
104
+ category = ErrorCategory.CONFIGURATION;
105
+ constructor(message, configKey, options) {
106
+ const defaultSuggestions = [
107
+ 'Check your configuration file for syntax errors',
108
+ 'Ensure all required configuration values are set',
109
+ 'Run "neo config validate" to check your configuration',
110
+ ];
111
+ super(message, {
112
+ ...options,
113
+ suggestions: options?.suggestions || defaultSuggestions,
114
+ });
115
+ this.configKey = configKey;
116
+ }
117
+ }
118
+ export class FileSystemError extends AppError {
119
+ path;
120
+ operation;
121
+ code = 'FILESYSTEM_ERROR';
122
+ severity = ErrorSeverity.MEDIUM;
123
+ category = ErrorCategory.FILESYSTEM;
124
+ constructor(message, path, operation, options) {
125
+ super(message, options);
126
+ this.path = path;
127
+ this.operation = operation;
128
+ }
129
+ }
130
+ export class NetworkError extends AppError {
131
+ url;
132
+ statusCode;
133
+ code = 'NETWORK_ERROR';
134
+ severity = ErrorSeverity.MEDIUM;
135
+ category = ErrorCategory.NETWORK;
136
+ constructor(message, url, statusCode, options) {
137
+ const defaultSuggestions = [
138
+ 'Check your internet connection',
139
+ 'Verify the API endpoint is correct',
140
+ 'Check if you need to configure a proxy',
141
+ ];
142
+ super(message, {
143
+ ...options,
144
+ suggestions: options?.suggestions || defaultSuggestions,
145
+ });
146
+ this.url = url;
147
+ this.statusCode = statusCode;
148
+ }
149
+ }
150
+ export class PluginError extends AppError {
151
+ pluginName;
152
+ code = 'PLUGIN_ERROR';
153
+ severity = ErrorSeverity.MEDIUM;
154
+ category = ErrorCategory.PLUGIN;
155
+ constructor(message, pluginName, options) {
156
+ super(message, options);
157
+ this.pluginName = pluginName;
158
+ }
159
+ }
160
+ export class AuthenticationError extends AppError {
161
+ code = 'AUTHENTICATION_ERROR';
162
+ severity = ErrorSeverity.HIGH;
163
+ category = ErrorCategory.AUTHENTICATION;
164
+ constructor(message = 'Authentication failed', options) {
165
+ const defaultSuggestions = [
166
+ 'Check your credentials',
167
+ 'Run "neo auth login" to authenticate',
168
+ 'Verify your API token is still valid',
169
+ ];
170
+ super(message, {
171
+ ...options,
172
+ suggestions: options?.suggestions || defaultSuggestions,
173
+ });
174
+ }
175
+ }
176
+ export class PermissionError extends AppError {
177
+ resource;
178
+ requiredPermission;
179
+ code = 'PERMISSION_ERROR';
180
+ severity = ErrorSeverity.HIGH;
181
+ category = ErrorCategory.PERMISSION;
182
+ constructor(message, resource, requiredPermission, options) {
183
+ super(message, options);
184
+ this.resource = resource;
185
+ this.requiredPermission = requiredPermission;
186
+ }
187
+ }
188
+ export function success(data) {
189
+ return { success: true, data };
190
+ }
191
+ export function failure(error) {
192
+ return { success: false, error };
193
+ }
194
+ export function isSuccess(result) {
195
+ return result.success === true;
196
+ }
197
+ export function isFailure(result) {
198
+ return result.success === false;
199
+ }
200
+ export class RetryStrategy {
201
+ maxRetries;
202
+ delayMs;
203
+ backoff;
204
+ constructor(maxRetries = 3, delayMs = 1000, backoff = true) {
205
+ this.maxRetries = maxRetries;
206
+ this.delayMs = delayMs;
207
+ this.backoff = backoff;
208
+ }
209
+ canRecover(error) {
210
+ return error.category === ErrorCategory.NETWORK || error.category === ErrorCategory.FILESYSTEM;
211
+ }
212
+ async recover(_error) {
213
+ for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
214
+ const delay = this.backoff ? this.delayMs * attempt : this.delayMs;
215
+ await new Promise((resolve) => setTimeout(resolve, delay));
216
+ console.log(`Retry attempt ${attempt} after ${delay}ms`);
217
+ }
218
+ }
219
+ }
220
+ export class ErrorHandler {
221
+ strategies = [];
222
+ registerStrategy(strategy) {
223
+ this.strategies.push(strategy);
224
+ }
225
+ async handle(error) {
226
+ const appError = this.normalizeError(error);
227
+ for (const strategy of this.strategies) {
228
+ if (strategy.canRecover(appError)) {
229
+ try {
230
+ await strategy.recover(appError);
231
+ return;
232
+ }
233
+ catch {
234
+ continue;
235
+ }
236
+ }
237
+ }
238
+ console.error(appError.getDetailedReport());
239
+ process.exit(1);
240
+ }
241
+ normalizeError(error) {
242
+ if (error instanceof AppError) {
243
+ return error;
244
+ }
245
+ if (error instanceof Error) {
246
+ return new (class extends AppError {
247
+ code = 'UNKNOWN_ERROR';
248
+ severity = ErrorSeverity.HIGH;
249
+ category = ErrorCategory.UNKNOWN;
250
+ })(error.message, { originalError: error });
251
+ }
252
+ return new (class extends AppError {
253
+ code = 'UNKNOWN_ERROR';
254
+ severity = ErrorSeverity.CRITICAL;
255
+ category = ErrorCategory.UNKNOWN;
256
+ })(String(error));
257
+ }
258
+ }
259
+ export const errorHandler = new ErrorHandler();
260
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"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"}