@wundr.io/cli 1.0.0 → 1.0.1

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 (166) hide show
  1. package/README.md +696 -280
  2. package/package.json +4 -4
  3. package/src/commands/computer-setup-commands.ts +160 -0
  4. package/src/tests/computer-setup-integration.test.ts +439 -0
  5. package/src/utils/backup-rollback-manager.ts +361 -0
  6. package/src/utils/claude-config-installer.ts +732 -0
  7. package/dist/ai/ai-service.d.ts +0 -152
  8. package/dist/ai/ai-service.d.ts.map +0 -1
  9. package/dist/ai/ai-service.js +0 -430
  10. package/dist/ai/ai-service.js.map +0 -1
  11. package/dist/ai/claude-client.d.ts +0 -130
  12. package/dist/ai/claude-client.d.ts.map +0 -1
  13. package/dist/ai/claude-client.js +0 -339
  14. package/dist/ai/claude-client.js.map +0 -1
  15. package/dist/ai/conversation-manager.d.ts +0 -164
  16. package/dist/ai/conversation-manager.d.ts.map +0 -1
  17. package/dist/ai/conversation-manager.js +0 -612
  18. package/dist/ai/conversation-manager.js.map +0 -1
  19. package/dist/ai/index.d.ts +0 -5
  20. package/dist/ai/index.d.ts.map +0 -1
  21. package/dist/ai/index.js +0 -8
  22. package/dist/ai/index.js.map +0 -1
  23. package/dist/cli.d.ts +0 -36
  24. package/dist/cli.d.ts.map +0 -1
  25. package/dist/cli.js +0 -173
  26. package/dist/cli.js.map +0 -1
  27. package/dist/commands/ai.d.ts +0 -89
  28. package/dist/commands/ai.d.ts.map +0 -1
  29. package/dist/commands/ai.js +0 -735
  30. package/dist/commands/ai.js.map +0 -1
  31. package/dist/commands/analyze-optimized.d.ts +0 -14
  32. package/dist/commands/analyze-optimized.d.ts.map +0 -1
  33. package/dist/commands/analyze-optimized.js +0 -437
  34. package/dist/commands/analyze-optimized.js.map +0 -1
  35. package/dist/commands/analyze.d.ts +0 -65
  36. package/dist/commands/analyze.d.ts.map +0 -1
  37. package/dist/commands/analyze.js +0 -435
  38. package/dist/commands/analyze.js.map +0 -1
  39. package/dist/commands/batch.d.ts +0 -71
  40. package/dist/commands/batch.d.ts.map +0 -1
  41. package/dist/commands/batch.js +0 -738
  42. package/dist/commands/batch.js.map +0 -1
  43. package/dist/commands/chat.d.ts +0 -71
  44. package/dist/commands/chat.d.ts.map +0 -1
  45. package/dist/commands/chat.js +0 -674
  46. package/dist/commands/chat.js.map +0 -1
  47. package/dist/commands/claude-init.d.ts +0 -28
  48. package/dist/commands/claude-init.d.ts.map +0 -1
  49. package/dist/commands/claude-init.js +0 -587
  50. package/dist/commands/claude-init.js.map +0 -1
  51. package/dist/commands/claude-setup.d.ts +0 -32
  52. package/dist/commands/claude-setup.d.ts.map +0 -1
  53. package/dist/commands/claude-setup.js +0 -570
  54. package/dist/commands/claude-setup.js.map +0 -1
  55. package/dist/commands/computer-setup-commands.d.ts +0 -39
  56. package/dist/commands/computer-setup-commands.d.ts.map +0 -1
  57. package/dist/commands/computer-setup-commands.js +0 -563
  58. package/dist/commands/computer-setup-commands.js.map +0 -1
  59. package/dist/commands/computer-setup.d.ts +0 -7
  60. package/dist/commands/computer-setup.d.ts.map +0 -1
  61. package/dist/commands/computer-setup.js +0 -481
  62. package/dist/commands/computer-setup.js.map +0 -1
  63. package/dist/commands/create-command.d.ts +0 -7
  64. package/dist/commands/create-command.d.ts.map +0 -1
  65. package/dist/commands/create-command.js +0 -158
  66. package/dist/commands/create-command.js.map +0 -1
  67. package/dist/commands/create.d.ts +0 -74
  68. package/dist/commands/create.d.ts.map +0 -1
  69. package/dist/commands/create.js +0 -556
  70. package/dist/commands/create.js.map +0 -1
  71. package/dist/commands/dashboard.d.ts +0 -91
  72. package/dist/commands/dashboard.d.ts.map +0 -1
  73. package/dist/commands/dashboard.js +0 -537
  74. package/dist/commands/dashboard.js.map +0 -1
  75. package/dist/commands/govern.d.ts +0 -70
  76. package/dist/commands/govern.d.ts.map +0 -1
  77. package/dist/commands/govern.js +0 -480
  78. package/dist/commands/govern.js.map +0 -1
  79. package/dist/commands/init.d.ts +0 -55
  80. package/dist/commands/init.d.ts.map +0 -1
  81. package/dist/commands/init.js +0 -584
  82. package/dist/commands/init.js.map +0 -1
  83. package/dist/commands/performance-optimizer.d.ts +0 -30
  84. package/dist/commands/performance-optimizer.d.ts.map +0 -1
  85. package/dist/commands/performance-optimizer.js +0 -649
  86. package/dist/commands/performance-optimizer.js.map +0 -1
  87. package/dist/commands/plugins.d.ts +0 -87
  88. package/dist/commands/plugins.d.ts.map +0 -1
  89. package/dist/commands/plugins.js +0 -685
  90. package/dist/commands/plugins.js.map +0 -1
  91. package/dist/commands/setup.d.ts +0 -29
  92. package/dist/commands/setup.d.ts.map +0 -1
  93. package/dist/commands/setup.js +0 -399
  94. package/dist/commands/setup.js.map +0 -1
  95. package/dist/commands/test-init.d.ts +0 -9
  96. package/dist/commands/test-init.d.ts.map +0 -1
  97. package/dist/commands/test-init.js +0 -222
  98. package/dist/commands/test-init.js.map +0 -1
  99. package/dist/commands/test.d.ts +0 -25
  100. package/dist/commands/test.d.ts.map +0 -1
  101. package/dist/commands/test.js +0 -217
  102. package/dist/commands/test.js.map +0 -1
  103. package/dist/commands/watch.d.ts +0 -76
  104. package/dist/commands/watch.d.ts.map +0 -1
  105. package/dist/commands/watch.js +0 -610
  106. package/dist/commands/watch.js.map +0 -1
  107. package/dist/context/context-manager.d.ts +0 -155
  108. package/dist/context/context-manager.d.ts.map +0 -1
  109. package/dist/context/context-manager.js +0 -383
  110. package/dist/context/context-manager.js.map +0 -1
  111. package/dist/context/index.d.ts +0 -3
  112. package/dist/context/index.d.ts.map +0 -1
  113. package/dist/context/index.js +0 -6
  114. package/dist/context/index.js.map +0 -1
  115. package/dist/context/session-manager.d.ts +0 -207
  116. package/dist/context/session-manager.d.ts.map +0 -1
  117. package/dist/context/session-manager.js +0 -682
  118. package/dist/context/session-manager.js.map +0 -1
  119. package/dist/index.d.ts +0 -8
  120. package/dist/index.d.ts.map +0 -1
  121. package/dist/index.js +0 -51
  122. package/dist/index.js.map +0 -1
  123. package/dist/interactive/interactive-mode.d.ts +0 -76
  124. package/dist/interactive/interactive-mode.d.ts.map +0 -1
  125. package/dist/interactive/interactive-mode.js +0 -730
  126. package/dist/interactive/interactive-mode.js.map +0 -1
  127. package/dist/nlp/command-mapper.d.ts +0 -174
  128. package/dist/nlp/command-mapper.d.ts.map +0 -1
  129. package/dist/nlp/command-mapper.js +0 -623
  130. package/dist/nlp/command-mapper.js.map +0 -1
  131. package/dist/nlp/command-parser.d.ts +0 -106
  132. package/dist/nlp/command-parser.d.ts.map +0 -1
  133. package/dist/nlp/command-parser.js +0 -416
  134. package/dist/nlp/command-parser.js.map +0 -1
  135. package/dist/nlp/index.d.ts +0 -5
  136. package/dist/nlp/index.d.ts.map +0 -1
  137. package/dist/nlp/index.js +0 -8
  138. package/dist/nlp/index.js.map +0 -1
  139. package/dist/nlp/intent-classifier.d.ts +0 -59
  140. package/dist/nlp/intent-classifier.d.ts.map +0 -1
  141. package/dist/nlp/intent-classifier.js +0 -384
  142. package/dist/nlp/intent-classifier.js.map +0 -1
  143. package/dist/nlp/intent-parser.d.ts +0 -152
  144. package/dist/nlp/intent-parser.d.ts.map +0 -1
  145. package/dist/nlp/intent-parser.js +0 -739
  146. package/dist/nlp/intent-parser.js.map +0 -1
  147. package/dist/plugins/plugin-manager.d.ts +0 -120
  148. package/dist/plugins/plugin-manager.d.ts.map +0 -1
  149. package/dist/plugins/plugin-manager.js +0 -595
  150. package/dist/plugins/plugin-manager.js.map +0 -1
  151. package/dist/types/index.d.ts +0 -224
  152. package/dist/types/index.d.ts.map +0 -1
  153. package/dist/types/index.js +0 -3
  154. package/dist/types/index.js.map +0 -1
  155. package/dist/utils/config-manager.d.ts +0 -73
  156. package/dist/utils/config-manager.d.ts.map +0 -1
  157. package/dist/utils/config-manager.js +0 -339
  158. package/dist/utils/config-manager.js.map +0 -1
  159. package/dist/utils/error-handler.d.ts +0 -46
  160. package/dist/utils/error-handler.d.ts.map +0 -1
  161. package/dist/utils/error-handler.js +0 -169
  162. package/dist/utils/error-handler.js.map +0 -1
  163. package/dist/utils/logger.d.ts +0 -25
  164. package/dist/utils/logger.d.ts.map +0 -1
  165. package/dist/utils/logger.js +0 -94
  166. package/dist/utils/logger.js.map +0 -1
