@wundr.io/cli 1.0.1 ā 1.0.4
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/dist/ai/ai-service.d.ts +152 -0
- package/dist/ai/ai-service.d.ts.map +1 -0
- package/dist/ai/ai-service.js +430 -0
- package/dist/ai/ai-service.js.map +1 -0
- package/dist/ai/claude-client.d.ts +130 -0
- package/dist/ai/claude-client.d.ts.map +1 -0
- package/dist/ai/claude-client.js +340 -0
- package/dist/ai/claude-client.js.map +1 -0
- package/dist/ai/conversation-manager.d.ts +164 -0
- package/dist/ai/conversation-manager.d.ts.map +1 -0
- package/dist/ai/conversation-manager.js +614 -0
- package/dist/ai/conversation-manager.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/cli.d.ts +36 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +192 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ai.d.ts +89 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +799 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/alignment.d.ts +78 -0
- package/dist/commands/alignment.d.ts.map +1 -0
- package/dist/commands/alignment.js +817 -0
- package/dist/commands/alignment.js.map +1 -0
- package/dist/commands/analyze-optimized.d.ts +14 -0
- package/dist/commands/analyze-optimized.d.ts.map +1 -0
- package/dist/commands/analyze-optimized.js +600 -0
- package/dist/commands/analyze-optimized.js.map +1 -0
- package/dist/commands/analyze.d.ts +65 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +435 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/batch.d.ts +71 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +738 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/chat.d.ts +71 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +674 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/claude-init.d.ts +28 -0
- package/dist/commands/claude-init.d.ts.map +1 -0
- package/dist/commands/claude-init.js +591 -0
- package/dist/commands/claude-init.js.map +1 -0
- package/dist/commands/claude-setup.d.ts +119 -0
- package/dist/commands/claude-setup.d.ts.map +1 -0
- package/dist/commands/claude-setup.js +1073 -0
- package/dist/commands/claude-setup.js.map +1 -0
- package/dist/commands/computer-setup-commands.d.ts +53 -0
- package/dist/commands/computer-setup-commands.d.ts.map +1 -0
- package/dist/commands/computer-setup-commands.js +705 -0
- package/dist/commands/computer-setup-commands.js.map +1 -0
- package/dist/commands/computer-setup.d.ts +7 -0
- package/dist/commands/computer-setup.d.ts.map +1 -0
- package/dist/commands/computer-setup.js +849 -0
- package/dist/commands/computer-setup.js.map +1 -0
- package/dist/commands/create-command.d.ts +7 -0
- package/dist/commands/create-command.d.ts.map +1 -0
- package/dist/commands/create-command.js +158 -0
- package/dist/commands/create-command.js.map +1 -0
- package/dist/commands/create.d.ts +74 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +556 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/dashboard.d.ts +91 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +538 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/govern.d.ts +70 -0
- package/dist/commands/govern.d.ts.map +1 -0
- package/dist/commands/govern.js +481 -0
- package/dist/commands/govern.js.map +1 -0
- package/dist/commands/governance.d.ts +17 -0
- package/dist/commands/governance.d.ts.map +1 -0
- package/dist/commands/governance.js +703 -0
- package/dist/commands/governance.js.map +1 -0
- package/dist/commands/guardian.d.ts +20 -0
- package/dist/commands/guardian.d.ts.map +1 -0
- package/dist/commands/guardian.js +597 -0
- package/dist/commands/guardian.js.map +1 -0
- package/dist/commands/init.d.ts +59 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +650 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/performance-optimizer.d.ts +30 -0
- package/dist/commands/performance-optimizer.d.ts.map +1 -0
- package/dist/commands/performance-optimizer.js +650 -0
- package/dist/commands/performance-optimizer.js.map +1 -0
- package/dist/commands/plugins.d.ts +87 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +685 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/rag.d.ts +7 -0
- package/dist/commands/rag.d.ts.map +1 -0
- package/dist/commands/rag.js +748 -0
- package/dist/commands/rag.js.map +1 -0
- package/dist/commands/session.d.ts +41 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +441 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +29 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +397 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/test-init.d.ts +9 -0
- package/dist/commands/test-init.d.ts.map +1 -0
- package/dist/commands/test-init.js +222 -0
- package/dist/commands/test-init.js.map +1 -0
- package/dist/commands/test.d.ts +25 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +217 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/vp.d.ts +7 -0
- package/dist/commands/vp.d.ts.map +1 -0
- package/dist/commands/vp.js +571 -0
- package/dist/commands/vp.js.map +1 -0
- package/dist/commands/watch.d.ts +76 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +613 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/worktree.d.ts +63 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +774 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/context/context-manager.d.ts +155 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +383 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +6 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/session-manager.d.ts +207 -0
- package/dist/context/session-manager.d.ts.map +1 -0
- package/dist/context/session-manager.js +686 -0
- package/dist/context/session-manager.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive/interactive-mode.d.ts +76 -0
- package/dist/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/interactive/interactive-mode.js +732 -0
- package/dist/interactive/interactive-mode.js.map +1 -0
- package/dist/nlp/command-mapper.d.ts +174 -0
- package/dist/nlp/command-mapper.d.ts.map +1 -0
- package/dist/nlp/command-mapper.js +624 -0
- package/dist/nlp/command-mapper.js.map +1 -0
- package/dist/nlp/command-parser.d.ts +106 -0
- package/dist/nlp/command-parser.d.ts.map +1 -0
- package/dist/nlp/command-parser.js +417 -0
- package/dist/nlp/command-parser.js.map +1 -0
- package/dist/nlp/index.d.ts +5 -0
- package/dist/nlp/index.d.ts.map +1 -0
- package/dist/nlp/index.js +8 -0
- package/dist/nlp/index.js.map +1 -0
- package/dist/nlp/intent-classifier.d.ts +59 -0
- package/dist/nlp/intent-classifier.d.ts.map +1 -0
- package/dist/nlp/intent-classifier.js +384 -0
- package/dist/nlp/intent-classifier.js.map +1 -0
- package/dist/nlp/intent-parser.d.ts +152 -0
- package/dist/nlp/intent-parser.d.ts.map +1 -0
- package/dist/nlp/intent-parser.js +744 -0
- package/dist/nlp/intent-parser.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +120 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/plugins/plugin-manager.js +595 -0
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/types/index.d.ts +224 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/backup-rollback-manager.d.ts +72 -0
- package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
- package/dist/utils/backup-rollback-manager.js +289 -0
- package/dist/utils/backup-rollback-manager.js.map +1 -0
- package/dist/utils/claude-config-installer.d.ts +94 -0
- package/dist/utils/claude-config-installer.d.ts.map +1 -0
- package/dist/utils/claude-config-installer.js +628 -0
- package/dist/utils/claude-config-installer.js.map +1 -0
- package/dist/utils/config-manager.d.ts +73 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +339 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/error-handler.d.ts +46 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +169 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +105 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +6 -4
- package/src/ai/ai-service.ts +22 -19
- package/src/ai/claude-client.ts +20 -16
- package/src/ai/conversation-manager.ts +37 -30
- package/src/cli.ts +46 -17
- package/src/commands/ai.ts +196 -88
- package/src/commands/alignment.ts +1212 -0
- package/src/commands/analyze-optimized.ts +394 -89
- package/src/commands/analyze.ts +22 -20
- package/src/commands/batch.ts +41 -38
- package/src/commands/chat.ts +37 -34
- package/src/commands/claude-init.ts +38 -30
- package/src/commands/claude-setup.ts +692 -97
- package/src/commands/computer-setup-commands.ts +45 -39
- package/src/commands/computer-setup.ts +490 -20
- package/src/commands/create-command.ts +7 -7
- package/src/commands/create.ts +36 -33
- package/src/commands/dashboard.ts +33 -28
- package/src/commands/govern.ts +34 -29
- package/src/commands/governance.ts +1005 -0
- package/src/commands/guardian.ts +887 -0
- package/src/commands/init.ts +112 -22
- package/src/commands/performance-optimizer.ts +48 -42
- package/src/commands/plugins.ts +35 -32
- package/src/commands/project-update.ts +1053 -0
- package/src/commands/rag.ts +904 -0
- package/src/commands/session.ts +631 -0
- package/src/commands/setup.ts +35 -31
- package/src/commands/test-init.ts +6 -5
- package/src/commands/test.ts +7 -6
- package/src/commands/vp.ts +762 -0
- package/src/commands/watch.ts +44 -33
- package/src/commands/worktree.ts +1057 -0
- package/src/context/context-manager.ts +15 -12
- package/src/context/session-manager.ts +51 -40
- package/src/index.ts +7 -6
- package/src/interactive/interactive-mode.ts +25 -18
- package/src/lib/conflict-resolution.ts +28 -0
- package/src/lib/merge-strategy.ts +28 -0
- package/src/lib/safety-mechanisms.ts +47 -0
- package/src/lib/state-detection.ts +28 -0
- package/src/nlp/command-mapper.ts +35 -30
- package/src/nlp/command-parser.ts +20 -17
- package/src/nlp/intent-classifier.ts +7 -7
- package/src/nlp/intent-parser.ts +61 -49
- package/src/plugins/plugin-manager.ts +27 -23
- package/src/types/index.ts +1 -1
- package/src/types/modules.d.ts +1 -0
- package/src/utils/backup-rollback-manager.ts +13 -11
- package/src/utils/claude-config-installer.ts +18 -16
- package/src/utils/config-manager.ts +12 -9
- package/src/utils/error-handler.ts +5 -3
- package/src/utils/logger.ts +35 -12
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { WundrConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration management system
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConfigManager {
|
|
6
|
+
private config;
|
|
7
|
+
private configPath;
|
|
8
|
+
private userConfigDir;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Load configuration from file or create default
|
|
12
|
+
*/
|
|
13
|
+
loadConfig(customPath?: string): Promise<WundrConfig>;
|
|
14
|
+
/**
|
|
15
|
+
* Save current configuration to file
|
|
16
|
+
*/
|
|
17
|
+
saveConfig(customPath?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Get current configuration
|
|
20
|
+
*/
|
|
21
|
+
getConfig(): WundrConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Update configuration values
|
|
24
|
+
*/
|
|
25
|
+
updateConfig(updates: Partial<WundrConfig>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Validate configuration against schema
|
|
28
|
+
*/
|
|
29
|
+
validateConfig(config?: any): {
|
|
30
|
+
valid: boolean;
|
|
31
|
+
errors: string[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Get configuration value by path
|
|
35
|
+
*/
|
|
36
|
+
get<T>(path: string, defaultValue?: T): T | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Set configuration value by path
|
|
39
|
+
*/
|
|
40
|
+
set(path: string, value: any): void;
|
|
41
|
+
/**
|
|
42
|
+
* Create default configuration
|
|
43
|
+
*/
|
|
44
|
+
private createDefaultConfig;
|
|
45
|
+
/**
|
|
46
|
+
* Merge environment variables into configuration
|
|
47
|
+
*/
|
|
48
|
+
private mergeEnvironmentVariables;
|
|
49
|
+
/**
|
|
50
|
+
* Get API key for AI provider with fallback mechanisms
|
|
51
|
+
*/
|
|
52
|
+
getAIApiKey(provider?: string): string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Set API key securely in config
|
|
55
|
+
*/
|
|
56
|
+
setAIApiKey(apiKey: string, provider?: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Check if AI is properly configured
|
|
59
|
+
*/
|
|
60
|
+
isAIConfigured(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Get config file paths
|
|
63
|
+
*/
|
|
64
|
+
getConfigPaths(): {
|
|
65
|
+
user: string;
|
|
66
|
+
project: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Merge project config with user config
|
|
70
|
+
*/
|
|
71
|
+
loadProjectConfig(): Promise<WundrConfig>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAqD5C;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;;IAO9B;;OAEG;IACG,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiC3D;;OAEG;IACG,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpD;;OAEG;IACH,SAAS,IAAI,WAAW;IAOxB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAQjD;;OAEG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAmBlE;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAmBrD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAgCnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAwCjC;;OAEG;IACH,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAmBlD;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanE;;OAEG;IACH,cAAc,IAAI,OAAO;IAOzB;;OAEG;IACH,cAAc,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOnD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;CA4BhD"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigManager = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const os_1 = tslib_1.__importDefault(require("os"));
|
|
6
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const error_handler_1 = require("./error-handler");
|
|
10
|
+
const logger_1 = require("./logger");
|
|
11
|
+
// Zod schema for configuration validation
|
|
12
|
+
const WundrConfigSchema = zod_1.z.object({
|
|
13
|
+
version: zod_1.z.string(),
|
|
14
|
+
defaultMode: zod_1.z.enum(['cli', 'interactive', 'chat', 'tui']).default('cli'),
|
|
15
|
+
plugins: zod_1.z.array(zod_1.z.string()).default([]),
|
|
16
|
+
integrations: zod_1.z
|
|
17
|
+
.object({
|
|
18
|
+
github: zod_1.z
|
|
19
|
+
.object({
|
|
20
|
+
token: zod_1.z.string(),
|
|
21
|
+
owner: zod_1.z.string(),
|
|
22
|
+
repo: zod_1.z.string(),
|
|
23
|
+
webhooks: zod_1.z.boolean().optional(),
|
|
24
|
+
})
|
|
25
|
+
.optional(),
|
|
26
|
+
slack: zod_1.z
|
|
27
|
+
.object({
|
|
28
|
+
token: zod_1.z.string(),
|
|
29
|
+
channel: zod_1.z.string(),
|
|
30
|
+
webhooks: zod_1.z.boolean().optional(),
|
|
31
|
+
})
|
|
32
|
+
.optional(),
|
|
33
|
+
jira: zod_1.z
|
|
34
|
+
.object({
|
|
35
|
+
url: zod_1.z.string(),
|
|
36
|
+
email: zod_1.z.string(),
|
|
37
|
+
token: zod_1.z.string(),
|
|
38
|
+
})
|
|
39
|
+
.optional(),
|
|
40
|
+
})
|
|
41
|
+
.default({}),
|
|
42
|
+
ai: zod_1.z.object({
|
|
43
|
+
provider: zod_1.z.string().default('claude'),
|
|
44
|
+
model: zod_1.z.string().default('claude-3'),
|
|
45
|
+
apiKey: zod_1.z.string().optional(),
|
|
46
|
+
}),
|
|
47
|
+
analysis: zod_1.z.object({
|
|
48
|
+
patterns: zod_1.z
|
|
49
|
+
.array(zod_1.z.string())
|
|
50
|
+
.default(['**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx']),
|
|
51
|
+
excludes: zod_1.z
|
|
52
|
+
.array(zod_1.z.string())
|
|
53
|
+
.default(['**/node_modules/**', '**/dist/**', '**/build/**']),
|
|
54
|
+
maxDepth: zod_1.z.number().default(10),
|
|
55
|
+
}),
|
|
56
|
+
governance: zod_1.z.object({
|
|
57
|
+
rules: zod_1.z.array(zod_1.z.string()).default([]),
|
|
58
|
+
severity: zod_1.z.enum(['error', 'warning', 'info']).default('warning'),
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Configuration management system
|
|
63
|
+
*/
|
|
64
|
+
class ConfigManager {
|
|
65
|
+
config = null;
|
|
66
|
+
configPath;
|
|
67
|
+
userConfigDir;
|
|
68
|
+
constructor() {
|
|
69
|
+
this.userConfigDir = path_1.default.join(os_1.default.homedir(), '.wundr');
|
|
70
|
+
this.configPath = path_1.default.join(this.userConfigDir, 'config.json');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Load configuration from file or create default
|
|
74
|
+
*/
|
|
75
|
+
async loadConfig(customPath) {
|
|
76
|
+
const configFile = customPath || this.configPath;
|
|
77
|
+
try {
|
|
78
|
+
// Ensure config directory exists
|
|
79
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(configFile));
|
|
80
|
+
// Load existing config or create default
|
|
81
|
+
if (await fs_extra_1.default.pathExists(configFile)) {
|
|
82
|
+
const rawConfig = await fs_extra_1.default.readJson(configFile);
|
|
83
|
+
this.config = WundrConfigSchema.parse(rawConfig);
|
|
84
|
+
logger_1.logger.debug(`Loaded config from: ${configFile}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.config = this.createDefaultConfig();
|
|
88
|
+
await this.saveConfig();
|
|
89
|
+
logger_1.logger.info('Created default configuration');
|
|
90
|
+
}
|
|
91
|
+
// Merge with environment variables
|
|
92
|
+
this.config = this.mergeEnvironmentVariables(this.config);
|
|
93
|
+
return this.config;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
logger_1.logger.error('Failed to load configuration:', error);
|
|
97
|
+
throw error_handler_1.errorHandler.createError('WUNDR_CONFIG_INVALID', 'Failed to load or parse configuration file', { configPath: configFile }, true);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Save current configuration to file
|
|
102
|
+
*/
|
|
103
|
+
async saveConfig(customPath) {
|
|
104
|
+
if (!this.config) {
|
|
105
|
+
throw new Error('No configuration to save');
|
|
106
|
+
}
|
|
107
|
+
const configFile = customPath || this.configPath;
|
|
108
|
+
try {
|
|
109
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(configFile));
|
|
110
|
+
await fs_extra_1.default.writeJson(configFile, this.config, { spaces: 2 });
|
|
111
|
+
logger_1.logger.debug(`Saved config to: ${configFile}`);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
logger_1.logger.error('Failed to save configuration:', error);
|
|
115
|
+
throw error_handler_1.errorHandler.createError('WUNDR_CONFIG_INVALID', 'Failed to save configuration file', { configPath: configFile }, false);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get current configuration
|
|
120
|
+
*/
|
|
121
|
+
getConfig() {
|
|
122
|
+
if (!this.config) {
|
|
123
|
+
throw new Error('Configuration not loaded. Call loadConfig() first.');
|
|
124
|
+
}
|
|
125
|
+
return this.config;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Update configuration values
|
|
129
|
+
*/
|
|
130
|
+
updateConfig(updates) {
|
|
131
|
+
if (!this.config) {
|
|
132
|
+
throw new Error('Configuration not loaded. Call loadConfig() first.');
|
|
133
|
+
}
|
|
134
|
+
this.config = { ...this.config, ...updates };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate configuration against schema
|
|
138
|
+
*/
|
|
139
|
+
validateConfig(config) {
|
|
140
|
+
const configToValidate = config || this.config;
|
|
141
|
+
try {
|
|
142
|
+
WundrConfigSchema.parse(configToValidate);
|
|
143
|
+
return { valid: true, errors: [] };
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
147
|
+
return {
|
|
148
|
+
valid: false,
|
|
149
|
+
errors: error.issues.map(issue => `${issue.path.join('.')}: ${issue.message}`),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return { valid: false, errors: [error.message] };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get configuration value by path
|
|
157
|
+
*/
|
|
158
|
+
get(path, defaultValue) {
|
|
159
|
+
if (!this.config) {
|
|
160
|
+
return defaultValue;
|
|
161
|
+
}
|
|
162
|
+
const keys = path.split('.');
|
|
163
|
+
let value = this.config;
|
|
164
|
+
for (const key of keys) {
|
|
165
|
+
if (value && typeof value === 'object' && key in value) {
|
|
166
|
+
value = value[key];
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return defaultValue;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return value;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Set configuration value by path
|
|
176
|
+
*/
|
|
177
|
+
set(path, value) {
|
|
178
|
+
if (!this.config) {
|
|
179
|
+
throw new Error('Configuration not loaded. Call loadConfig() first.');
|
|
180
|
+
}
|
|
181
|
+
const keys = path.split('.');
|
|
182
|
+
let current = this.config;
|
|
183
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
184
|
+
const key = keys[i];
|
|
185
|
+
if (!key) {
|
|
186
|
+
throw new Error(`Invalid path: empty key at position ${i}`);
|
|
187
|
+
}
|
|
188
|
+
if (!current || typeof current !== 'object') {
|
|
189
|
+
throw new Error('Invalid path: cannot set property on non-object');
|
|
190
|
+
}
|
|
191
|
+
if (!current[key] || typeof current[key] !== 'object') {
|
|
192
|
+
current[key] = {};
|
|
193
|
+
}
|
|
194
|
+
current = current[key];
|
|
195
|
+
}
|
|
196
|
+
const finalKey = keys[keys.length - 1];
|
|
197
|
+
if (!finalKey) {
|
|
198
|
+
throw new Error('Invalid path: empty final key');
|
|
199
|
+
}
|
|
200
|
+
if (!finalKey || !current || typeof current !== 'object') {
|
|
201
|
+
throw new Error('Invalid path: cannot set property');
|
|
202
|
+
}
|
|
203
|
+
current[finalKey] = value;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create default configuration
|
|
207
|
+
*/
|
|
208
|
+
createDefaultConfig() {
|
|
209
|
+
return {
|
|
210
|
+
version: '1.0.0',
|
|
211
|
+
defaultMode: 'cli',
|
|
212
|
+
plugins: [],
|
|
213
|
+
integrations: {},
|
|
214
|
+
ai: {
|
|
215
|
+
provider: 'claude',
|
|
216
|
+
model: 'claude-3-opus-20240229',
|
|
217
|
+
},
|
|
218
|
+
analysis: {
|
|
219
|
+
patterns: ['**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx'],
|
|
220
|
+
excludes: ['**/node_modules/**', '**/dist/**', '**/build/**'],
|
|
221
|
+
maxDepth: 10,
|
|
222
|
+
},
|
|
223
|
+
governance: {
|
|
224
|
+
rules: [],
|
|
225
|
+
severity: 'warning',
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Merge environment variables into configuration
|
|
231
|
+
*/
|
|
232
|
+
mergeEnvironmentVariables(config) {
|
|
233
|
+
const envConfig = { ...config };
|
|
234
|
+
// AI API Key from environment
|
|
235
|
+
if (process.env['CLAUDE_API_KEY'] && !envConfig.ai.apiKey) {
|
|
236
|
+
envConfig.ai.apiKey = process.env['CLAUDE_API_KEY'];
|
|
237
|
+
}
|
|
238
|
+
if (process.env['OPENAI_API_KEY'] &&
|
|
239
|
+
envConfig.ai.provider === 'openai' &&
|
|
240
|
+
!envConfig.ai.apiKey) {
|
|
241
|
+
envConfig.ai.apiKey = process.env['OPENAI_API_KEY'];
|
|
242
|
+
}
|
|
243
|
+
// AI Provider and Model from environment
|
|
244
|
+
if (process.env['WUNDR_AI_PROVIDER']) {
|
|
245
|
+
envConfig.ai.provider = process.env['WUNDR_AI_PROVIDER'];
|
|
246
|
+
}
|
|
247
|
+
if (process.env['WUNDR_AI_MODEL']) {
|
|
248
|
+
envConfig.ai.model = process.env['WUNDR_AI_MODEL'];
|
|
249
|
+
}
|
|
250
|
+
// GitHub integration
|
|
251
|
+
if (process.env['GITHUB_TOKEN']) {
|
|
252
|
+
envConfig.integrations.github = envConfig.integrations.github || {
|
|
253
|
+
token: process.env['GITHUB_TOKEN'],
|
|
254
|
+
owner: process.env['GITHUB_OWNER'] || '',
|
|
255
|
+
repo: process.env['GITHUB_REPO'] || '',
|
|
256
|
+
};
|
|
257
|
+
if (!envConfig.integrations.github.token) {
|
|
258
|
+
envConfig.integrations.github.token = process.env['GITHUB_TOKEN'];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return envConfig;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get API key for AI provider with fallback mechanisms
|
|
265
|
+
*/
|
|
266
|
+
getAIApiKey(provider) {
|
|
267
|
+
const currentProvider = provider || this.config?.ai?.provider || 'claude';
|
|
268
|
+
// First check config
|
|
269
|
+
if (this.config?.ai?.apiKey) {
|
|
270
|
+
return this.config.ai.apiKey;
|
|
271
|
+
}
|
|
272
|
+
// Then check environment variables based on provider
|
|
273
|
+
switch (currentProvider.toLowerCase()) {
|
|
274
|
+
case 'claude':
|
|
275
|
+
return process.env['CLAUDE_API_KEY'];
|
|
276
|
+
case 'openai':
|
|
277
|
+
return process.env['OPENAI_API_KEY'];
|
|
278
|
+
default:
|
|
279
|
+
return process.env['CLAUDE_API_KEY']; // Default fallback
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Set API key securely in config
|
|
284
|
+
*/
|
|
285
|
+
async setAIApiKey(apiKey, provider) {
|
|
286
|
+
if (!this.config) {
|
|
287
|
+
await this.loadConfig();
|
|
288
|
+
}
|
|
289
|
+
if (provider && provider !== this.config.ai.provider) {
|
|
290
|
+
this.config.ai.provider = provider;
|
|
291
|
+
}
|
|
292
|
+
this.config.ai.apiKey = apiKey;
|
|
293
|
+
await this.saveConfig();
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Check if AI is properly configured
|
|
297
|
+
*/
|
|
298
|
+
isAIConfigured() {
|
|
299
|
+
const apiKey = this.getAIApiKey();
|
|
300
|
+
const provider = this.config?.ai?.provider;
|
|
301
|
+
return !!(apiKey && provider);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get config file paths
|
|
305
|
+
*/
|
|
306
|
+
getConfigPaths() {
|
|
307
|
+
return {
|
|
308
|
+
user: this.configPath,
|
|
309
|
+
project: path_1.default.join(process.cwd(), 'wundr.config.json'),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Merge project config with user config
|
|
314
|
+
*/
|
|
315
|
+
async loadProjectConfig() {
|
|
316
|
+
const projectConfigPath = path_1.default.join(process.cwd(), 'wundr.config.json');
|
|
317
|
+
// Load user config first
|
|
318
|
+
await this.loadConfig();
|
|
319
|
+
// Merge with project config if it exists
|
|
320
|
+
if (await fs_extra_1.default.pathExists(projectConfigPath)) {
|
|
321
|
+
try {
|
|
322
|
+
const projectConfig = await fs_extra_1.default.readJson(projectConfigPath);
|
|
323
|
+
const validatedProjectConfig = WundrConfigSchema.partial().parse(projectConfig);
|
|
324
|
+
this.config = {
|
|
325
|
+
...this.config,
|
|
326
|
+
...validatedProjectConfig,
|
|
327
|
+
};
|
|
328
|
+
logger_1.logger.debug(`Merged project config from: ${projectConfigPath}`);
|
|
329
|
+
}
|
|
330
|
+
catch (error) {
|
|
331
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
332
|
+
logger_1.logger.warn(`Failed to load project config: ${message}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return this.config;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
exports.ConfigManager = ConfigManager;
|
|
339
|
+
//# sourceMappingURL=config-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WundrError } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Centralized error handling system
|
|
4
|
+
*/
|
|
5
|
+
declare class ErrorHandler {
|
|
6
|
+
private errorCodes;
|
|
7
|
+
/**
|
|
8
|
+
* Handle various types of errors with appropriate formatting
|
|
9
|
+
*/
|
|
10
|
+
handle(error: Error | WundrError): void;
|
|
11
|
+
/**
|
|
12
|
+
* Check if error is a known Wundr error
|
|
13
|
+
*/
|
|
14
|
+
private isKnownError;
|
|
15
|
+
/**
|
|
16
|
+
* Check if error is a system/Node.js error
|
|
17
|
+
*/
|
|
18
|
+
private isSystemError;
|
|
19
|
+
/**
|
|
20
|
+
* Handle known Wundr errors
|
|
21
|
+
*/
|
|
22
|
+
private handleKnownError;
|
|
23
|
+
/**
|
|
24
|
+
* Handle system errors
|
|
25
|
+
*/
|
|
26
|
+
private handleSystemError;
|
|
27
|
+
/**
|
|
28
|
+
* Handle unknown errors
|
|
29
|
+
*/
|
|
30
|
+
private handleUnknownError;
|
|
31
|
+
/**
|
|
32
|
+
* Suggest recovery actions based on error code
|
|
33
|
+
*/
|
|
34
|
+
private suggestRecoveryActions;
|
|
35
|
+
/**
|
|
36
|
+
* Create a standardized Wundr error
|
|
37
|
+
*/
|
|
38
|
+
createError(code: string, message: string, context?: Record<string, any>, recoverable?: boolean): WundrError;
|
|
39
|
+
/**
|
|
40
|
+
* Wrap async operations with error handling
|
|
41
|
+
*/
|
|
42
|
+
wrap<T>(operation: () => Promise<T>, context?: string): Promise<T>;
|
|
43
|
+
}
|
|
44
|
+
export declare const errorHandler: ErrorHandler;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,UAAU,CAaf;IAEH;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI;IAevC;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqC9B;;OAEG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,WAAW,UAAQ,GAClB,UAAU;IAQb;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAUzE;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorHandler = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
const logger_1 = require("./logger");
|
|
7
|
+
/**
|
|
8
|
+
* Centralized error handling system
|
|
9
|
+
*/
|
|
10
|
+
class ErrorHandler {
|
|
11
|
+
errorCodes = new Map([
|
|
12
|
+
['ENOENT', 'File or directory not found'],
|
|
13
|
+
['EACCES', 'Permission denied'],
|
|
14
|
+
['EEXIST', 'File or directory already exists'],
|
|
15
|
+
['ENOTDIR', 'Not a directory'],
|
|
16
|
+
['EISDIR', 'Is a directory'],
|
|
17
|
+
['EMFILE', 'Too many open files'],
|
|
18
|
+
['ENOTFOUND', 'Command or resource not found'],
|
|
19
|
+
['WUNDR_CONFIG_INVALID', 'Invalid configuration file'],
|
|
20
|
+
['WUNDR_PLUGIN_LOAD_FAILED', 'Failed to load plugin'],
|
|
21
|
+
['WUNDR_COMMAND_FAILED', 'Command execution failed'],
|
|
22
|
+
['WUNDR_ANALYSIS_FAILED', 'Analysis operation failed'],
|
|
23
|
+
['WUNDR_NETWORK_ERROR', 'Network operation failed'],
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* Handle various types of errors with appropriate formatting
|
|
27
|
+
*/
|
|
28
|
+
handle(error) {
|
|
29
|
+
const wundrError = error;
|
|
30
|
+
// Log the raw error in debug mode
|
|
31
|
+
logger_1.logger.debug('Raw error:', error);
|
|
32
|
+
if (this.isKnownError(wundrError)) {
|
|
33
|
+
this.handleKnownError(wundrError);
|
|
34
|
+
}
|
|
35
|
+
else if (this.isSystemError(error)) {
|
|
36
|
+
this.handleSystemError(error);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.handleUnknownError(error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if error is a known Wundr error
|
|
44
|
+
*/
|
|
45
|
+
isKnownError(error) {
|
|
46
|
+
return !!error.code && error.code.startsWith('WUNDR_');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if error is a system/Node.js error
|
|
50
|
+
*/
|
|
51
|
+
isSystemError(error) {
|
|
52
|
+
return 'code' in error && typeof error.code === 'string';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Handle known Wundr errors
|
|
56
|
+
*/
|
|
57
|
+
handleKnownError(error) {
|
|
58
|
+
const description = this.errorCodes.get(error.code || '') || 'Unknown error';
|
|
59
|
+
console.error(chalk_1.default.red('ā Wundr Error'));
|
|
60
|
+
console.error(chalk_1.default.red(` Code: ${error.code}`));
|
|
61
|
+
console.error(chalk_1.default.red(` Message: ${error.message}`));
|
|
62
|
+
console.error(chalk_1.default.gray(` Description: ${description}`));
|
|
63
|
+
if (error.context) {
|
|
64
|
+
console.error(chalk_1.default.gray(' Context:'));
|
|
65
|
+
Object.entries(error.context).forEach(([key, value]) => {
|
|
66
|
+
console.error(chalk_1.default.gray(` ${key}: ${value}`));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (error.recoverable) {
|
|
70
|
+
console.error(chalk_1.default.yellow('\nš” This error might be recoverable. Try:'));
|
|
71
|
+
this.suggestRecoveryActions(error.code || '');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Handle system errors
|
|
76
|
+
*/
|
|
77
|
+
handleSystemError(error) {
|
|
78
|
+
const description = this.errorCodes.get(error.code) || 'System error';
|
|
79
|
+
console.error(chalk_1.default.red('ā System Error'));
|
|
80
|
+
console.error(chalk_1.default.red(` Code: ${error.code}`));
|
|
81
|
+
console.error(chalk_1.default.red(` Message: ${error.message}`));
|
|
82
|
+
console.error(chalk_1.default.gray(` Description: ${description}`));
|
|
83
|
+
if (error.path) {
|
|
84
|
+
console.error(chalk_1.default.gray(` Path: ${error.path}`));
|
|
85
|
+
}
|
|
86
|
+
if (error.syscall) {
|
|
87
|
+
console.error(chalk_1.default.gray(` System Call: ${error.syscall}`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Handle unknown errors
|
|
92
|
+
*/
|
|
93
|
+
handleUnknownError(error) {
|
|
94
|
+
console.error(chalk_1.default.red('ā Unexpected Error'));
|
|
95
|
+
console.error(chalk_1.default.red(` Message: ${error.message}`));
|
|
96
|
+
if (error.stack) {
|
|
97
|
+
console.error(chalk_1.default.gray(' Stack Trace:'));
|
|
98
|
+
error.stack.split('\n').forEach(line => {
|
|
99
|
+
console.error(chalk_1.default.gray(` ${line}`));
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
console.error(chalk_1.default.yellow('\nš” This appears to be an unexpected error.'));
|
|
103
|
+
console.error(chalk_1.default.yellow(' Please report this issue with the above details.'));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Suggest recovery actions based on error code
|
|
107
|
+
*/
|
|
108
|
+
suggestRecoveryActions(code) {
|
|
109
|
+
const suggestions = {
|
|
110
|
+
WUNDR_CONFIG_INVALID: [
|
|
111
|
+
'⢠Check your wundr.config.json syntax',
|
|
112
|
+
'⢠Run `wundr init` to create a new configuration',
|
|
113
|
+
'⢠Validate your configuration with `wundr config validate`',
|
|
114
|
+
],
|
|
115
|
+
WUNDR_PLUGIN_LOAD_FAILED: [
|
|
116
|
+
'⢠Check if the plugin is properly installed',
|
|
117
|
+
'⢠Verify plugin compatibility with current Wundr version',
|
|
118
|
+
'⢠Run `wundr plugins list` to see available plugins',
|
|
119
|
+
],
|
|
120
|
+
WUNDR_COMMAND_FAILED: [
|
|
121
|
+
'⢠Check command syntax and arguments',
|
|
122
|
+
'⢠Verify you have necessary permissions',
|
|
123
|
+
'⢠Run with --verbose for more details',
|
|
124
|
+
],
|
|
125
|
+
ENOENT: [
|
|
126
|
+
'⢠Verify the file or directory path',
|
|
127
|
+
"⢠Check if you're in the correct directory",
|
|
128
|
+
'⢠Run `wundr init` if in a new project',
|
|
129
|
+
],
|
|
130
|
+
EACCES: [
|
|
131
|
+
'⢠Check file permissions',
|
|
132
|
+
'⢠Run with appropriate user privileges',
|
|
133
|
+
'⢠Verify directory access rights',
|
|
134
|
+
],
|
|
135
|
+
};
|
|
136
|
+
const actions = suggestions[code];
|
|
137
|
+
if (actions) {
|
|
138
|
+
actions.forEach(action => {
|
|
139
|
+
console.error(chalk_1.default.yellow(action));
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Create a standardized Wundr error
|
|
145
|
+
*/
|
|
146
|
+
createError(code, message, context, recoverable = false) {
|
|
147
|
+
const error = new Error(message);
|
|
148
|
+
error.code = code;
|
|
149
|
+
error.context = context;
|
|
150
|
+
error.recoverable = recoverable;
|
|
151
|
+
return error;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Wrap async operations with error handling
|
|
155
|
+
*/
|
|
156
|
+
async wrap(operation, context) {
|
|
157
|
+
try {
|
|
158
|
+
return await operation();
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (context) {
|
|
162
|
+
logger_1.logger.error(`Error in ${context}:`, error);
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.errorHandler = new ErrorHandler();
|
|
169
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|