@wundr.io/cli 1.0.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 (213) hide show
  1. package/README.md +551 -0
  2. package/bin/wundr.js +39 -0
  3. package/dist/ai/ai-service.d.ts +152 -0
  4. package/dist/ai/ai-service.d.ts.map +1 -0
  5. package/dist/ai/ai-service.js +430 -0
  6. package/dist/ai/ai-service.js.map +1 -0
  7. package/dist/ai/claude-client.d.ts +130 -0
  8. package/dist/ai/claude-client.d.ts.map +1 -0
  9. package/dist/ai/claude-client.js +339 -0
  10. package/dist/ai/claude-client.js.map +1 -0
  11. package/dist/ai/conversation-manager.d.ts +164 -0
  12. package/dist/ai/conversation-manager.d.ts.map +1 -0
  13. package/dist/ai/conversation-manager.js +612 -0
  14. package/dist/ai/conversation-manager.js.map +1 -0
  15. package/dist/ai/index.d.ts +5 -0
  16. package/dist/ai/index.d.ts.map +1 -0
  17. package/dist/ai/index.js +8 -0
  18. package/dist/ai/index.js.map +1 -0
  19. package/dist/cli.d.ts +36 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +173 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/commands/ai.d.ts +89 -0
  24. package/dist/commands/ai.d.ts.map +1 -0
  25. package/dist/commands/ai.js +735 -0
  26. package/dist/commands/ai.js.map +1 -0
  27. package/dist/commands/analyze-optimized.d.ts +14 -0
  28. package/dist/commands/analyze-optimized.d.ts.map +1 -0
  29. package/dist/commands/analyze-optimized.js +437 -0
  30. package/dist/commands/analyze-optimized.js.map +1 -0
  31. package/dist/commands/analyze.d.ts +65 -0
  32. package/dist/commands/analyze.d.ts.map +1 -0
  33. package/dist/commands/analyze.js +435 -0
  34. package/dist/commands/analyze.js.map +1 -0
  35. package/dist/commands/batch.d.ts +71 -0
  36. package/dist/commands/batch.d.ts.map +1 -0
  37. package/dist/commands/batch.js +738 -0
  38. package/dist/commands/batch.js.map +1 -0
  39. package/dist/commands/chat.d.ts +71 -0
  40. package/dist/commands/chat.d.ts.map +1 -0
  41. package/dist/commands/chat.js +674 -0
  42. package/dist/commands/chat.js.map +1 -0
  43. package/dist/commands/claude-init.d.ts +28 -0
  44. package/dist/commands/claude-init.d.ts.map +1 -0
  45. package/dist/commands/claude-init.js +587 -0
  46. package/dist/commands/claude-init.js.map +1 -0
  47. package/dist/commands/claude-setup.d.ts +32 -0
  48. package/dist/commands/claude-setup.d.ts.map +1 -0
  49. package/dist/commands/claude-setup.js +570 -0
  50. package/dist/commands/claude-setup.js.map +1 -0
  51. package/dist/commands/computer-setup-commands.d.ts +39 -0
  52. package/dist/commands/computer-setup-commands.d.ts.map +1 -0
  53. package/dist/commands/computer-setup-commands.js +563 -0
  54. package/dist/commands/computer-setup-commands.js.map +1 -0
  55. package/dist/commands/computer-setup.d.ts +7 -0
  56. package/dist/commands/computer-setup.d.ts.map +1 -0
  57. package/dist/commands/computer-setup.js +481 -0
  58. package/dist/commands/computer-setup.js.map +1 -0
  59. package/dist/commands/create-command.d.ts +7 -0
  60. package/dist/commands/create-command.d.ts.map +1 -0
  61. package/dist/commands/create-command.js +158 -0
  62. package/dist/commands/create-command.js.map +1 -0
  63. package/dist/commands/create.d.ts +74 -0
  64. package/dist/commands/create.d.ts.map +1 -0
  65. package/dist/commands/create.js +556 -0
  66. package/dist/commands/create.js.map +1 -0
  67. package/dist/commands/dashboard.d.ts +91 -0
  68. package/dist/commands/dashboard.d.ts.map +1 -0
  69. package/dist/commands/dashboard.js +537 -0
  70. package/dist/commands/dashboard.js.map +1 -0
  71. package/dist/commands/govern.d.ts +70 -0
  72. package/dist/commands/govern.d.ts.map +1 -0
  73. package/dist/commands/govern.js +480 -0
  74. package/dist/commands/govern.js.map +1 -0
  75. package/dist/commands/init.d.ts +55 -0
  76. package/dist/commands/init.d.ts.map +1 -0
  77. package/dist/commands/init.js +584 -0
  78. package/dist/commands/init.js.map +1 -0
  79. package/dist/commands/performance-optimizer.d.ts +30 -0
  80. package/dist/commands/performance-optimizer.d.ts.map +1 -0
  81. package/dist/commands/performance-optimizer.js +649 -0
  82. package/dist/commands/performance-optimizer.js.map +1 -0
  83. package/dist/commands/plugins.d.ts +87 -0
  84. package/dist/commands/plugins.d.ts.map +1 -0
  85. package/dist/commands/plugins.js +685 -0
  86. package/dist/commands/plugins.js.map +1 -0
  87. package/dist/commands/setup.d.ts +29 -0
  88. package/dist/commands/setup.d.ts.map +1 -0
  89. package/dist/commands/setup.js +399 -0
  90. package/dist/commands/setup.js.map +1 -0
  91. package/dist/commands/test-init.d.ts +9 -0
  92. package/dist/commands/test-init.d.ts.map +1 -0
  93. package/dist/commands/test-init.js +222 -0
  94. package/dist/commands/test-init.js.map +1 -0
  95. package/dist/commands/test.d.ts +25 -0
  96. package/dist/commands/test.d.ts.map +1 -0
  97. package/dist/commands/test.js +217 -0
  98. package/dist/commands/test.js.map +1 -0
  99. package/dist/commands/watch.d.ts +76 -0
  100. package/dist/commands/watch.d.ts.map +1 -0
  101. package/dist/commands/watch.js +610 -0
  102. package/dist/commands/watch.js.map +1 -0
  103. package/dist/context/context-manager.d.ts +155 -0
  104. package/dist/context/context-manager.d.ts.map +1 -0
  105. package/dist/context/context-manager.js +383 -0
  106. package/dist/context/context-manager.js.map +1 -0
  107. package/dist/context/index.d.ts +3 -0
  108. package/dist/context/index.d.ts.map +1 -0
  109. package/dist/context/index.js +6 -0
  110. package/dist/context/index.js.map +1 -0
  111. package/dist/context/session-manager.d.ts +207 -0
  112. package/dist/context/session-manager.d.ts.map +1 -0
  113. package/dist/context/session-manager.js +682 -0
  114. package/dist/context/session-manager.js.map +1 -0
  115. package/dist/index.d.ts +8 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +51 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/interactive/interactive-mode.d.ts +76 -0
  120. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  121. package/dist/interactive/interactive-mode.js +730 -0
  122. package/dist/interactive/interactive-mode.js.map +1 -0
  123. package/dist/nlp/command-mapper.d.ts +174 -0
  124. package/dist/nlp/command-mapper.d.ts.map +1 -0
  125. package/dist/nlp/command-mapper.js +623 -0
  126. package/dist/nlp/command-mapper.js.map +1 -0
  127. package/dist/nlp/command-parser.d.ts +106 -0
  128. package/dist/nlp/command-parser.d.ts.map +1 -0
  129. package/dist/nlp/command-parser.js +416 -0
  130. package/dist/nlp/command-parser.js.map +1 -0
  131. package/dist/nlp/index.d.ts +5 -0
  132. package/dist/nlp/index.d.ts.map +1 -0
  133. package/dist/nlp/index.js +8 -0
  134. package/dist/nlp/index.js.map +1 -0
  135. package/dist/nlp/intent-classifier.d.ts +59 -0
  136. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  137. package/dist/nlp/intent-classifier.js +384 -0
  138. package/dist/nlp/intent-classifier.js.map +1 -0
  139. package/dist/nlp/intent-parser.d.ts +152 -0
  140. package/dist/nlp/intent-parser.d.ts.map +1 -0
  141. package/dist/nlp/intent-parser.js +739 -0
  142. package/dist/nlp/intent-parser.js.map +1 -0
  143. package/dist/plugins/plugin-manager.d.ts +120 -0
  144. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  145. package/dist/plugins/plugin-manager.js +595 -0
  146. package/dist/plugins/plugin-manager.js.map +1 -0
  147. package/dist/types/index.d.ts +224 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +3 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/utils/config-manager.d.ts +73 -0
  152. package/dist/utils/config-manager.d.ts.map +1 -0
  153. package/dist/utils/config-manager.js +339 -0
  154. package/dist/utils/config-manager.js.map +1 -0
  155. package/dist/utils/error-handler.d.ts +46 -0
  156. package/dist/utils/error-handler.d.ts.map +1 -0
  157. package/dist/utils/error-handler.js +169 -0
  158. package/dist/utils/error-handler.js.map +1 -0
  159. package/dist/utils/logger.d.ts +25 -0
  160. package/dist/utils/logger.d.ts.map +1 -0
  161. package/dist/utils/logger.js +94 -0
  162. package/dist/utils/logger.js.map +1 -0
  163. package/package.json +119 -0
  164. package/src/ai/ai-service.ts +595 -0
  165. package/src/ai/claude-client.ts +490 -0
  166. package/src/ai/conversation-manager.ts +907 -0
  167. package/src/ai/index.ts +8 -0
  168. package/src/cli.ts +202 -0
  169. package/src/commands/ai.ts +995 -0
  170. package/src/commands/analyze-optimized.ts +641 -0
  171. package/src/commands/analyze.ts +576 -0
  172. package/src/commands/batch.ts +935 -0
  173. package/src/commands/chat.ts +876 -0
  174. package/src/commands/claude-init.ts +715 -0
  175. package/src/commands/claude-setup.ts +697 -0
  176. package/src/commands/computer-setup-commands.ts +709 -0
  177. package/src/commands/computer-setup.ts +565 -0
  178. package/src/commands/create-command.ts +175 -0
  179. package/src/commands/create.ts +727 -0
  180. package/src/commands/dashboard.ts +691 -0
  181. package/src/commands/govern.ts +635 -0
  182. package/src/commands/init.ts +677 -0
  183. package/src/commands/performance-optimizer.ts +864 -0
  184. package/src/commands/plugins.ts +848 -0
  185. package/src/commands/setup.ts +508 -0
  186. package/src/commands/test-init.ts +242 -0
  187. package/src/commands/test.ts +264 -0
  188. package/src/commands/watch.ts +755 -0
  189. package/src/context/context-manager.ts +546 -0
  190. package/src/context/index.ts +9 -0
  191. package/src/context/session-manager.ts +1019 -0
  192. package/src/index.ts +64 -0
  193. package/src/interactive/interactive-mode.ts +830 -0
  194. package/src/nlp/command-mapper.ts +885 -0
  195. package/src/nlp/command-parser.ts +564 -0
  196. package/src/nlp/index.ts +4 -0
  197. package/src/nlp/intent-classifier.ts +458 -0
  198. package/src/nlp/intent-parser.ts +1101 -0
  199. package/src/plugins/plugin-manager.ts +744 -0
  200. package/src/types/index.ts +252 -0
  201. package/src/types/modules.d.ts +56 -0
  202. package/src/utils/config-manager.ts +391 -0
  203. package/src/utils/error-handler.ts +192 -0
  204. package/src/utils/logger.ts +104 -0
  205. package/templates/batch/ci-cd.yaml +62 -0
  206. package/templates/component/{{fileName}}.test.tsx +17 -0
  207. package/templates/component/{{fileName}}.tsx +21 -0
  208. package/templates/service/{{fileName}}.ts +98 -0
  209. package/templates/wundr-test.config.js +0 -0
  210. package/test-suites/api/health.spec.ts +134 -0
  211. package/test-suites/helpers/test-config.ts +84 -0
  212. package/test-suites/ui/accessibility.spec.ts +102 -0
  213. package/test-suites/ui/smoke.spec.ts +92 -0
