vibe-coding-mcp 2.7.0 → 2.12.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 (40) hide show
  1. package/README.md +105 -4
  2. package/dist/__tests__/git.test.d.ts +2 -0
  3. package/dist/__tests__/git.test.d.ts.map +1 -0
  4. package/dist/__tests__/git.test.js +282 -0
  5. package/dist/__tests__/git.test.js.map +1 -0
  6. package/dist/core/schemas.d.ts +345 -0
  7. package/dist/core/schemas.d.ts.map +1 -1
  8. package/dist/core/schemas.js +128 -0
  9. package/dist/core/schemas.js.map +1 -1
  10. package/dist/stdio.js +32 -2
  11. package/dist/stdio.js.map +1 -1
  12. package/dist/tools/autoTag.d.ts +145 -0
  13. package/dist/tools/autoTag.d.ts.map +1 -0
  14. package/dist/tools/autoTag.js +475 -0
  15. package/dist/tools/autoTag.js.map +1 -0
  16. package/dist/tools/batch.d.ts +119 -0
  17. package/dist/tools/batch.d.ts.map +1 -0
  18. package/dist/tools/batch.js +459 -0
  19. package/dist/tools/batch.js.map +1 -0
  20. package/dist/tools/git.d.ts +226 -0
  21. package/dist/tools/git.d.ts.map +1 -0
  22. package/dist/tools/git.js +493 -0
  23. package/dist/tools/git.js.map +1 -0
  24. package/dist/tools/sessionStats.d.ts +129 -0
  25. package/dist/tools/sessionStats.d.ts.map +1 -0
  26. package/dist/tools/sessionStats.js +554 -0
  27. package/dist/tools/sessionStats.js.map +1 -0
  28. package/dist/tools/template.d.ts +127 -0
  29. package/dist/tools/template.d.ts.map +1 -0
  30. package/dist/tools/template.js +617 -0
  31. package/dist/tools/template.js.map +1 -0
  32. package/dist/utils/gitExecutor.d.ts +34 -0
  33. package/dist/utils/gitExecutor.d.ts.map +1 -0
  34. package/dist/utils/gitExecutor.js +95 -0
  35. package/dist/utils/gitExecutor.js.map +1 -0
  36. package/dist/utils/gitParsers.d.ts +90 -0
  37. package/dist/utils/gitParsers.d.ts.map +1 -0
  38. package/dist/utils/gitParsers.js +286 -0
  39. package/dist/utils/gitParsers.js.map +1 -0
  40. package/package.json +3 -2
