@wundr.io/cli 1.0.12 → 1.0.14

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 (233) hide show
  1. package/dist/ai/ai-service.d.ts +152 -0
  2. package/dist/ai/ai-service.d.ts.map +1 -0
  3. package/dist/ai/ai-service.js +430 -0
  4. package/dist/ai/ai-service.js.map +1 -0
  5. package/dist/ai/claude-client.d.ts +130 -0
  6. package/dist/ai/claude-client.d.ts.map +1 -0
  7. package/dist/ai/claude-client.js +340 -0
  8. package/dist/ai/claude-client.js.map +1 -0
  9. package/dist/ai/conversation-manager.d.ts +164 -0
  10. package/dist/ai/conversation-manager.d.ts.map +1 -0
  11. package/dist/ai/conversation-manager.js +614 -0
  12. package/dist/ai/conversation-manager.js.map +1 -0
  13. package/dist/ai/index.d.ts +5 -0
  14. package/dist/ai/index.d.ts.map +1 -0
  15. package/dist/ai/index.js +8 -0
  16. package/dist/ai/index.js.map +1 -0
  17. package/dist/cli.d.ts +36 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +192 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/commands/ai.d.ts +89 -0
  22. package/dist/commands/ai.d.ts.map +1 -0
  23. package/dist/commands/ai.js +954 -0
  24. package/dist/commands/ai.js.map +1 -0
  25. package/dist/commands/alignment.d.ts +78 -0
  26. package/dist/commands/alignment.d.ts.map +1 -0
  27. package/dist/commands/alignment.js +817 -0
  28. package/dist/commands/alignment.js.map +1 -0
  29. package/dist/commands/analyze-optimized.d.ts +14 -0
  30. package/dist/commands/analyze-optimized.d.ts.map +1 -0
  31. package/dist/commands/analyze-optimized.js +609 -0
  32. package/dist/commands/analyze-optimized.js.map +1 -0
  33. package/dist/commands/analyze.d.ts +65 -0
  34. package/dist/commands/analyze.d.ts.map +1 -0
  35. package/dist/commands/analyze.js +435 -0
  36. package/dist/commands/analyze.js.map +1 -0
  37. package/dist/commands/batch.d.ts +93 -0
  38. package/dist/commands/batch.d.ts.map +1 -0
  39. package/dist/commands/batch.js +854 -0
  40. package/dist/commands/batch.js.map +1 -0
  41. package/dist/commands/chat.d.ts +72 -0
  42. package/dist/commands/chat.d.ts.map +1 -0
  43. package/dist/commands/chat.js +678 -0
  44. package/dist/commands/chat.js.map +1 -0
  45. package/dist/commands/claude-init.d.ts +28 -0
  46. package/dist/commands/claude-init.d.ts.map +1 -0
  47. package/dist/commands/claude-init.js +591 -0
  48. package/dist/commands/claude-init.js.map +1 -0
  49. package/dist/commands/claude-setup.d.ts +119 -0
  50. package/dist/commands/claude-setup.d.ts.map +1 -0
  51. package/dist/commands/claude-setup.js +1079 -0
  52. package/dist/commands/claude-setup.js.map +1 -0
  53. package/dist/commands/computer-setup.d.ts +8 -0
  54. package/dist/commands/computer-setup.d.ts.map +1 -0
  55. package/dist/commands/computer-setup.js +877 -0
  56. package/dist/commands/computer-setup.js.map +1 -0
  57. package/dist/commands/create-command.d.ts +7 -0
  58. package/dist/commands/create-command.d.ts.map +1 -0
  59. package/dist/commands/create-command.js +158 -0
  60. package/dist/commands/create-command.js.map +1 -0
  61. package/dist/commands/create.d.ts +74 -0
  62. package/dist/commands/create.d.ts.map +1 -0
  63. package/dist/commands/create.js +556 -0
  64. package/dist/commands/create.js.map +1 -0
  65. package/dist/commands/dashboard.d.ts +91 -0
  66. package/dist/commands/dashboard.d.ts.map +1 -0
  67. package/dist/commands/dashboard.js +538 -0
  68. package/dist/commands/dashboard.js.map +1 -0
  69. package/dist/commands/govern.d.ts +70 -0
  70. package/dist/commands/govern.d.ts.map +1 -0
  71. package/dist/commands/govern.js +481 -0
  72. package/dist/commands/govern.js.map +1 -0
  73. package/dist/commands/governance.d.ts +17 -0
  74. package/dist/commands/governance.d.ts.map +1 -0
  75. package/dist/commands/governance.js +703 -0
  76. package/dist/commands/governance.js.map +1 -0
  77. package/dist/commands/guardian.d.ts +20 -0
  78. package/dist/commands/guardian.d.ts.map +1 -0
  79. package/dist/commands/guardian.js +597 -0
  80. package/dist/commands/guardian.js.map +1 -0
  81. package/dist/commands/init.d.ts +59 -0
  82. package/dist/commands/init.d.ts.map +1 -0
  83. package/dist/commands/init.js +650 -0
  84. package/dist/commands/init.js.map +1 -0
  85. package/dist/commands/orchestrator.d.ts +7 -0
  86. package/dist/commands/orchestrator.d.ts.map +1 -0
  87. package/dist/commands/orchestrator.js +578 -0
  88. package/dist/commands/orchestrator.js.map +1 -0
  89. package/dist/commands/performance-optimizer.d.ts +30 -0
  90. package/dist/commands/performance-optimizer.d.ts.map +1 -0
  91. package/dist/commands/performance-optimizer.js +650 -0
  92. package/dist/commands/performance-optimizer.js.map +1 -0
  93. package/dist/commands/plugins.d.ts +87 -0
  94. package/dist/commands/plugins.d.ts.map +1 -0
  95. package/dist/commands/plugins.js +685 -0
  96. package/dist/commands/plugins.js.map +1 -0
  97. package/dist/commands/rag.d.ts +7 -0
  98. package/dist/commands/rag.d.ts.map +1 -0
  99. package/dist/commands/rag.js +751 -0
  100. package/dist/commands/rag.js.map +1 -0
  101. package/dist/commands/session.d.ts +41 -0
  102. package/dist/commands/session.d.ts.map +1 -0
  103. package/dist/commands/session.js +441 -0
  104. package/dist/commands/session.js.map +1 -0
  105. package/dist/commands/setup.d.ts +24 -0
  106. package/dist/commands/setup.d.ts.map +1 -0
  107. package/dist/commands/setup.js +172 -0
  108. package/dist/commands/setup.js.map +1 -0
  109. package/dist/commands/test-init.d.ts +9 -0
  110. package/dist/commands/test-init.d.ts.map +1 -0
  111. package/dist/commands/test-init.js +222 -0
  112. package/dist/commands/test-init.js.map +1 -0
  113. package/dist/commands/test.d.ts +25 -0
  114. package/dist/commands/test.d.ts.map +1 -0
  115. package/dist/commands/test.js +217 -0
  116. package/dist/commands/test.js.map +1 -0
  117. package/dist/commands/watch.d.ts +76 -0
  118. package/dist/commands/watch.d.ts.map +1 -0
  119. package/dist/commands/watch.js +613 -0
  120. package/dist/commands/watch.js.map +1 -0
  121. package/dist/commands/worktree.d.ts +63 -0
  122. package/dist/commands/worktree.d.ts.map +1 -0
  123. package/dist/commands/worktree.js +774 -0
  124. package/dist/commands/worktree.js.map +1 -0
  125. package/dist/context/context-manager.d.ts +155 -0
  126. package/dist/context/context-manager.d.ts.map +1 -0
  127. package/dist/context/context-manager.js +383 -0
  128. package/dist/context/context-manager.js.map +1 -0
  129. package/dist/context/index.d.ts +3 -0
  130. package/dist/context/index.d.ts.map +1 -0
  131. package/dist/context/index.js +6 -0
  132. package/dist/context/index.js.map +1 -0
  133. package/dist/context/session-manager.d.ts +207 -0
  134. package/dist/context/session-manager.d.ts.map +1 -0
  135. package/dist/context/session-manager.js +686 -0
  136. package/dist/context/session-manager.js.map +1 -0
  137. package/dist/framework/command-interface.d.ts +349 -0
  138. package/dist/framework/command-interface.d.ts.map +1 -0
  139. package/dist/framework/command-interface.js +101 -0
  140. package/dist/framework/command-interface.js.map +1 -0
  141. package/dist/framework/command-registry.d.ts +173 -0
  142. package/dist/framework/command-registry.d.ts.map +1 -0
  143. package/dist/framework/command-registry.js +734 -0
  144. package/dist/framework/command-registry.js.map +1 -0
  145. package/dist/framework/completion-exporter.d.ts +79 -0
  146. package/dist/framework/completion-exporter.d.ts.map +1 -0
  147. package/dist/framework/completion-exporter.js +259 -0
  148. package/dist/framework/completion-exporter.js.map +1 -0
  149. package/dist/framework/debug-logger.d.ts +163 -0
  150. package/dist/framework/debug-logger.d.ts.map +1 -0
  151. package/dist/framework/debug-logger.js +373 -0
  152. package/dist/framework/debug-logger.js.map +1 -0
  153. package/dist/framework/error-handler.d.ts +196 -0
  154. package/dist/framework/error-handler.d.ts.map +1 -0
  155. package/dist/framework/error-handler.js +613 -0
  156. package/dist/framework/error-handler.js.map +1 -0
  157. package/dist/framework/help-generator.d.ts +78 -0
  158. package/dist/framework/help-generator.d.ts.map +1 -0
  159. package/dist/framework/help-generator.js +414 -0
  160. package/dist/framework/help-generator.js.map +1 -0
  161. package/dist/framework/index.d.ts +62 -0
  162. package/dist/framework/index.d.ts.map +1 -0
  163. package/dist/framework/index.js +95 -0
  164. package/dist/framework/index.js.map +1 -0
  165. package/dist/framework/interactive-repl.d.ts +138 -0
  166. package/dist/framework/interactive-repl.d.ts.map +1 -0
  167. package/dist/framework/interactive-repl.js +567 -0
  168. package/dist/framework/interactive-repl.js.map +1 -0
  169. package/dist/framework/output-formatter.d.ts +274 -0
  170. package/dist/framework/output-formatter.d.ts.map +1 -0
  171. package/dist/framework/output-formatter.js +545 -0
  172. package/dist/framework/output-formatter.js.map +1 -0
  173. package/dist/framework/progress-manager.d.ts +192 -0
  174. package/dist/framework/progress-manager.d.ts.map +1 -0
  175. package/dist/framework/progress-manager.js +408 -0
  176. package/dist/framework/progress-manager.js.map +1 -0
  177. package/dist/index.d.ts +8 -0
  178. package/dist/index.d.ts.map +1 -0
  179. package/dist/index.js +51 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/interactive/interactive-mode.d.ts +76 -0
  182. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  183. package/dist/interactive/interactive-mode.js +732 -0
  184. package/dist/interactive/interactive-mode.js.map +1 -0
  185. package/dist/nlp/command-mapper.d.ts +174 -0
  186. package/dist/nlp/command-mapper.d.ts.map +1 -0
  187. package/dist/nlp/command-mapper.js +624 -0
  188. package/dist/nlp/command-mapper.js.map +1 -0
  189. package/dist/nlp/command-parser.d.ts +106 -0
  190. package/dist/nlp/command-parser.d.ts.map +1 -0
  191. package/dist/nlp/command-parser.js +417 -0
  192. package/dist/nlp/command-parser.js.map +1 -0
  193. package/dist/nlp/index.d.ts +5 -0
  194. package/dist/nlp/index.d.ts.map +1 -0
  195. package/dist/nlp/index.js +8 -0
  196. package/dist/nlp/index.js.map +1 -0
  197. package/dist/nlp/intent-classifier.d.ts +59 -0
  198. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  199. package/dist/nlp/intent-classifier.js +384 -0
  200. package/dist/nlp/intent-classifier.js.map +1 -0
  201. package/dist/nlp/intent-parser.d.ts +152 -0
  202. package/dist/nlp/intent-parser.d.ts.map +1 -0
  203. package/dist/nlp/intent-parser.js +746 -0
  204. package/dist/nlp/intent-parser.js.map +1 -0
  205. package/dist/plugins/plugin-manager.d.ts +121 -0
  206. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  207. package/dist/plugins/plugin-manager.js +606 -0
  208. package/dist/plugins/plugin-manager.js.map +1 -0
  209. package/dist/types/index.d.ts +224 -0
  210. package/dist/types/index.d.ts.map +1 -0
  211. package/dist/types/index.js +3 -0
  212. package/dist/types/index.js.map +1 -0
  213. package/dist/utils/backup-rollback-manager.d.ts +72 -0
  214. package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
  215. package/dist/utils/backup-rollback-manager.js +288 -0
  216. package/dist/utils/backup-rollback-manager.js.map +1 -0
  217. package/dist/utils/claude-config-installer.d.ts +98 -0
  218. package/dist/utils/claude-config-installer.d.ts.map +1 -0
  219. package/dist/utils/claude-config-installer.js +678 -0
  220. package/dist/utils/claude-config-installer.js.map +1 -0
  221. package/dist/utils/config-manager.d.ts +73 -0
  222. package/dist/utils/config-manager.d.ts.map +1 -0
  223. package/dist/utils/config-manager.js +339 -0
  224. package/dist/utils/config-manager.js.map +1 -0
  225. package/dist/utils/error-handler.d.ts +46 -0
  226. package/dist/utils/error-handler.d.ts.map +1 -0
  227. package/dist/utils/error-handler.js +169 -0
  228. package/dist/utils/error-handler.js.map +1 -0
  229. package/dist/utils/logger.d.ts +25 -0
  230. package/dist/utils/logger.d.ts.map +1 -0
  231. package/dist/utils/logger.js +105 -0
  232. package/dist/utils/logger.js.map +1 -0
  233. package/package.json +6 -6
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Claude API client configuration
3
+ */
4
+ export interface ClaudeConfig {
5
+ apiKey: string;
6
+ model: string;
7
+ maxTokens: number;
8
+ temperature: number;
9
+ baseUrl?: string;
10
+ }
11
+ /**
12
+ * Claude API message structure
13
+ */
14
+ export interface ClaudeMessage {
15
+ role: 'user' | 'assistant' | 'system';
16
+ content: string;
17
+ }
18
+ /**
19
+ * Claude API response structure
20
+ */
21
+ export interface ClaudeResponse {
22
+ id: string;
23
+ object: string;
24
+ created: number;
25
+ model: string;
26
+ choices: {
27
+ index: number;
28
+ message: ClaudeMessage;
29
+ finish_reason: string;
30
+ }[];
31
+ usage: {
32
+ prompt_tokens: number;
33
+ completion_tokens: number;
34
+ total_tokens: number;
35
+ };
36
+ }
37
+ /**
38
+ * Claude API streaming response
39
+ */
40
+ export interface ClaudeStreamChunk {
41
+ id: string;
42
+ object: string;
43
+ created: number;
44
+ model: string;
45
+ choices: {
46
+ index: number;
47
+ delta: {
48
+ role?: string;
49
+ content?: string;
50
+ };
51
+ finish_reason?: string;
52
+ }[];
53
+ }
54
+ /**
55
+ * Claude API client for Claude-Opus-4.1 integration
56
+ */
57
+ export declare class ClaudeClient {
58
+ private client;
59
+ private config;
60
+ constructor(config: ClaudeConfig);
61
+ /**
62
+ * Send a single message to Claude
63
+ */
64
+ sendMessage(message: string, systemPrompt?: string, options?: Partial<ClaudeConfig>): Promise<string>;
65
+ /**
66
+ * Send conversation history to Claude
67
+ */
68
+ sendConversation(messages: ClaudeMessage[], systemPrompt?: string, options?: Partial<ClaudeConfig>): Promise<string>;
69
+ /**
70
+ * Stream a conversation with Claude
71
+ */
72
+ streamConversation(messages: ClaudeMessage[], systemPrompt?: string, options?: Partial<ClaudeConfig>): AsyncGenerator<string, void, unknown>;
73
+ /**
74
+ * Analyze intent from natural language input
75
+ */
76
+ analyzeIntent(input: string, availableCommands: string[]): Promise<{
77
+ intent: string;
78
+ confidence: number;
79
+ command?: string;
80
+ parameters?: Record<string, any>;
81
+ clarification?: string;
82
+ }>;
83
+ /**
84
+ * Generate command suggestions based on context
85
+ */
86
+ suggestCommands(projectContext: string, userGoal: string, availableCommands: string[]): Promise<{
87
+ suggestions: Array<{
88
+ command: string;
89
+ description: string;
90
+ confidence: number;
91
+ }>;
92
+ }>;
93
+ /**
94
+ * Explain command results in natural language
95
+ */
96
+ explainResults(command: string, output: string, context?: string): Promise<string>;
97
+ /**
98
+ * Generate help content for commands
99
+ */
100
+ generateHelp(command: string, userContext: string, difficulty?: 'beginner' | 'intermediate' | 'advanced'): Promise<string>;
101
+ /**
102
+ * Validate and test the API connection
103
+ */
104
+ validateConnection(): Promise<boolean>;
105
+ /**
106
+ * Get model information
107
+ */
108
+ getModelInfo(): {
109
+ model: string;
110
+ maxTokens: number;
111
+ temperature: number;
112
+ };
113
+ /**
114
+ * Update configuration
115
+ */
116
+ updateConfig(updates: Partial<ClaudeConfig>): void;
117
+ /**
118
+ * Extract content from Claude API response
119
+ */
120
+ private extractContent;
121
+ /**
122
+ * Setup request/response interceptors
123
+ */
124
+ private setupInterceptors;
125
+ /**
126
+ * Handle API errors and convert to WundrError
127
+ */
128
+ private handleError;
129
+ }
130
+ //# sourceMappingURL=claude-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-client.d.ts","sourceRoot":"","sources":["../../src/ai/claude-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeClient = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ const logger_1 = require("../utils/logger");
7
+ /**
8
+ * Claude API client for Claude-Opus-4.1 integration
9
+ */
10
+ class ClaudeClient {
11
+ client;
12
+ config;
13
+ constructor(config) {
14
+ this.config = {
15
+ baseUrl: 'https://api.anthropic.com',
16
+ ...config,
17
+ };
18
+ this.client = axios_1.default.create({
19
+ baseURL: this.config.baseUrl,
20
+ headers: {
21
+ 'Content-Type': 'application/json',
22
+ 'x-api-key': this.config.apiKey,
23
+ 'anthropic-version': '2023-06-01',
24
+ },
25
+ timeout: 30000,
26
+ });
27
+ // Add request/response interceptors for logging and error handling
28
+ this.setupInterceptors();
29
+ }
30
+ /**
31
+ * Send a single message to Claude
32
+ */
33
+ async sendMessage(message, systemPrompt, options) {
34
+ try {
35
+ const messages = [];
36
+ if (systemPrompt) {
37
+ messages.push({ role: 'system', content: systemPrompt });
38
+ }
39
+ messages.push({ role: 'user', content: message });
40
+ const response = await this.client.post('/v1/messages', {
41
+ model: options?.model || this.config.model,
42
+ max_tokens: options?.maxTokens || this.config.maxTokens,
43
+ temperature: options?.temperature ?? this.config.temperature,
44
+ messages,
45
+ });
46
+ return this.extractContent(response.data);
47
+ }
48
+ catch (error) {
49
+ throw this.handleError(error, 'Failed to send message to Claude');
50
+ }
51
+ }
52
+ /**
53
+ * Send conversation history to Claude
54
+ */
55
+ async sendConversation(messages, systemPrompt, options) {
56
+ try {
57
+ const conversationMessages = [...messages];
58
+ if (systemPrompt) {
59
+ conversationMessages.unshift({ role: 'system', content: systemPrompt });
60
+ }
61
+ const response = await this.client.post('/v1/messages', {
62
+ model: options?.model || this.config.model,
63
+ max_tokens: options?.maxTokens || this.config.maxTokens,
64
+ temperature: options?.temperature ?? this.config.temperature,
65
+ messages: conversationMessages,
66
+ });
67
+ return this.extractContent(response.data);
68
+ }
69
+ catch (error) {
70
+ throw this.handleError(error, 'Failed to send conversation to Claude');
71
+ }
72
+ }
73
+ /**
74
+ * Stream a conversation with Claude
75
+ */
76
+ async *streamConversation(messages, systemPrompt, options) {
77
+ try {
78
+ const conversationMessages = [...messages];
79
+ if (systemPrompt) {
80
+ conversationMessages.unshift({ role: 'system', content: systemPrompt });
81
+ }
82
+ const response = await this.client.post('/v1/messages', {
83
+ model: options?.model || this.config.model,
84
+ max_tokens: options?.maxTokens || this.config.maxTokens,
85
+ temperature: options?.temperature ?? this.config.temperature,
86
+ messages: conversationMessages,
87
+ stream: true,
88
+ }, {
89
+ responseType: 'stream',
90
+ });
91
+ let buffer = '';
92
+ for await (const chunk of response.data) {
93
+ buffer += chunk.toString();
94
+ const lines = buffer.split('\n');
95
+ buffer = lines.pop() || '';
96
+ for (const line of lines) {
97
+ if (line.startsWith('data: ')) {
98
+ const data = line.slice(6);
99
+ if (data === '[DONE]') {
100
+ return;
101
+ }
102
+ try {
103
+ const parsed = JSON.parse(data);
104
+ const content = parsed.choices[0]?.delta?.content;
105
+ if (content) {
106
+ yield content;
107
+ }
108
+ }
109
+ catch (e) {
110
+ // Skip malformed chunks
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ catch (error) {
117
+ throw this.handleError(error, 'Failed to stream conversation with Claude');
118
+ }
119
+ }
120
+ /**
121
+ * Analyze intent from natural language input
122
+ */
123
+ async analyzeIntent(input, availableCommands) {
124
+ const systemPrompt = `You are a CLI intent analyzer. Analyze user input and determine:
125
+ 1. The intended CLI command from available options: ${availableCommands.join(', ')}
126
+ 2. Extracted parameters
127
+ 3. Confidence level (0-1)
128
+ 4. Whether clarification is needed
129
+
130
+ Respond with JSON only in this format:
131
+ {
132
+ "intent": "command_name",
133
+ "confidence": 0.9,
134
+ "command": "wundr analyze --path ./src",
135
+ "parameters": {"path": "./src"},
136
+ "clarification": "optional clarification question"
137
+ }`;
138
+ try {
139
+ const response = await this.sendMessage(input, systemPrompt, {
140
+ temperature: 0.2,
141
+ maxTokens: 1024,
142
+ });
143
+ return JSON.parse(response);
144
+ }
145
+ catch (error) {
146
+ throw this.handleError(error, 'Failed to analyze intent');
147
+ }
148
+ }
149
+ /**
150
+ * Generate command suggestions based on context
151
+ */
152
+ async suggestCommands(projectContext, userGoal, availableCommands) {
153
+ const systemPrompt = `You are a CLI assistant. Based on the project context and user goal, suggest the most appropriate CLI commands.
154
+
155
+ Project Context: ${projectContext}
156
+ User Goal: ${userGoal}
157
+ Available Commands: ${availableCommands.join(', ')}
158
+
159
+ Respond with JSON only:
160
+ {
161
+ "suggestions": [
162
+ {
163
+ "command": "wundr analyze --focus dependencies",
164
+ "description": "Analyze project dependencies",
165
+ "confidence": 0.9
166
+ }
167
+ ]
168
+ }`;
169
+ try {
170
+ const response = await this.sendMessage('', systemPrompt, {
171
+ temperature: 0.3,
172
+ maxTokens: 1024,
173
+ });
174
+ return JSON.parse(response);
175
+ }
176
+ catch (error) {
177
+ throw this.handleError(error, 'Failed to generate command suggestions');
178
+ }
179
+ }
180
+ /**
181
+ * Explain command results in natural language
182
+ */
183
+ async explainResults(command, output, context) {
184
+ const systemPrompt = `You are a helpful CLI assistant. Explain the results of a CLI command in clear, natural language. Focus on:
185
+ 1. What the command did
186
+ 2. Key findings or results
187
+ 3. Next steps or recommendations
188
+ 4. Any issues or warnings
189
+
190
+ Be concise but informative.`;
191
+ const message = `Command: ${command}
192
+ ${context ? `Context: ${context}\n` : ''}Output:
193
+ ${output}`;
194
+ try {
195
+ return await this.sendMessage(message, systemPrompt, {
196
+ temperature: 0.4,
197
+ maxTokens: 2048,
198
+ });
199
+ }
200
+ catch (error) {
201
+ throw this.handleError(error, 'Failed to explain results');
202
+ }
203
+ }
204
+ /**
205
+ * Generate help content for commands
206
+ */
207
+ async generateHelp(command, userContext, difficulty = 'intermediate') {
208
+ const systemPrompt = `You are a CLI documentation assistant. Generate helpful, contextual guidance for CLI commands. Adapt the explanation level to: ${difficulty}
209
+
210
+ Provide:
211
+ 1. What the command does
212
+ 2. When to use it
213
+ 3. Common options and examples
214
+ 4. Tips and best practices
215
+ 5. Related commands
216
+
217
+ Keep it practical and actionable.`;
218
+ const message = `Command: ${command}
219
+ User Context: ${userContext}`;
220
+ try {
221
+ return await this.sendMessage(message, systemPrompt, {
222
+ temperature: 0.3,
223
+ maxTokens: 2048,
224
+ });
225
+ }
226
+ catch (error) {
227
+ throw this.handleError(error, 'Failed to generate help content');
228
+ }
229
+ }
230
+ /**
231
+ * Validate and test the API connection
232
+ */
233
+ async validateConnection() {
234
+ try {
235
+ await this.sendMessage('Hello', 'Respond with just "OK" if you can understand this message.', {
236
+ maxTokens: 10,
237
+ });
238
+ return true;
239
+ }
240
+ catch (error) {
241
+ logger_1.logger.error('Claude API connection validation failed:', error);
242
+ return false;
243
+ }
244
+ }
245
+ /**
246
+ * Get model information
247
+ */
248
+ getModelInfo() {
249
+ return {
250
+ model: this.config.model,
251
+ maxTokens: this.config.maxTokens,
252
+ temperature: this.config.temperature,
253
+ };
254
+ }
255
+ /**
256
+ * Update configuration
257
+ */
258
+ updateConfig(updates) {
259
+ this.config = { ...this.config, ...updates };
260
+ if (updates.apiKey) {
261
+ this.client.defaults.headers['x-api-key'] = updates.apiKey;
262
+ }
263
+ }
264
+ /**
265
+ * Extract content from Claude API response
266
+ */
267
+ extractContent(response) {
268
+ if (!response.choices || response.choices.length === 0) {
269
+ throw new Error('No choices in Claude API response');
270
+ }
271
+ return response.choices?.[0]?.message?.content || '';
272
+ }
273
+ /**
274
+ * Setup request/response interceptors
275
+ */
276
+ setupInterceptors() {
277
+ // Request interceptor
278
+ this.client.interceptors.request.use((config) => {
279
+ logger_1.logger.debug(`Claude API Request: ${config.method?.toUpperCase()} ${config.url}`);
280
+ return config;
281
+ }, (error) => {
282
+ logger_1.logger.error('Claude API Request Error:', error);
283
+ return Promise.reject(error);
284
+ });
285
+ // Response interceptor
286
+ this.client.interceptors.response.use((response) => {
287
+ logger_1.logger.debug(`Claude API Response: ${response.status} ${response.statusText}`);
288
+ return response;
289
+ }, (error) => {
290
+ logger_1.logger.error('Claude API Response Error:', error);
291
+ return Promise.reject(error);
292
+ });
293
+ }
294
+ /**
295
+ * Handle API errors and convert to WundrError
296
+ */
297
+ handleError(error, message) {
298
+ logger_1.logger.error(`Claude API Error: ${message}`, error);
299
+ let errorCode = 'CLAUDE_API_ERROR';
300
+ let errorMessage = message;
301
+ let recoverable = false;
302
+ if (error.response) {
303
+ const status = error.response.status;
304
+ const data = error.response.data;
305
+ switch (status) {
306
+ case 401:
307
+ errorCode = 'CLAUDE_AUTH_ERROR';
308
+ errorMessage =
309
+ 'Invalid API key. Please check your Claude API configuration.';
310
+ recoverable = true;
311
+ break;
312
+ case 429:
313
+ errorCode = 'CLAUDE_RATE_LIMIT';
314
+ errorMessage = 'Rate limit exceeded. Please try again in a moment.';
315
+ recoverable = true;
316
+ break;
317
+ case 500:
318
+ errorCode = 'CLAUDE_SERVER_ERROR';
319
+ errorMessage = 'Claude API server error. Please try again later.';
320
+ recoverable = true;
321
+ break;
322
+ default:
323
+ errorMessage = `${message}: ${data?.error?.message || error.message}`;
324
+ }
325
+ }
326
+ else if (error.code === 'ECONNREFUSED' || error.code === 'ENOTFOUND') {
327
+ errorCode = 'CLAUDE_CONNECTION_ERROR';
328
+ errorMessage =
329
+ 'Unable to connect to Claude API. Please check your internet connection.';
330
+ recoverable = true;
331
+ }
332
+ const wundrError = new Error(errorMessage);
333
+ wundrError.code = errorCode;
334
+ wundrError.context = { originalError: error };
335
+ wundrError.recoverable = recoverable;
336
+ return wundrError;
337
+ }
338
+ }
339
+ exports.ClaudeClient = ClaudeClient;
340
+ //# sourceMappingURL=claude-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-client.js","sourceRoot":"","sources":["../../src/ai/claude-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { ClaudeClient } from './claude-client';
3
+ import type { ChatSession, ChatMessage } from '../types';
4
+ /**
5
+ * Configuration for conversation management
6
+ */
7
+ export interface ConversationConfig {
8
+ maxHistoryLength: number;
9
+ contextWindowSize: number;
10
+ sessionTimeout: number;
11
+ persistencePath: string;
12
+ autoSave: boolean;
13
+ compressionThreshold: number;
14
+ }
15
+ /**
16
+ * Session metadata for enhanced tracking
17
+ */
18
+ export interface SessionMetadata {
19
+ tokenUsage: {
20
+ total: number;
21
+ prompt: number;
22
+ completion: number;
23
+ };
24
+ performance: {
25
+ averageResponseTime: number;
26
+ totalRequests: number;
27
+ errorCount: number;
28
+ };
29
+ context: {
30
+ projectPath?: string;
31
+ currentCommand?: string;
32
+ userPreferences: Record<string, any>;
33
+ workflow?: string[];
34
+ };
35
+ }
36
+ /**
37
+ * Enhanced chat session with metadata
38
+ */
39
+ export interface EnhancedChatSession extends ChatSession {
40
+ metadata: SessionMetadata;
41
+ tags: string[];
42
+ archived: boolean;
43
+ lastAccessed: Date;
44
+ }
45
+ /**
46
+ * Conversation manager handles session persistence, context optimization, and memory management
47
+ */
48
+ export declare class ConversationManager extends EventEmitter {
49
+ private activeSessions;
50
+ private claudeClient;
51
+ private config;
52
+ private sessionCleanupTimer?;
53
+ constructor(claudeClient: ClaudeClient, config?: Partial<ConversationConfig>);
54
+ /**
55
+ * Create a new conversation session
56
+ */
57
+ createSession(options?: {
58
+ id?: string;
59
+ model?: string;
60
+ context?: string;
61
+ tags?: string[];
62
+ metadata?: Partial<SessionMetadata>;
63
+ }): Promise<EnhancedChatSession>;
64
+ /**
65
+ * Load an existing session
66
+ */
67
+ loadSession(sessionId: string): Promise<EnhancedChatSession | null>;
68
+ /**
69
+ * Send a message in a conversation session
70
+ */
71
+ sendMessage(sessionId: string, message: string, options?: {
72
+ systemPrompt?: string;
73
+ streaming?: boolean;
74
+ metadata?: Record<string, any>;
75
+ }): Promise<string | AsyncGenerator<string, void, unknown>>;
76
+ /**
77
+ * Get conversation history with optional filtering
78
+ */
79
+ getHistory(sessionId: string, options?: {
80
+ limit?: number;
81
+ from?: Date;
82
+ to?: Date;
83
+ roles?: ('user' | 'assistant' | 'system')[];
84
+ }): ChatMessage[];
85
+ /**
86
+ * Add context to a conversation session
87
+ */
88
+ addContext(sessionId: string, contextType: 'project' | 'command' | 'preference' | 'workflow', contextData: any): Promise<void>;
89
+ /**
90
+ * Archive old or inactive sessions
91
+ */
92
+ archiveSessions(criteria?: {
93
+ olderThan?: number;
94
+ inactiveFor?: number;
95
+ maxSessions?: number;
96
+ }): Promise<string[]>;
97
+ /**
98
+ * Search conversations by content or metadata
99
+ */
100
+ searchConversations(query: {
101
+ text?: string;
102
+ tags?: string[];
103
+ dateRange?: {
104
+ from: Date;
105
+ to: Date;
106
+ };
107
+ model?: string;
108
+ limit?: number;
109
+ }): Promise<Array<{
110
+ sessionId: string;
111
+ matches: ChatMessage[];
112
+ score: number;
113
+ }>>;
114
+ /**
115
+ * Get session statistics
116
+ */
117
+ getSessionStats(sessionId?: string): any;
118
+ /**
119
+ * Clean up expired sessions
120
+ */
121
+ cleanup(): Promise<void>;
122
+ /**
123
+ * Export conversation data
124
+ */
125
+ exportSession(sessionId: string, format: 'json' | 'markdown' | 'csv'): Promise<string>;
126
+ /**
127
+ * Import conversation data
128
+ */
129
+ importSession(data: string, format: 'json'): Promise<string>;
130
+ /**
131
+ * List all sessions with pagination
132
+ */
133
+ listSessions(options?: {
134
+ limit?: number;
135
+ offset?: number;
136
+ includeArchived?: boolean;
137
+ sortBy?: 'created' | 'updated' | 'lastAccessed';
138
+ sortOrder?: 'asc' | 'desc';
139
+ }): Promise<{
140
+ sessions: Array<Pick<EnhancedChatSession, 'id' | 'created' | 'updated' | 'lastAccessed' | 'tags' | 'archived'>>;
141
+ total: number;
142
+ hasMore: boolean;
143
+ }>;
144
+ private initializeManager;
145
+ private optimizeContext;
146
+ private compressHistory;
147
+ private handleSyncResponse;
148
+ private handleStreamingResponse;
149
+ private updatePerformanceMetrics;
150
+ private persistSession;
151
+ private getSessionPath;
152
+ private serializeSession;
153
+ private deserializeSession;
154
+ private searchSession;
155
+ private calculateSearchScore;
156
+ private sessionToMarkdown;
157
+ private sessionToCsv;
158
+ /**
159
+ * Cleanup resources
160
+ */
161
+ destroy(): void;
162
+ }
163
+ export default ConversationManager;
164
+ //# sourceMappingURL=conversation-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../src/ai/conversation-manager.ts"],"names":[],"mappings":"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"}