@@ -0,0 +1,155 @@
1
+ import { ConversationContext } from '../ai/ai-service';
2
+ /**
3
+ * Project context information
4
+ */
5
+ export interface ProjectContext {
6
+ path: string;
7
+ type: string;
8
+ packageJson?: any;
9
+ tsConfig?: any;
10
+ gitInfo?: GitInfo;
11
+ dependencies?: string[];
12
+ devDependencies?: string[];
13
+ scripts?: Record<string, string>;
14
+ lastAnalysis?: AnalysisContext;
15
+ }
16
+ /**
17
+ * Git repository information
18
+ */
19
+ export interface GitInfo {
20
+ branch: string;
21
+ remote?: string;
22
+ hasChanges: boolean;
23
+ lastCommit?: string;
24
+ }
25
+ /**
26
+ * Analysis context from previous runs
27
+ */
28
+ export interface AnalysisContext {
29
+ timestamp: Date;
30
+ findings: number;
31
+ quality: number;
32
+ duplicates: number;
33
+ dependencies: number;
34
+ recommendations: string[];
35
+ }
36
+ /**
37
+ * User session context
38
+ */
39
+ export interface SessionContext {
40
+ sessionId: string;
41
+ startTime: Date;
42
+ lastActivity: Date;
43
+ commandHistory: CommandHistoryEntry[];
44
+ currentGoal?: string;
45
+ preferences: UserPreferences;
46
+ projectContext?: ProjectContext;
47
+ }
48
+ /**
49
+ * Command history entry
50
+ */
51
+ export interface CommandHistoryEntry {
52
+ command: string;
53
+ timestamp: Date;
54
+ success: boolean;
55
+ duration: number;
56
+ output?: string;
57
+ error?: string;
58
+ }
59
+ /**
60
+ * User preferences
61
+ */
62
+ export interface UserPreferences {
63
+ verbosity: 'minimal' | 'normal' | 'verbose';
64
+ confirmCommands: boolean;
65
+ autoSuggest: boolean;
66
+ theme: 'light' | 'dark' | 'auto';
67
+ language: string;
68
+ modelPreference?: string;
69
+ }
70
+ /**
71
+ * Context manager for maintaining conversation and project context
72
+ */
73
+ export declare class ContextManager {
74
+ private sessionsDir;
75
+ private currentSession?;
76
+ private projectContextCache;
77
+ constructor(baseDir?: string);
78
+ /**
79
+ * Initialize or resume a session
80
+ */
81
+ initializeSession(sessionId?: string): Promise<SessionContext>;
82
+ /**
83
+ * Get current session context
84
+ */
85
+ getCurrentSession(): SessionContext | undefined;
86
+ /**
87
+ * Add command to history
88
+ */
89
+ addCommandToHistory(command: string, success: boolean, duration: number, output?: string, error?: string): Promise<void>;
90
+ /**
91
+ * Update user goal
92
+ */
93
+ updateCurrentGoal(goal: string): Promise<void>;
94
+ /**
95
+ * Update user preferences
96
+ */
97
+ updatePreferences(preferences: Partial<UserPreferences>): Promise<void>;
98
+ /**
99
+ * Get conversation context for AI
100
+ */
101
+ getConversationContext(): ConversationContext;
102
+ /**
103
+ * Detect project context
104
+ */
105
+ detectProjectContext(projectPath?: string): Promise<ProjectContext | undefined>;
106
+ /**
107
+ * Update analysis context
108
+ */
109
+ updateAnalysisContext(findings: number, quality: number, duplicates: number, dependencies: number, recommendations: string[]): Promise<void>;
110
+ /**
111
+ * Get recent command patterns
112
+ */
113
+ getRecentCommandPatterns(): {
114
+ command: string;
115
+ frequency: number;
116
+ }[];
117
+ /**
118
+ * End current session
119
+ */
120
+ endSession(): Promise<void>;
121
+ /**
122
+ * List all sessions
123
+ */
124
+ listSessions(): Promise<{
125
+ id: string;
126
+ startTime: Date;
127
+ lastActivity: Date;
128
+ commandCount: number;
129
+ }[]>;
130
+ /**
131
+ * Load session from disk
132
+ */
133
+ private loadSession;
134
+ /**
135
+ * Save session to disk
136
+ */
137
+ private saveSession;
138
+ /**
139
+ * Ensure required directories exist
140
+ */
141
+ private ensureDirectories;
142
+ /**
143
+ * Get default user preferences
144
+ */
145
+ private getDefaultPreferences;
146
+ /**
147
+ * Detect project type from package.json
148
+ */
149
+ private detectProjectType;
150
+ /**
151
+ * Get git repository information
152
+ */
153
+ private getGitInfo;
154
+ }
155
+ //# sourceMappingURL=context-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextManager = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
7
+ const logger_1 = require("../utils/logger");
8
+ /**
9
+ * Context manager for maintaining conversation and project context
10
+ */
11
+ class ContextManager {
12
+ sessionsDir;
13
+ currentSession;
14
+ projectContextCache = new Map();
15
+ constructor(baseDir = '.wundr') {
16
+ this.sessionsDir = path_1.default.join(process.cwd(), baseDir, 'contexts');
17
+ this.ensureDirectories();
18
+ }
19
+ /**
20
+ * Initialize or resume a session
21
+ */
22
+ async initializeSession(sessionId) {
23
+ if (sessionId) {
24
+ const existingSession = await this.loadSession(sessionId);
25
+ if (existingSession) {
26
+ this.currentSession = existingSession;
27
+ this.currentSession.lastActivity = new Date();
28
+ await this.saveSession(this.currentSession);
29
+ return this.currentSession;
30
+ }
31
+ }
32
+ // Create new session
33
+ const newSessionId = sessionId || `session-${Date.now()}`;
34
+ this.currentSession = {
35
+ sessionId: newSessionId,
36
+ startTime: new Date(),
37
+ lastActivity: new Date(),
38
+ commandHistory: [],
39
+ preferences: this.getDefaultPreferences(),
40
+ projectContext: await this.detectProjectContext(),
41
+ };
42
+ await this.saveSession(this.currentSession);
43
+ logger_1.logger.info(`Initialized session: ${newSessionId}`);
44
+ return this.currentSession;
45
+ }
46
+ /**
47
+ * Get current session context
48
+ */
49
+ getCurrentSession() {
50
+ return this.currentSession;
51
+ }
52
+ /**
53
+ * Add command to history
54
+ */
55
+ async addCommandToHistory(command, success, duration, output, error) {
56
+ if (!this.currentSession) {
57
+ throw new Error('No active session');
58
+ }
59
+ const entry = {
60
+ command,
61
+ timestamp: new Date(),
62
+ success,
63
+ duration,
64
+ output,
65
+ error,
66
+ };
67
+ this.currentSession.commandHistory.push(entry);
68
+ this.currentSession.lastActivity = new Date();
69
+ // Keep only last 50 commands
70
+ if (this.currentSession.commandHistory.length > 50) {
71
+ this.currentSession.commandHistory =
72
+ this.currentSession.commandHistory.slice(-50);
73
+ }
74
+ await this.saveSession(this.currentSession);
75
+ }
76
+ /**
77
+ * Update user goal
78
+ */
79
+ async updateCurrentGoal(goal) {
80
+ if (!this.currentSession) {
81
+ throw new Error('No active session');
82
+ }
83
+ this.currentSession.currentGoal = goal;
84
+ this.currentSession.lastActivity = new Date();
85
+ await this.saveSession(this.currentSession);
86
+ }
87
+ /**
88
+ * Update user preferences
89
+ */
90
+ async updatePreferences(preferences) {
91
+ if (!this.currentSession) {
92
+ throw new Error('No active session');
93
+ }
94
+ this.currentSession.preferences = {
95
+ ...this.currentSession.preferences,
96
+ ...preferences,
97
+ };
98
+ this.currentSession.lastActivity = new Date();
99
+ await this.saveSession(this.currentSession);
100
+ }
101
+ /**
102
+ * Get conversation context for AI
103
+ */
104
+ getConversationContext() {
105
+ if (!this.currentSession) {
106
+ return {};
107
+ }
108
+ const recentCommands = this.currentSession.commandHistory
109
+ .slice(-5)
110
+ .map(entry => entry.command);
111
+ return {
112
+ projectPath: this.currentSession.projectContext?.path,
113
+ projectType: this.currentSession.projectContext?.type,
114
+ recentCommands,
115
+ currentGoal: this.currentSession.currentGoal,
116
+ userPreferences: this.currentSession.preferences,
117
+ sessionMetadata: {
118
+ sessionId: this.currentSession.sessionId,
119
+ duration: Date.now() - this.currentSession.startTime.getTime(),
120
+ commandCount: this.currentSession.commandHistory.length,
121
+ },
122
+ };
123
+ }
124
+ /**
125
+ * Detect project context
126
+ */
127
+ async detectProjectContext(projectPath) {
128
+ const targetPath = projectPath || process.cwd();
129
+ // Check cache first
130
+ if (this.projectContextCache.has(targetPath)) {
131
+ return this.projectContextCache.get(targetPath);
132
+ }
133
+ try {
134
+ const context = {
135
+ path: targetPath,
136
+ type: 'unknown',
137
+ };
138
+ // Read package.json
139
+ const packageJsonPath = path_1.default.join(targetPath, 'package.json');
140
+ if (await fs_extra_1.default.pathExists(packageJsonPath)) {
141
+ context.packageJson = await fs_extra_1.default.readJson(packageJsonPath);
142
+ context.dependencies = Object.keys(context.packageJson.dependencies || {});
143
+ context.devDependencies = Object.keys(context.packageJson.devDependencies || {});
144
+ context.scripts = context.packageJson.scripts || {};
145
+ context.type = this.detectProjectType(context.packageJson);
146
+ }
147
+ // Read tsconfig.json
148
+ const tsConfigPath = path_1.default.join(targetPath, 'tsconfig.json');
149
+ if (await fs_extra_1.default.pathExists(tsConfigPath)) {
150
+ context.tsConfig = await fs_extra_1.default.readJson(tsConfigPath);
151
+ }
152
+ // Get git info
153
+ context.gitInfo = await this.getGitInfo(targetPath);
154
+ // Cache the context
155
+ this.projectContextCache.set(targetPath, context);
156
+ return context;
157
+ }
158
+ catch (error) {
159
+ logger_1.logger.debug('Failed to detect project context:', error);
160
+ return undefined;
161
+ }
162
+ }
163
+ /**
164
+ * Update analysis context
165
+ */
166
+ async updateAnalysisContext(findings, quality, duplicates, dependencies, recommendations) {
167
+ if (!this.currentSession?.projectContext) {
168
+ return;
169
+ }
170
+ this.currentSession.projectContext.lastAnalysis = {
171
+ timestamp: new Date(),
172
+ findings,
173
+ quality,
174
+ duplicates,
175
+ dependencies,
176
+ recommendations,
177
+ };
178
+ await this.saveSession(this.currentSession);
179
+ }
180
+ /**
181
+ * Get recent command patterns
182
+ */
183
+ getRecentCommandPatterns() {
184
+ if (!this.currentSession) {
185
+ return [];
186
+ }
187
+ const commandFreq = {};
188
+ this.currentSession.commandHistory.forEach(entry => {
189
+ const baseCommand = entry.command.split(' ').slice(0, 2).join(' ');
190
+ commandFreq[baseCommand] = (commandFreq[baseCommand] || 0) + 1;
191
+ });
192
+ return Object.entries(commandFreq)
193
+ .map(([command, frequency]) => ({ command, frequency }))
194
+ .sort((a, b) => b.frequency - a.frequency);
195
+ }
196
+ /**
197
+ * End current session
198
+ */
199
+ async endSession() {
200
+ if (!this.currentSession) {
201
+ return;
202
+ }
203
+ this.currentSession.lastActivity = new Date();
204
+ await this.saveSession(this.currentSession);
205
+ logger_1.logger.info(`Session ended: ${this.currentSession.sessionId}`);
206
+ this.currentSession = undefined;
207
+ }
208
+ /**
209
+ * List all sessions
210
+ */
211
+ async listSessions() {
212
+ try {
213
+ const files = await fs_extra_1.default.readdir(this.sessionsDir);
214
+ const sessions = [];
215
+ for (const file of files) {
216
+ if (file.endsWith('.json')) {
217
+ try {
218
+ const sessionData = await fs_extra_1.default.readJson(path_1.default.join(this.sessionsDir, file));
219
+ sessions.push({
220
+ id: sessionData.sessionId,
221
+ startTime: new Date(sessionData.startTime),
222
+ lastActivity: new Date(sessionData.lastActivity),
223
+ commandCount: sessionData.commandHistory.length,
224
+ });
225
+ }
226
+ catch (error) {
227
+ logger_1.logger.debug(`Failed to read session file ${file}:`, error);
228
+ }
229
+ }
230
+ }
231
+ return sessions.sort((a, b) => b.lastActivity.getTime() - a.lastActivity.getTime());
232
+ }
233
+ catch (error) {
234
+ logger_1.logger.debug('Failed to list sessions:', error);
235
+ return [];
236
+ }
237
+ }
238
+ /**
239
+ * Load session from disk
240
+ */
241
+ async loadSession(sessionId) {
242
+ try {
243
+ const sessionPath = path_1.default.join(this.sessionsDir, `${sessionId}.json`);
244
+ if (await fs_extra_1.default.pathExists(sessionPath)) {
245
+ const data = await fs_extra_1.default.readJson(sessionPath);
246
+ // Convert date strings back to Date objects
247
+ data.startTime = new Date(data.startTime);
248
+ data.lastActivity = new Date(data.lastActivity);
249
+ data.commandHistory = data.commandHistory.map((entry) => ({
250
+ ...entry,
251
+ timestamp: new Date(entry.timestamp),
252
+ }));
253
+ if (data.projectContext?.lastAnalysis) {
254
+ data.projectContext.lastAnalysis.timestamp = new Date(data.projectContext.lastAnalysis.timestamp);
255
+ }
256
+ return data;
257
+ }
258
+ }
259
+ catch (error) {
260
+ logger_1.logger.debug(`Failed to load session ${sessionId}:`, error);
261
+ }
262
+ return null;
263
+ }
264
+ /**
265
+ * Save session to disk
266
+ */
267
+ async saveSession(session) {
268
+ try {
269
+ const sessionPath = path_1.default.join(this.sessionsDir, `${session.sessionId}.json`);
270
+ await fs_extra_1.default.writeJson(sessionPath, session, { spaces: 2 });
271
+ }
272
+ catch (error) {
273
+ logger_1.logger.error(`Failed to save session ${session.sessionId}:`, error);
274
+ }
275
+ }
276
+ /**
277
+ * Ensure required directories exist
278
+ */
279
+ async ensureDirectories() {
280
+ await fs_extra_1.default.ensureDir(this.sessionsDir);
281
+ }
282
+ /**
283
+ * Get default user preferences
284
+ */
285
+ getDefaultPreferences() {
286
+ return {
287
+ verbosity: 'normal',
288
+ confirmCommands: false,
289
+ autoSuggest: true,
290
+ theme: 'auto',
291
+ language: 'en',
292
+ };
293
+ }
294
+ /**
295
+ * Detect project type from package.json
296
+ */
297
+ detectProjectType(packageJson) {
298
+ if (packageJson.dependencies?.react || packageJson.devDependencies?.react) {
299
+ return 'react';
300
+ }
301
+ if (packageJson.dependencies?.next || packageJson.devDependencies?.next) {
302
+ return 'next';
303
+ }
304
+ if (packageJson.dependencies?.vue || packageJson.devDependencies?.vue) {
305
+ return 'vue';
306
+ }
307
+ if (packageJson.dependencies?.express ||
308
+ packageJson.devDependencies?.express) {
309
+ return 'express';
310
+ }
311
+ if (packageJson.dependencies?.typescript ||
312
+ packageJson.devDependencies?.typescript) {
313
+ return 'typescript';
314
+ }
315
+ if (packageJson.type === 'module' || packageJson.main?.endsWith('.mjs')) {
316
+ return 'esm';
317
+ }
318
+ return 'node';
319
+ }
320
+ /**
321
+ * Get git repository information
322
+ */
323
+ async getGitInfo(projectPath) {
324
+ try {
325
+ const { execSync } = require('child_process');
326
+ const cwd = projectPath;
327
+ // Check if it's a git repository
328
+ try {
329
+ execSync('git rev-parse --git-dir', { cwd, stdio: 'ignore' });
330
+ }
331
+ catch {
332
+ return undefined;
333
+ }
334
+ const branch = execSync('git rev-parse --abbrev-ref HEAD', {
335
+ cwd,
336
+ encoding: 'utf8',
337
+ }).trim();
338
+ let remote;
339
+ try {
340
+ remote = execSync('git config --get remote.origin.url', {
341
+ cwd,
342
+ encoding: 'utf8',
343
+ }).trim();
344
+ }
345
+ catch {
346
+ // No remote configured
347
+ }
348
+ let hasChanges = false;
349
+ try {
350
+ const status = execSync('git status --porcelain', {
351
+ cwd,
352
+ encoding: 'utf8',
353
+ });
354
+ hasChanges = status.trim().length > 0;
355
+ }
356
+ catch {
357
+ // Can't determine changes
358
+ }
359
+ let lastCommit;
360
+ try {
361
+ lastCommit = execSync('git log -1 --format="%h %s"', {
362
+ cwd,
363
+ encoding: 'utf8',
364
+ }).trim();
365
+ }
366
+ catch {
367
+ // No commits yet
368
+ }
369
+ return {
370
+ branch,
371
+ remote,
372
+ hasChanges,
373
+ lastCommit,
374
+ };
375
+ }
376
+ catch (error) {
377
+ logger_1.logger.debug('Failed to get git info:', error);
378
+ return undefined;
379
+ }
380
+ }
381
+ }
382
+ exports.ContextManager = ContextManager;
383
+ //# sourceMappingURL=context-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ContextManager } from './context-manager';
2
+ export type { ProjectContext, SessionContext, CommandHistoryEntry, UserPreferences, GitInfo, AnalysisContext, } from './context-manager';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextManager = void 0;
4
+ var context_manager_1 = require("./context-manager");
5
+ Object.defineProperty(exports, "ContextManager", { enumerable: true, get: function () { return context_manager_1.ContextManager; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}