@@ -1,612 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConversationManager = void 0;
4
- const tslib_1 = require("tslib");
5
- const events_1 = require("events");
6
- const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
7
- const path_1 = tslib_1.__importDefault(require("path"));
8
- const logger_1 = require("../utils/logger");
9
- /**
10
- * Conversation manager handles session persistence, context optimization, and memory management
11
- */
12
- class ConversationManager extends events_1.EventEmitter {
13
- activeSessions;
14
- claudeClient;
15
- config;
16
- sessionCleanupTimer;
17
- constructor(claudeClient, config = {}) {
18
- super();
19
- this.claudeClient = claudeClient;
20
- this.config = {
21
- maxHistoryLength: 100,
22
- contextWindowSize: 20,
23
- sessionTimeout: 60, // 1 hour
24
- persistencePath: path_1.default.join(process.cwd(), '.wundr', 'conversations'),
25
- autoSave: true,
26
- compressionThreshold: 50,
27
- ...config,
28
- };
29
- this.activeSessions = new Map();
30
- this.initializeManager();
31
- }
32
- /**
33
- * Create a new conversation session
34
- */
35
- async createSession(options = {}) {
36
- const sessionId = options.id ||
37
- `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
38
- const session = {
39
- id: sessionId,
40
- model: options.model || this.claudeClient.getModelInfo().model,
41
- context: options.context,
42
- history: [],
43
- created: new Date(),
44
- updated: new Date(),
45
- archived: false,
46
- lastAccessed: new Date(),
47
- tags: options.tags || [],
48
- metadata: {
49
- tokenUsage: { total: 0, prompt: 0, completion: 0 },
50
- performance: {
51
- averageResponseTime: 0,
52
- totalRequests: 0,
53
- errorCount: 0,
54
- },
55
- context: {
56
- userPreferences: {},
57
- ...options.metadata?.context,
58
- },
59
- ...options.metadata,
60
- },
61
- };
62
- this.activeSessions.set(sessionId, session);
63
- if (this.config.autoSave) {
64
- await this.persistSession(session);
65
- }
66
- this.emit('session_created', { sessionId, session });
67
- logger_1.logger.debug(`Created conversation session: ${sessionId}`);
68
- return session;
69
- }
70
- /**
71
- * Load an existing session
72
- */
73
- async loadSession(sessionId) {
74
- // Check active sessions first
75
- if (this.activeSessions.has(sessionId)) {
76
- const session = this.activeSessions.get(sessionId);
77
- session.lastAccessed = new Date();
78
- return session;
79
- }
80
- // Load from persistence
81
- try {
82
- const sessionPath = this.getSessionPath(sessionId);
83
- if (await fs_extra_1.default.pathExists(sessionPath)) {
84
- const data = await fs_extra_1.default.readJson(sessionPath);
85
- const session = this.deserializeSession(data);
86
- session.lastAccessed = new Date();
87
- this.activeSessions.set(sessionId, session);
88
- this.emit('session_loaded', { sessionId, session });
89
- logger_1.logger.debug(`Loaded conversation session: ${sessionId}`);
90
- return session;
91
- }
92
- }
93
- catch (error) {
94
- logger_1.logger.error(`Failed to load session ${sessionId}:`, error);
95
- }
96
- return null;
97
- }
98
- /**
99
- * Send a message in a conversation session
100
- */
101
- async sendMessage(sessionId, message, options = {}) {
102
- const session = await this.loadSession(sessionId);
103
- if (!session) {
104
- throw new Error(`Session not found: ${sessionId}`);
105
- }
106
- const startTime = Date.now();
107
- try {
108
- // Add user message to history
109
- const userMessage = {
110
- role: 'user',
111
- content: message,
112
- timestamp: new Date(),
113
- metadata: options.metadata,
114
- };
115
- session.history.push(userMessage);
116
- // Optimize conversation context
117
- const contextMessages = this.optimizeContext(session);
118
- // Convert to Claude message format
119
- const claudeMessages = contextMessages.map(msg => ({
120
- role: msg.role,
121
- content: msg.content,
122
- }));
123
- // Send to Claude
124
- let response;
125
- if (options.streaming) {
126
- response = this.claudeClient.streamConversation(claudeMessages, options.systemPrompt);
127
- }
128
- else {
129
- response = await this.claudeClient.sendConversation(claudeMessages, options.systemPrompt);
130
- }
131
- // Handle streaming response
132
- if (options.streaming) {
133
- return this.handleStreamingResponse(session, response, startTime);
134
- }
135
- else {
136
- return await this.handleSyncResponse(session, response, startTime);
137
- }
138
- }
139
- catch (error) {
140
- session.metadata.performance.errorCount++;
141
- this.emit('message_error', { sessionId, error, message });
142
- throw error;
143
- }
144
- }
145
- /**
146
- * Get conversation history with optional filtering
147
- */
148
- getHistory(sessionId, options = {}) {
149
- const session = this.activeSessions.get(sessionId);
150
- if (!session) {
151
- return [];
152
- }
153
- let history = [...session.history];
154
- // Apply filters
155
- if (options.from) {
156
- history = history.filter(msg => msg.timestamp >= options.from);
157
- }
158
- if (options.to) {
159
- history = history.filter(msg => msg.timestamp <= options.to);
160
- }
161
- if (options.roles) {
162
- history = history.filter(msg => options.roles.includes(msg.role));
163
- }
164
- if (options.limit) {
165
- history = history.slice(-options.limit);
166
- }
167
- return history;
168
- }
169
- /**
170
- * Add context to a conversation session
171
- */
172
- async addContext(sessionId, contextType, contextData) {
173
- const session = await this.loadSession(sessionId);
174
- if (!session) {
175
- throw new Error(`Session not found: ${sessionId}`);
176
- }
177
- switch (contextType) {
178
- case 'project':
179
- session.metadata.context.projectPath = contextData.path;
180
- break;
181
- case 'command':
182
- session.metadata.context.currentCommand = contextData.command;
183
- break;
184
- case 'preference':
185
- Object.assign(session.metadata.context.userPreferences, contextData);
186
- break;
187
- case 'workflow':
188
- if (!session.metadata.context.workflow) {
189
- session.metadata.context.workflow = [];
190
- }
191
- session.metadata.context.workflow.push(...contextData);
192
- break;
193
- }
194
- session.updated = new Date();
195
- if (this.config.autoSave) {
196
- await this.persistSession(session);
197
- }
198
- this.emit('context_updated', { sessionId, contextType, contextData });
199
- }
200
- /**
201
- * Archive old or inactive sessions
202
- */
203
- async archiveSessions(criteria = {}) {
204
- const archivedSessions = [];
205
- const now = new Date();
206
- for (const [sessionId, session] of this.activeSessions) {
207
- let shouldArchive = false;
208
- if (criteria.olderThan) {
209
- const ageInDays = (now.getTime() - session.created.getTime()) / (1000 * 60 * 60 * 24);
210
- if (ageInDays > criteria.olderThan) {
211
- shouldArchive = true;
212
- }
213
- }
214
- if (criteria.inactiveFor) {
215
- const inactiveInDays = (now.getTime() - session.lastAccessed.getTime()) /
216
- (1000 * 60 * 60 * 24);
217
- if (inactiveInDays > criteria.inactiveFor) {
218
- shouldArchive = true;
219
- }
220
- }
221
- if (shouldArchive) {
222
- session.archived = true;
223
- await this.persistSession(session);
224
- this.activeSessions.delete(sessionId);
225
- archivedSessions.push(sessionId);
226
- }
227
- }
228
- // Handle maxSessions limit
229
- if (criteria.maxSessions &&
230
- this.activeSessions.size > criteria.maxSessions) {
231
- const sessionsByAccess = Array.from(this.activeSessions.entries()).sort(([, a], [, b]) => a.lastAccessed.getTime() - b.lastAccessed.getTime());
232
- const excessCount = this.activeSessions.size - criteria.maxSessions;
233
- const toArchive = sessionsByAccess.slice(0, excessCount);
234
- for (const [sessionId, session] of toArchive) {
235
- session.archived = true;
236
- await this.persistSession(session);
237
- this.activeSessions.delete(sessionId);
238
- archivedSessions.push(sessionId);
239
- }
240
- }
241
- this.emit('sessions_archived', {
242
- count: archivedSessions.length,
243
- sessionIds: archivedSessions,
244
- });
245
- logger_1.logger.debug(`Archived ${archivedSessions.length} sessions`);
246
- return archivedSessions;
247
- }
248
- /**
249
- * Search conversations by content or metadata
250
- */
251
- async searchConversations(query) {
252
- const results = [];
253
- // Search active sessions
254
- for (const [sessionId, session] of this.activeSessions) {
255
- const matches = this.searchSession(session, query);
256
- if (matches.length > 0) {
257
- results.push({
258
- sessionId,
259
- matches,
260
- score: this.calculateSearchScore(matches, query),
261
- });
262
- }
263
- }
264
- // Search persisted sessions if needed
265
- // This could be expensive, so implement pagination/indexing for production
266
- // Sort by score and apply limit
267
- results.sort((a, b) => b.score - a.score);
268
- if (query.limit) {
269
- results.splice(query.limit);
270
- }
271
- return results;
272
- }
273
- /**
274
- * Get session statistics
275
- */
276
- getSessionStats(sessionId) {
277
- if (sessionId) {
278
- const session = this.activeSessions.get(sessionId);
279
- if (!session)
280
- return null;
281
- return {
282
- messageCount: session.history.length,
283
- tokenUsage: session.metadata.tokenUsage,
284
- performance: session.metadata.performance,
285
- created: session.created,
286
- lastAccessed: session.lastAccessed,
287
- tags: session.tags,
288
- };
289
- }
290
- // Global stats
291
- const totalSessions = this.activeSessions.size;
292
- const totalMessages = Array.from(this.activeSessions.values()).reduce((sum, session) => sum + session.history.length, 0);
293
- const totalTokens = Array.from(this.activeSessions.values()).reduce((sum, session) => sum + session.metadata.tokenUsage.total, 0);
294
- return {
295
- totalSessions,
296
- totalMessages,
297
- totalTokens,
298
- averageMessagesPerSession: totalSessions > 0 ? totalMessages / totalSessions : 0,
299
- };
300
- }
301
- /**
302
- * Clean up expired sessions
303
- */
304
- async cleanup() {
305
- const expiredSessionIds = [];
306
- const now = new Date();
307
- const timeoutMs = this.config.sessionTimeout * 60 * 1000;
308
- for (const [sessionId, session] of this.activeSessions) {
309
- const timeSinceAccess = now.getTime() - session.lastAccessed.getTime();
310
- if (timeSinceAccess > timeoutMs) {
311
- expiredSessionIds.push(sessionId);
312
- }
313
- }
314
- for (const sessionId of expiredSessionIds) {
315
- const session = this.activeSessions.get(sessionId);
316
- // Persist before removing
317
- if (this.config.autoSave) {
318
- await this.persistSession(session);
319
- }
320
- this.activeSessions.delete(sessionId);
321
- this.emit('session_expired', { sessionId });
322
- }
323
- if (expiredSessionIds.length > 0) {
324
- logger_1.logger.debug(`Cleaned up ${expiredSessionIds.length} expired sessions`);
325
- }
326
- }
327
- /**
328
- * Export conversation data
329
- */
330
- async exportSession(sessionId, format) {
331
- const session = await this.loadSession(sessionId);
332
- if (!session) {
333
- throw new Error(`Session not found: ${sessionId}`);
334
- }
335
- switch (format) {
336
- case 'json':
337
- return JSON.stringify(session, null, 2);
338
- case 'markdown':
339
- return this.sessionToMarkdown(session);
340
- case 'csv':
341
- return this.sessionToCsv(session);
342
- default:
343
- throw new Error(`Unsupported export format: ${format}`);
344
- }
345
- }
346
- /**
347
- * Import conversation data
348
- */
349
- async importSession(data, format) {
350
- if (format !== 'json') {
351
- throw new Error(`Unsupported import format: ${format}`);
352
- }
353
- const sessionData = JSON.parse(data);
354
- const session = this.deserializeSession(sessionData);
355
- // Generate new ID to avoid conflicts
356
- session.id = `imported-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
357
- session.created = new Date();
358
- session.lastAccessed = new Date();
359
- this.activeSessions.set(session.id, session);
360
- if (this.config.autoSave) {
361
- await this.persistSession(session);
362
- }
363
- this.emit('session_imported', { sessionId: session.id });
364
- return session.id;
365
- }
366
- /**
367
- * List all sessions with pagination
368
- */
369
- async listSessions(options = {}) {
370
- const allSessions = Array.from(this.activeSessions.values());
371
- // Filter archived if needed
372
- const filteredSessions = options.includeArchived
373
- ? allSessions
374
- : allSessions.filter(s => !s.archived);
375
- // Sort
376
- const sortBy = options.sortBy || 'lastAccessed';
377
- const sortOrder = options.sortOrder || 'desc';
378
- filteredSessions.sort((a, b) => {
379
- const aValue = a[sortBy].getTime();
380
- const bValue = b[sortBy].getTime();
381
- return sortOrder === 'desc' ? bValue - aValue : aValue - bValue;
382
- });
383
- // Paginate
384
- const offset = options.offset || 0;
385
- const limit = options.limit || 50;
386
- const paginatedSessions = filteredSessions.slice(offset, offset + limit);
387
- return {
388
- sessions: paginatedSessions.map(s => ({
389
- id: s.id,
390
- created: s.created,
391
- updated: s.updated,
392
- lastAccessed: s.lastAccessed,
393
- tags: s.tags,
394
- archived: s.archived,
395
- })),
396
- total: filteredSessions.length,
397
- hasMore: offset + limit < filteredSessions.length,
398
- };
399
- }
400
- // Private helper methods
401
- async initializeManager() {
402
- // Ensure persistence directory exists
403
- await fs_extra_1.default.ensureDir(this.config.persistencePath);
404
- // Start cleanup timer
405
- this.sessionCleanupTimer = setInterval(() => {
406
- this.cleanup().catch(error => {
407
- logger_1.logger.error('Session cleanup failed:', error);
408
- });
409
- }, 10 * 60 * 1000); // Every 10 minutes
410
- logger_1.logger.debug('Conversation manager initialized');
411
- }
412
- optimizeContext(session) {
413
- const { contextWindowSize, compressionThreshold } = this.config;
414
- if (session.history.length <= contextWindowSize) {
415
- return session.history;
416
- }
417
- // Keep system messages and recent messages
418
- const systemMessages = session.history.filter(msg => msg.role === 'system');
419
- const recentMessages = session.history.slice(-contextWindowSize + systemMessages.length);
420
- // If we still have too many messages, apply compression
421
- if (recentMessages.length > compressionThreshold) {
422
- return this.compressHistory([...systemMessages, ...recentMessages]);
423
- }
424
- return [...systemMessages, ...recentMessages];
425
- }
426
- compressHistory(messages) {
427
- // Simple compression: summarize older messages
428
- // In a production system, you might use Claude to generate summaries
429
- const recentCount = 10;
430
- const recent = messages.slice(-recentCount);
431
- const older = messages.slice(0, -recentCount);
432
- if (older.length === 0)
433
- return recent;
434
- const summary = {
435
- role: 'system',
436
- content: `[Previous conversation summary: ${older.length} messages covering topics and discussions that led to the current context]`,
437
- timestamp: new Date(),
438
- };
439
- return [summary, ...recent];
440
- }
441
- async handleSyncResponse(session, response, startTime) {
442
- const endTime = Date.now();
443
- const responseTime = endTime - startTime;
444
- // Add AI response to history
445
- const aiMessage = {
446
- role: 'assistant',
447
- content: response,
448
- timestamp: new Date(),
449
- };
450
- session.history.push(aiMessage);
451
- session.updated = new Date();
452
- session.lastAccessed = new Date();
453
- // Update performance metrics
454
- this.updatePerformanceMetrics(session, responseTime);
455
- if (this.config.autoSave) {
456
- await this.persistSession(session);
457
- }
458
- this.emit('message_complete', {
459
- sessionId: session.id,
460
- responseTime,
461
- tokenCount: response.length, // Rough approximation
462
- });
463
- return response;
464
- }
465
- async *handleStreamingResponse(session, responseGenerator, startTime) {
466
- let fullResponse = '';
467
- let firstChunk = true;
468
- for await (const chunk of responseGenerator) {
469
- if (firstChunk) {
470
- this.emit('stream_started', { sessionId: session.id });
471
- firstChunk = false;
472
- }
473
- fullResponse += chunk;
474
- yield chunk;
475
- }
476
- const endTime = Date.now();
477
- const responseTime = endTime - startTime;
478
- // Add complete response to history
479
- const aiMessage = {
480
- role: 'assistant',
481
- content: fullResponse,
482
- timestamp: new Date(),
483
- };
484
- session.history.push(aiMessage);
485
- session.updated = new Date();
486
- session.lastAccessed = new Date();
487
- this.updatePerformanceMetrics(session, responseTime);
488
- if (this.config.autoSave) {
489
- await this.persistSession(session);
490
- }
491
- this.emit('stream_complete', {
492
- sessionId: session.id,
493
- responseTime,
494
- tokenCount: fullResponse.length,
495
- });
496
- }
497
- updatePerformanceMetrics(session, responseTime) {
498
- const perf = session.metadata.performance;
499
- perf.totalRequests++;
500
- perf.averageResponseTime =
501
- (perf.averageResponseTime * (perf.totalRequests - 1) + responseTime) /
502
- perf.totalRequests;
503
- }
504
- async persistSession(session) {
505
- const sessionPath = this.getSessionPath(session.id);
506
- const serialized = this.serializeSession(session);
507
- await fs_extra_1.default.ensureDir(path_1.default.dirname(sessionPath));
508
- await fs_extra_1.default.writeJson(sessionPath, serialized, { spaces: 2 });
509
- }
510
- getSessionPath(sessionId) {
511
- return path_1.default.join(this.config.persistencePath, `${sessionId}.json`);
512
- }
513
- serializeSession(session) {
514
- return {
515
- ...session,
516
- created: session.created.toISOString(),
517
- updated: session.updated.toISOString(),
518
- lastAccessed: session.lastAccessed.toISOString(),
519
- history: session.history.map(msg => ({
520
- ...msg,
521
- timestamp: msg.timestamp.toISOString(),
522
- })),
523
- };
524
- }
525
- deserializeSession(data) {
526
- return {
527
- ...data,
528
- created: new Date(data.created),
529
- updated: new Date(data.updated),
530
- lastAccessed: new Date(data.lastAccessed),
531
- history: data.history.map((msg) => ({
532
- ...msg,
533
- timestamp: new Date(msg.timestamp),
534
- })),
535
- };
536
- }
537
- searchSession(session, query) {
538
- let matches = session.history;
539
- if (query.text) {
540
- const searchText = query.text.toLowerCase();
541
- matches = matches.filter(msg => msg.content.toLowerCase().includes(searchText));
542
- }
543
- if (query.dateRange) {
544
- matches = matches.filter(msg => msg.timestamp >= query.dateRange.from &&
545
- msg.timestamp <= query.dateRange.to);
546
- }
547
- if (query.tags && query.tags.length > 0) {
548
- const hasMatchingTag = query.tags.some((tag) => session.tags.includes(tag));
549
- if (!hasMatchingTag) {
550
- matches = [];
551
- }
552
- }
553
- if (query.model && session.model !== query.model) {
554
- matches = [];
555
- }
556
- return matches;
557
- }
558
- calculateSearchScore(matches, query) {
559
- let score = matches.length;
560
- if (query.text) {
561
- // Boost score based on exact matches
562
- const exactMatches = matches.filter(msg => msg.content.toLowerCase().includes(query.text.toLowerCase())).length;
563
- score += exactMatches * 2;
564
- }
565
- return score;
566
- }
567
- sessionToMarkdown(session) {
568
- let markdown = `# Conversation: ${session.id}\n\n`;
569
- markdown += `**Model:** ${session.model}\n`;
570
- markdown += `**Created:** ${session.created.toLocaleString()}\n`;
571
- markdown += `**Last Updated:** ${session.updated.toLocaleString()}\n`;
572
- markdown += `**Messages:** ${session.history.length}\n`;
573
- if (session.tags.length > 0) {
574
- markdown += `**Tags:** ${session.tags.join(', ')}\n`;
575
- }
576
- markdown += '\n---\n\n';
577
- session.history.forEach((msg, index) => {
578
- const role = msg.role === 'user' ? '🧑 **You**' : '🤖 **Assistant**';
579
- markdown += `## Message ${index + 1}\n\n`;
580
- markdown += `${role} - *${msg.timestamp.toLocaleString()}*\n\n`;
581
- markdown += `${msg.content}\n\n`;
582
- markdown += '---\n\n';
583
- });
584
- return markdown;
585
- }
586
- sessionToCsv(session) {
587
- const headers = ['Index', 'Role', 'Content', 'Timestamp'];
588
- const rows = [headers];
589
- session.history.forEach((msg, index) => {
590
- rows.push([
591
- (index + 1).toString(),
592
- msg.role,
593
- `"${msg.content.replace(/"/g, '""')}"`, // Escape quotes
594
- msg.timestamp.toISOString(),
595
- ]);
596
- });
597
- return rows.map(row => row.join(',')).join('\n');
598
- }
599
- /**
600
- * Cleanup resources
601
- */
602
- destroy() {
603
- if (this.sessionCleanupTimer) {
604
- clearInterval(this.sessionCleanupTimer);
605
- }
606
- this.activeSessions.clear();
607
- this.removeAllListeners();
608
- }
609
- }
610
- exports.ConversationManager = ConversationManager;
611
- exports.default = ConversationManager;
612
- //# sourceMappingURL=conversation-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/ai/conversation-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { ClaudeClient } from './claude-client';
2
- export type { ClaudeConfig, ClaudeMessage, ClaudeResponse, } from './claude-client';
3
- export { AIService } from './ai-service';
4
- export type { AIServiceConfig, ConversationContext } from './ai-service';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
package/dist/ai/index.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AIService = exports.ClaudeClient = void 0;
4
- var claude_client_1 = require("./claude-client");
5
- Object.defineProperty(exports, "ClaudeClient", { enumerable: true, get: function () { return claude_client_1.ClaudeClient; } });
6
- var ai_service_1 = require("./ai-service");
7
- Object.defineProperty(exports, "AIService", { enumerable: true, get: function () { return ai_service_1.AIService; } });
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAMrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA"}