@@ -0,0 +1,554 @@
1
+ /**
2
+ * Session Statistics Dashboard Tool (v2.9)
3
+ * Provides analytics and insights about coding sessions
4
+ */
5
+ import { createToolLogger } from '../core/logger.js';
6
+ import { listSessions } from '../core/sessionStorage.js';
7
+ const logger = createToolLogger('sessionStats');
8
+ // Helper functions
9
+ function parseDate(dateStr) {
10
+ // Support relative dates like "1 week ago", "last month"
11
+ const now = new Date();
12
+ const lowerStr = dateStr.toLowerCase();
13
+ if (lowerStr.includes('ago')) {
14
+ const match = lowerStr.match(/(\d+)\s*(day|week|month|year)s?\s*ago/);
15
+ if (match) {
16
+ const [, num, unit] = match;
17
+ const amount = parseInt(num, 10);
18
+ switch (unit) {
19
+ case 'day':
20
+ now.setDate(now.getDate() - amount);
21
+ break;
22
+ case 'week':
23
+ now.setDate(now.getDate() - amount * 7);
24
+ break;
25
+ case 'month':
26
+ now.setMonth(now.getMonth() - amount);
27
+ break;
28
+ case 'year':
29
+ now.setFullYear(now.getFullYear() - amount);
30
+ break;
31
+ }
32
+ return now;
33
+ }
34
+ }
35
+ // Try parsing as ISO date
36
+ return new Date(dateStr);
37
+ }
38
+ function getPeriodStart(period) {
39
+ const now = new Date();
40
+ switch (period) {
41
+ case 'day':
42
+ now.setHours(0, 0, 0, 0);
43
+ return now;
44
+ case 'week':
45
+ now.setDate(now.getDate() - now.getDay());
46
+ now.setHours(0, 0, 0, 0);
47
+ return now;
48
+ case 'month':
49
+ now.setDate(1);
50
+ now.setHours(0, 0, 0, 0);
51
+ return now;
52
+ case 'year':
53
+ now.setMonth(0, 1);
54
+ now.setHours(0, 0, 0, 0);
55
+ return now;
56
+ default:
57
+ return new Date(0); // All time
58
+ }
59
+ }
60
+ function formatPeriodLabel(date, period) {
61
+ switch (period) {
62
+ case 'day':
63
+ return date.toISOString().split('T')[0];
64
+ case 'week':
65
+ const weekStart = new Date(date);
66
+ weekStart.setDate(date.getDate() - date.getDay());
67
+ return `Week of ${weekStart.toISOString().split('T')[0]}`;
68
+ case 'month':
69
+ return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}`;
70
+ case 'year':
71
+ return String(date.getFullYear());
72
+ default:
73
+ return date.toISOString().split('T')[0];
74
+ }
75
+ }
76
+ function generateInsights(sessions, languages, tags, productivity) {
77
+ const insights = [];
78
+ // Language insights
79
+ if (languages.length > 0) {
80
+ const topLang = languages[0];
81
+ insights.push(`Your primary language is ${topLang.language} (${topLang.percentage.toFixed(1)}% of code blocks)`);
82
+ if (languages.length > 3) {
83
+ insights.push(`You work with ${languages.length} different languages, showing versatility`);
84
+ }
85
+ }
86
+ // Productivity insights
87
+ if (productivity.mostProductiveDay) {
88
+ insights.push(`You're most productive on ${productivity.mostProductiveDay}s`);
89
+ }
90
+ if (productivity.mostProductiveHour >= 0) {
91
+ const hour = productivity.mostProductiveHour;
92
+ const period = hour < 12 ? 'morning' : hour < 17 ? 'afternoon' : 'evening';
93
+ insights.push(`Peak coding time is in the ${period} around ${hour}:00`);
94
+ }
95
+ // Tag insights
96
+ if (tags.length > 0) {
97
+ const topTags = tags.slice(0, 3).map(t => t.tag);
98
+ insights.push(`Most common focus areas: ${topTags.join(', ')}`);
99
+ }
100
+ // Session patterns
101
+ if (productivity.averageCodeBlocksPerSession > 5) {
102
+ insights.push('Your sessions are feature-rich with high code output');
103
+ }
104
+ if (productivity.averageDecisionsPerSession > 2) {
105
+ insights.push('You document design decisions well - great for maintainability');
106
+ }
107
+ return insights;
108
+ }
109
+ // Main tool function
110
+ export async function sessionStatsTool(input) {
111
+ const { action, since, until, period = 'all', tags: filterTags, languages: filterLanguages, format = 'summary', includeInsights = true, compareWith, } = input;
112
+ logger.info('Session stats requested', { action, period });
113
+ try {
114
+ // Get all sessions
115
+ const { sessions } = await listSessions({ limit: 10000 });
116
+ // Filter by date range
117
+ let filteredSessions = sessions;
118
+ const periodStart = since ? parseDate(since) : getPeriodStart(period);
119
+ const periodEnd = until ? parseDate(until) : new Date();
120
+ filteredSessions = sessions.filter((s) => {
121
+ const sessionDate = new Date(s.createdAt);
122
+ return sessionDate >= periodStart && sessionDate <= periodEnd;
123
+ });
124
+ // Filter by tags if specified
125
+ if (filterTags && filterTags.length > 0) {
126
+ filteredSessions = filteredSessions.filter((s) => s.tags?.some((t) => filterTags.includes(t)));
127
+ }
128
+ switch (action) {
129
+ case 'overview': {
130
+ // Collect all code blocks and decisions
131
+ let totalCodeBlocks = 0;
132
+ let totalDecisions = 0;
133
+ const languageSet = new Set();
134
+ const tagSet = new Set();
135
+ filteredSessions.forEach((s) => {
136
+ if (s.codeContexts) {
137
+ s.codeContexts.forEach((ctx) => {
138
+ if (ctx.codeBlocks) {
139
+ totalCodeBlocks += ctx.codeBlocks.length;
140
+ ctx.codeBlocks.forEach((cb) => {
141
+ if (cb.language)
142
+ languageSet.add(cb.language);
143
+ });
144
+ }
145
+ });
146
+ }
147
+ if (s.designDecisions) {
148
+ totalDecisions += s.designDecisions.length;
149
+ }
150
+ if (s.tags) {
151
+ s.tags.forEach((t) => tagSet.add(t));
152
+ }
153
+ });
154
+ const sessionCount = filteredSessions.length;
155
+ return {
156
+ success: true,
157
+ action,
158
+ overview: {
159
+ totalSessions: sessionCount,
160
+ totalCodeBlocks,
161
+ totalDesignDecisions: totalDecisions,
162
+ totalLanguages: languageSet.size,
163
+ totalTags: tagSet.size,
164
+ dateRange: {
165
+ from: periodStart.toISOString(),
166
+ to: periodEnd.toISOString(),
167
+ },
168
+ averages: {
169
+ codeBlocksPerSession: sessionCount > 0 ? totalCodeBlocks / sessionCount : 0,
170
+ decisionsPerSession: sessionCount > 0 ? totalDecisions / sessionCount : 0,
171
+ tagsPerSession: sessionCount > 0 ? tagSet.size / sessionCount : 0,
172
+ },
173
+ },
174
+ period,
175
+ generatedAt: new Date().toISOString(),
176
+ };
177
+ }
178
+ case 'languages': {
179
+ const langMap = new Map();
180
+ filteredSessions.forEach((s) => {
181
+ if (s.codeContexts) {
182
+ s.codeContexts.forEach((ctx) => {
183
+ if (ctx.codeBlocks) {
184
+ ctx.codeBlocks.forEach((cb) => {
185
+ const lang = cb.language || 'unknown';
186
+ const existing = langMap.get(lang) || { count: 0, lines: 0 };
187
+ existing.count++;
188
+ existing.lines += (cb.code?.split('\n').length || 0);
189
+ langMap.set(lang, existing);
190
+ });
191
+ }
192
+ });
193
+ }
194
+ });
195
+ const totalBlocks = Array.from(langMap.values()).reduce((sum, v) => sum + v.count, 0);
196
+ const languages = Array.from(langMap.entries())
197
+ .map(([language, stats]) => ({
198
+ language,
199
+ count: stats.count,
200
+ linesOfCode: stats.lines,
201
+ percentage: totalBlocks > 0 ? (stats.count / totalBlocks) * 100 : 0,
202
+ }))
203
+ .filter(l => !filterLanguages || filterLanguages.includes(l.language))
204
+ .sort((a, b) => b.count - a.count);
205
+ const insights = includeInsights ? [
206
+ languages.length > 0 ? `Top language: ${languages[0].language} with ${languages[0].count} code blocks` : 'No code blocks found',
207
+ `Total lines of code: ${languages.reduce((sum, l) => sum + l.linesOfCode, 0)}`,
208
+ ] : undefined;
209
+ return {
210
+ success: true,
211
+ action,
212
+ languages,
213
+ insights,
214
+ period,
215
+ generatedAt: new Date().toISOString(),
216
+ };
217
+ }
218
+ case 'timeline': {
219
+ const timeMap = new Map();
220
+ filteredSessions.forEach((s) => {
221
+ const date = new Date(s.createdAt);
222
+ const label = formatPeriodLabel(date, period === 'all' ? 'month' : period);
223
+ const existing = timeMap.get(label) || { sessions: 0, codeBlocks: 0, decisions: 0 };
224
+ existing.sessions++;
225
+ if (s.codeContexts) {
226
+ s.codeContexts.forEach((ctx) => {
227
+ existing.codeBlocks += ctx.codeBlocks?.length || 0;
228
+ });
229
+ }
230
+ existing.decisions += s.designDecisions?.length || 0;
231
+ timeMap.set(label, existing);
232
+ });
233
+ const timeline = Array.from(timeMap.entries())
234
+ .map(([period, stats]) => ({
235
+ period,
236
+ sessionCount: stats.sessions,
237
+ codeBlockCount: stats.codeBlocks,
238
+ decisionsCount: stats.decisions,
239
+ }))
240
+ .sort((a, b) => a.period.localeCompare(b.period));
241
+ return {
242
+ success: true,
243
+ action,
244
+ timeline,
245
+ period,
246
+ generatedAt: new Date().toISOString(),
247
+ };
248
+ }
249
+ case 'tags': {
250
+ const tagMap = new Map();
251
+ const tagCoOccurrence = new Map();
252
+ filteredSessions.forEach((s) => {
253
+ if (s.tags) {
254
+ s.tags.forEach((tag) => {
255
+ const existing = tagMap.get(tag) || { count: 0, sessions: new Set() };
256
+ existing.count++;
257
+ existing.sessions.add(s.id);
258
+ tagMap.set(tag, existing);
259
+ // Track co-occurrence
260
+ s.tags.forEach((otherTag) => {
261
+ if (otherTag !== tag) {
262
+ if (!tagCoOccurrence.has(tag)) {
263
+ tagCoOccurrence.set(tag, new Map());
264
+ }
265
+ const coMap = tagCoOccurrence.get(tag);
266
+ coMap.set(otherTag, (coMap.get(otherTag) || 0) + 1);
267
+ }
268
+ });
269
+ });
270
+ }
271
+ });
272
+ const totalTags = Array.from(tagMap.values()).reduce((sum, v) => sum + v.count, 0);
273
+ const tags = Array.from(tagMap.entries())
274
+ .map(([tag, stats]) => {
275
+ const coMap = tagCoOccurrence.get(tag);
276
+ const relatedTags = coMap
277
+ ? Array.from(coMap.entries())
278
+ .sort((a, b) => b[1] - a[1])
279
+ .slice(0, 3)
280
+ .map(([t]) => t)
281
+ : [];
282
+ return {
283
+ tag,
284
+ count: stats.count,
285
+ percentage: totalTags > 0 ? (stats.count / totalTags) * 100 : 0,
286
+ relatedTags,
287
+ };
288
+ })
289
+ .sort((a, b) => b.count - a.count);
290
+ return {
291
+ success: true,
292
+ action,
293
+ tags,
294
+ period,
295
+ generatedAt: new Date().toISOString(),
296
+ };
297
+ }
298
+ case 'productivity': {
299
+ const dayCount = new Map();
300
+ const hourCount = new Map();
301
+ const uniqueDays = new Set();
302
+ let totalCodeBlocks = 0;
303
+ let totalDecisions = 0;
304
+ filteredSessions.forEach((s) => {
305
+ const date = new Date(s.createdAt);
306
+ const dayName = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];
307
+ const hour = date.getHours();
308
+ const dayKey = date.toISOString().split('T')[0];
309
+ dayCount.set(dayName, (dayCount.get(dayName) || 0) + 1);
310
+ hourCount.set(hour, (hourCount.get(hour) || 0) + 1);
311
+ uniqueDays.add(dayKey);
312
+ if (s.codeContexts) {
313
+ s.codeContexts.forEach((ctx) => {
314
+ totalCodeBlocks += ctx.codeBlocks?.length || 0;
315
+ });
316
+ }
317
+ totalDecisions += s.designDecisions?.length || 0;
318
+ });
319
+ const sessionCount = filteredSessions.length;
320
+ const mostProductiveDay = Array.from(dayCount.entries())
321
+ .sort((a, b) => b[1] - a[1])[0]?.[0] || 'N/A';
322
+ const mostProductiveHour = Array.from(hourCount.entries())
323
+ .sort((a, b) => b[1] - a[1])[0]?.[0] ?? -1;
324
+ const productivity = {
325
+ averageSessionsPerDay: uniqueDays.size > 0 ? sessionCount / uniqueDays.size : 0,
326
+ averageCodeBlocksPerSession: sessionCount > 0 ? totalCodeBlocks / sessionCount : 0,
327
+ averageDecisionsPerSession: sessionCount > 0 ? totalDecisions / sessionCount : 0,
328
+ mostProductiveDay,
329
+ mostProductiveHour,
330
+ totalCodingDays: uniqueDays.size,
331
+ };
332
+ // Generate insights
333
+ const languageStats = await getLanguageStats(filteredSessions);
334
+ const tagStats = await getTagStats(filteredSessions);
335
+ const insights = includeInsights
336
+ ? generateInsights(filteredSessions, languageStats, tagStats, productivity)
337
+ : undefined;
338
+ return {
339
+ success: true,
340
+ action,
341
+ productivity,
342
+ insights,
343
+ period,
344
+ generatedAt: new Date().toISOString(),
345
+ };
346
+ }
347
+ case 'trends': {
348
+ // Compare current period with previous period
349
+ const now = new Date();
350
+ let currentStart;
351
+ let previousStart;
352
+ let previousEnd;
353
+ switch (period) {
354
+ case 'week':
355
+ currentStart = new Date(now);
356
+ currentStart.setDate(now.getDate() - 7);
357
+ previousStart = new Date(currentStart);
358
+ previousStart.setDate(previousStart.getDate() - 7);
359
+ previousEnd = currentStart;
360
+ break;
361
+ case 'month':
362
+ currentStart = new Date(now);
363
+ currentStart.setMonth(now.getMonth() - 1);
364
+ previousStart = new Date(currentStart);
365
+ previousStart.setMonth(previousStart.getMonth() - 1);
366
+ previousEnd = currentStart;
367
+ break;
368
+ default:
369
+ currentStart = new Date(now);
370
+ currentStart.setDate(now.getDate() - 30);
371
+ previousStart = new Date(currentStart);
372
+ previousStart.setDate(previousStart.getDate() - 30);
373
+ previousEnd = currentStart;
374
+ }
375
+ const currentSessions = sessions.filter((s) => {
376
+ const d = new Date(s.createdAt);
377
+ return d >= currentStart && d <= now;
378
+ });
379
+ const previousSessions = sessions.filter((s) => {
380
+ const d = new Date(s.createdAt);
381
+ return d >= previousStart && d < previousEnd;
382
+ });
383
+ const calculateMetrics = (sessionList) => {
384
+ let codeBlocks = 0;
385
+ let decisions = 0;
386
+ sessionList.forEach((s) => {
387
+ if (s.codeContexts) {
388
+ s.codeContexts.forEach((ctx) => {
389
+ codeBlocks += ctx.codeBlocks?.length || 0;
390
+ });
391
+ }
392
+ decisions += s.designDecisions?.length || 0;
393
+ });
394
+ return { sessions: sessionList.length, codeBlocks, decisions };
395
+ };
396
+ const current = calculateMetrics(currentSessions);
397
+ const previous = calculateMetrics(previousSessions);
398
+ const createTrend = (metric, curr, prev) => {
399
+ const change = curr - prev;
400
+ const changePercent = prev > 0 ? ((curr - prev) / prev) * 100 : curr > 0 ? 100 : 0;
401
+ return {
402
+ metric,
403
+ current: curr,
404
+ previous: prev,
405
+ change,
406
+ changePercent,
407
+ trend: change > 0 ? 'up' : change < 0 ? 'down' : 'stable',
408
+ };
409
+ };
410
+ const trends = [
411
+ createTrend('Sessions', current.sessions, previous.sessions),
412
+ createTrend('Code Blocks', current.codeBlocks, previous.codeBlocks),
413
+ createTrend('Design Decisions', current.decisions, previous.decisions),
414
+ ];
415
+ const insights = includeInsights
416
+ ? trends.map((t) => {
417
+ if (t.trend === 'up') {
418
+ return `${t.metric} increased by ${t.changePercent.toFixed(1)}%`;
419
+ }
420
+ else if (t.trend === 'down') {
421
+ return `${t.metric} decreased by ${Math.abs(t.changePercent).toFixed(1)}%`;
422
+ }
423
+ return `${t.metric} remained stable`;
424
+ })
425
+ : undefined;
426
+ return {
427
+ success: true,
428
+ action,
429
+ trends,
430
+ insights,
431
+ period,
432
+ generatedAt: new Date().toISOString(),
433
+ };
434
+ }
435
+ default:
436
+ return {
437
+ success: false,
438
+ action,
439
+ error: `Unknown action: ${action}`,
440
+ generatedAt: new Date().toISOString(),
441
+ };
442
+ }
443
+ }
444
+ catch (error) {
445
+ logger.error('Session stats failed', error);
446
+ return {
447
+ success: false,
448
+ action,
449
+ error: error instanceof Error ? error.message : 'Unknown error',
450
+ generatedAt: new Date().toISOString(),
451
+ };
452
+ }
453
+ }
454
+ // Helper functions for generating insights
455
+ async function getLanguageStats(sessions) {
456
+ const langMap = new Map();
457
+ sessions.forEach((s) => {
458
+ if (s.codeContexts) {
459
+ s.codeContexts.forEach((ctx) => {
460
+ if (ctx.codeBlocks) {
461
+ ctx.codeBlocks.forEach((cb) => {
462
+ const lang = cb.language || 'unknown';
463
+ const existing = langMap.get(lang) || { count: 0, lines: 0 };
464
+ existing.count++;
465
+ existing.lines += (cb.code?.split('\n').length || 0);
466
+ langMap.set(lang, existing);
467
+ });
468
+ }
469
+ });
470
+ }
471
+ });
472
+ const totalBlocks = Array.from(langMap.values()).reduce((sum, v) => sum + v.count, 0);
473
+ return Array.from(langMap.entries())
474
+ .map(([language, stats]) => ({
475
+ language,
476
+ count: stats.count,
477
+ linesOfCode: stats.lines,
478
+ percentage: totalBlocks > 0 ? (stats.count / totalBlocks) * 100 : 0,
479
+ }))
480
+ .sort((a, b) => b.count - a.count);
481
+ }
482
+ async function getTagStats(sessions) {
483
+ const tagMap = new Map();
484
+ sessions.forEach((s) => {
485
+ if (s.tags) {
486
+ s.tags.forEach((tag) => {
487
+ tagMap.set(tag, (tagMap.get(tag) || 0) + 1);
488
+ });
489
+ }
490
+ });
491
+ const total = Array.from(tagMap.values()).reduce((sum, v) => sum + v, 0);
492
+ return Array.from(tagMap.entries())
493
+ .map(([tag, count]) => ({
494
+ tag,
495
+ count,
496
+ percentage: total > 0 ? (count / total) * 100 : 0,
497
+ relatedTags: [],
498
+ }))
499
+ .sort((a, b) => b.count - a.count);
500
+ }
501
+ // Schema for MCP registration
502
+ export const sessionStatsSchema = {
503
+ name: 'muse_session_stats',
504
+ description: 'Provides analytics and insights about coding sessions. Actions: overview (summary stats), languages (language breakdown), timeline (activity over time), tags (tag analysis), productivity (work patterns), trends (compare periods).',
505
+ inputSchema: {
506
+ type: 'object',
507
+ properties: {
508
+ action: {
509
+ type: 'string',
510
+ enum: ['overview', 'languages', 'timeline', 'tags', 'productivity', 'trends'],
511
+ description: 'Type of statistics to retrieve',
512
+ },
513
+ since: {
514
+ type: 'string',
515
+ description: 'Start date for filtering (ISO date or relative like "1 week ago")',
516
+ },
517
+ until: {
518
+ type: 'string',
519
+ description: 'End date for filtering',
520
+ },
521
+ period: {
522
+ type: 'string',
523
+ enum: ['day', 'week', 'month', 'year', 'all'],
524
+ description: 'Time period for grouping (default: all)',
525
+ },
526
+ tags: {
527
+ type: 'array',
528
+ items: { type: 'string' },
529
+ description: 'Filter by specific tags',
530
+ },
531
+ languages: {
532
+ type: 'array',
533
+ items: { type: 'string' },
534
+ description: 'Filter by specific languages',
535
+ },
536
+ format: {
537
+ type: 'string',
538
+ enum: ['summary', 'detailed', 'chart'],
539
+ description: 'Output format (default: summary)',
540
+ },
541
+ includeInsights: {
542
+ type: 'boolean',
543
+ description: 'Include AI-generated insights (default: true)',
544
+ },
545
+ compareWith: {
546
+ type: 'string',
547
+ enum: ['previous', 'average'],
548
+ description: 'Compare with previous period or average',
549
+ },
550
+ },
551
+ required: ['action'],
552
+ },
553
+ };
554
+ //# sourceMappingURL=sessionStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStats.js","sourceRoot":"","sources":["../../src/tools/sessionStats.ts"],"names":[],"mappings":"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"}