screencoach-mcp 0.1.2 → 0.2.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.
- package/dist/index.js +607 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -44,6 +44,61 @@ async function checkHealth() {
|
|
|
44
44
|
return false;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
+
// ==================== Noise Filtering Constants ====================
|
|
48
|
+
const NOISE_APPS = [
|
|
49
|
+
'Spotify',
|
|
50
|
+
'Apple Music',
|
|
51
|
+
'Music',
|
|
52
|
+
'Netflix',
|
|
53
|
+
'YouTube Music',
|
|
54
|
+
'Steam',
|
|
55
|
+
];
|
|
56
|
+
const PRODUCTIVE_APPS = [
|
|
57
|
+
'Code',
|
|
58
|
+
'Visual Studio Code',
|
|
59
|
+
'Cursor',
|
|
60
|
+
'IntelliJ IDEA',
|
|
61
|
+
'WebStorm',
|
|
62
|
+
'PyCharm',
|
|
63
|
+
'Terminal',
|
|
64
|
+
'iTerm2',
|
|
65
|
+
'Warp',
|
|
66
|
+
'Figma',
|
|
67
|
+
'Notion',
|
|
68
|
+
'Obsidian',
|
|
69
|
+
];
|
|
70
|
+
const CURATED_TOOLS = [
|
|
71
|
+
// Coding
|
|
72
|
+
{ name: 'Claude Code', url: 'https://claude.ai', reason: 'AI pair programming in terminal', category: 'coding', pattern_type: 'manual_work' },
|
|
73
|
+
{ name: 'Cursor', url: 'https://cursor.com', reason: 'AI-first code editor', category: 'coding', pattern_type: 'manual_work' },
|
|
74
|
+
{ name: 'GitHub Copilot', url: 'https://copilot.github.com', reason: 'AI code completion', category: 'coding', pattern_type: 'manual_work' },
|
|
75
|
+
{ name: 'Codeium', url: 'https://codeium.com', reason: 'Free AI code assistant', category: 'coding', pattern_type: 'manual_work' },
|
|
76
|
+
// Video
|
|
77
|
+
{ name: 'Descript', url: 'https://descript.com', reason: 'AI video editing with text-based editing', category: 'video', pattern_type: 'manual_work' },
|
|
78
|
+
{ name: 'Remotion', url: 'https://remotion.dev', reason: 'Programmatic video creation with React', category: 'video', pattern_type: 'manual_work' },
|
|
79
|
+
{ name: 'Runway', url: 'https://runwayml.com', reason: 'AI-powered video generation and editing', category: 'video', pattern_type: 'manual_work' },
|
|
80
|
+
// Search
|
|
81
|
+
{ name: 'Perplexity', url: 'https://perplexity.ai', reason: 'AI-powered search with citations', category: 'search', pattern_type: 'searching' },
|
|
82
|
+
{ name: 'Gemini', url: 'https://gemini.google.com', reason: 'Google AI assistant with web access', category: 'search', pattern_type: 'searching' },
|
|
83
|
+
// Spreadsheet
|
|
84
|
+
{ name: 'Claude for Excel', reason: 'AI-powered spreadsheet automation', category: 'spreadsheet', pattern_type: 'manual_work' },
|
|
85
|
+
{ name: 'SheetAI', url: 'https://sheetai.app', reason: 'AI in Google Sheets', category: 'spreadsheet', pattern_type: 'manual_work' },
|
|
86
|
+
{ name: 'Rows', url: 'https://rows.com', reason: 'Spreadsheet with AI built-in', category: 'spreadsheet', pattern_type: 'manual_work' },
|
|
87
|
+
// Automation
|
|
88
|
+
{ name: 'Ralph Plugin', url: 'https://github.com/anthropics/claude-code', reason: 'Background task execution for Claude Code', category: 'automation', pattern_type: 'waiting' },
|
|
89
|
+
{ name: 'Conductor', reason: 'Parallel Claude Code agents with worktrees', category: 'automation', pattern_type: 'waiting' },
|
|
90
|
+
// Backend/Deployment
|
|
91
|
+
{ name: 'Vercel', url: 'https://vercel.com', reason: 'One-click deployment with serverless', category: 'deployment', pattern_type: 'manual_work' },
|
|
92
|
+
{ name: 'Convex', url: 'https://convex.dev', reason: 'Backend-as-a-service with realtime', category: 'backend', pattern_type: 'manual_work' },
|
|
93
|
+
{ name: 'Supabase', url: 'https://supabase.com', reason: 'Open source Firebase alternative', category: 'backend', pattern_type: 'manual_work' },
|
|
94
|
+
{ name: 'v0.dev', url: 'https://v0.dev', reason: 'AI-generated UI components', category: 'frontend', pattern_type: 'manual_work' },
|
|
95
|
+
// AI/Chat
|
|
96
|
+
{ name: 'Vercel AI SDK', url: 'https://sdk.vercel.ai', reason: 'Build AI chat interfaces easily', category: 'ai', pattern_type: 'manual_work' },
|
|
97
|
+
{ name: 'Stream', url: 'https://getstream.io', reason: 'Chat API and SDK', category: 'chat', pattern_type: 'manual_work' },
|
|
98
|
+
// Productivity
|
|
99
|
+
{ name: 'Raycast', url: 'https://raycast.com', reason: 'Unified launcher and productivity', category: 'productivity', pattern_type: 'productivity' },
|
|
100
|
+
{ name: 'Arc Browser', url: 'https://arc.net', reason: 'Better tab and workspace management', category: 'browser', pattern_type: 'productivity' },
|
|
101
|
+
];
|
|
47
102
|
// ==================== Tool Definitions ====================
|
|
48
103
|
const TOOLS = [
|
|
49
104
|
{
|
|
@@ -176,6 +231,129 @@ Use this to verify the connection before performing other operations.`,
|
|
|
176
231
|
properties: {},
|
|
177
232
|
},
|
|
178
233
|
},
|
|
234
|
+
{
|
|
235
|
+
name: 'analyze_session',
|
|
236
|
+
description: `[DEPRECATED - Use scan_activity instead] Legacy session analysis tool.`,
|
|
237
|
+
inputSchema: {
|
|
238
|
+
type: 'object',
|
|
239
|
+
properties: {
|
|
240
|
+
hours: { type: 'number', description: 'Number of hours to analyze. Default: 4' },
|
|
241
|
+
focus_apps: { type: 'array', items: { type: 'string' }, description: 'Optional: specific apps to focus on' },
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
// ==================== Optimizer Tools ====================
|
|
246
|
+
{
|
|
247
|
+
name: 'scan_activity',
|
|
248
|
+
description: `Scan user activity for the last N hours with smart filtering and grouping.
|
|
249
|
+
|
|
250
|
+
**ALWAYS START WITH THIS TOOL** for productivity analysis.
|
|
251
|
+
|
|
252
|
+
Returns:
|
|
253
|
+
- App usage grouped by application with time percentages
|
|
254
|
+
- Top windows per app
|
|
255
|
+
- Activity classification (productive_work, communication, research, entertainment)
|
|
256
|
+
- Sample content for context
|
|
257
|
+
|
|
258
|
+
Automatically filters noise apps (Spotify, Netflix, etc.) unless include_noise=true.
|
|
259
|
+
|
|
260
|
+
**After calling this tool:**
|
|
261
|
+
1. Identify 2-3 apps for deeper investigation (heavy usage, errors, repetition)
|
|
262
|
+
2. Call get_workflow_context for each investigation target
|
|
263
|
+
3. Call get_curated_tools for recommendations
|
|
264
|
+
4. Use YOUR WEB SEARCH to find additional tools for gaps
|
|
265
|
+
|
|
266
|
+
**FORBIDDEN**: NEVER recommend "reducing context switching" or "using fewer apps". People naturally use multiple apps - this is NORMAL workflow.`,
|
|
267
|
+
inputSchema: {
|
|
268
|
+
type: 'object',
|
|
269
|
+
properties: {
|
|
270
|
+
hours: {
|
|
271
|
+
type: 'number',
|
|
272
|
+
description: 'Number of hours to scan. Default: 4',
|
|
273
|
+
},
|
|
274
|
+
include_noise: {
|
|
275
|
+
type: 'boolean',
|
|
276
|
+
description: 'Include entertainment apps (Spotify, Netflix). Default: false',
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'get_workflow_context',
|
|
283
|
+
description: `Deep dive into a specific app/window to understand workflow patterns.
|
|
284
|
+
|
|
285
|
+
Use this after scan_activity identifies apps that need investigation.
|
|
286
|
+
|
|
287
|
+
Returns:
|
|
288
|
+
- Timeline of activity
|
|
289
|
+
- Detected patterns (errors, repetitive tasks)
|
|
290
|
+
- Issues identified (frequent searching, copy-paste, debugging)
|
|
291
|
+
- Time spent
|
|
292
|
+
|
|
293
|
+
**Investigation triggers:**
|
|
294
|
+
- High time percentage from scan_activity
|
|
295
|
+
- Errors or exceptions in sample content
|
|
296
|
+
- Repetitive patterns`,
|
|
297
|
+
inputSchema: {
|
|
298
|
+
type: 'object',
|
|
299
|
+
properties: {
|
|
300
|
+
app: {
|
|
301
|
+
type: 'string',
|
|
302
|
+
description: 'App name to investigate (e.g., "Code", "Chrome")',
|
|
303
|
+
},
|
|
304
|
+
window: {
|
|
305
|
+
type: 'string',
|
|
306
|
+
description: 'Optional: window title filter (partial match)',
|
|
307
|
+
},
|
|
308
|
+
hours: {
|
|
309
|
+
type: 'number',
|
|
310
|
+
description: 'Hours to look back. Default: 2',
|
|
311
|
+
},
|
|
312
|
+
},
|
|
313
|
+
required: ['app'],
|
|
314
|
+
},
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
name: 'get_curated_tools',
|
|
318
|
+
description: `Get vetted, high-quality tool recommendations by category.
|
|
319
|
+
|
|
320
|
+
Use this to get reliable recommendations BEFORE doing web search.
|
|
321
|
+
|
|
322
|
+
Available categories:
|
|
323
|
+
- coding: Claude Code, Cursor, GitHub Copilot, Codeium
|
|
324
|
+
- video: Descript, Remotion, Runway
|
|
325
|
+
- search: Perplexity, Gemini
|
|
326
|
+
- spreadsheet: Claude for Excel, SheetAI, Rows
|
|
327
|
+
- automation: Ralph Plugin, Conductor
|
|
328
|
+
- deployment: Vercel
|
|
329
|
+
- backend: Convex, Supabase
|
|
330
|
+
- frontend: v0.dev
|
|
331
|
+
- ai: Vercel AI SDK
|
|
332
|
+
- chat: Stream
|
|
333
|
+
- productivity: Raycast
|
|
334
|
+
- browser: Arc Browser
|
|
335
|
+
|
|
336
|
+
**After getting curated tools:**
|
|
337
|
+
If there are gaps where no curated tool matches the pain point,
|
|
338
|
+
use YOUR BUILT-IN WEB SEARCH to find additional tools with SPECIFIC queries like:
|
|
339
|
+
"AI TypeScript documentation VS Code extension 2026" (not generic like "coding tools")
|
|
340
|
+
|
|
341
|
+
**FORBIDDEN**: NEVER recommend "reducing context switching", "using fewer apps", or generic advice like "take breaks". Focus ONLY on specific tools that solve specific problems.`,
|
|
342
|
+
inputSchema: {
|
|
343
|
+
type: 'object',
|
|
344
|
+
properties: {
|
|
345
|
+
category: {
|
|
346
|
+
type: 'string',
|
|
347
|
+
description: 'Filter by category (optional)',
|
|
348
|
+
},
|
|
349
|
+
exclude_tools: {
|
|
350
|
+
type: 'array',
|
|
351
|
+
items: { type: 'string' },
|
|
352
|
+
description: 'Tool names to exclude (already recommended)',
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
},
|
|
179
357
|
];
|
|
180
358
|
async function handleSearchScreenContent(args) {
|
|
181
359
|
const params = new URLSearchParams();
|
|
@@ -266,6 +444,421 @@ async function handleHealthCheck() {
|
|
|
266
444
|
return `ScreenCoach is NOT accessible at ${SCREENCOACH_API_URL}. Please make sure the ScreenCoach app is running.`;
|
|
267
445
|
}
|
|
268
446
|
}
|
|
447
|
+
async function handleAnalyzeSession(args) {
|
|
448
|
+
const hours = Number(args.hours) || 4;
|
|
449
|
+
const focusApps = args.focus_apps;
|
|
450
|
+
const endTime = new Date();
|
|
451
|
+
const startTime = new Date(endTime.getTime() - hours * 60 * 60 * 1000);
|
|
452
|
+
// Fetch all data for the period (paginated)
|
|
453
|
+
const allResults = [];
|
|
454
|
+
let offset = 0;
|
|
455
|
+
const limit = 100;
|
|
456
|
+
while (true) {
|
|
457
|
+
const params = new URLSearchParams();
|
|
458
|
+
params.set('start_time', startTime.toISOString());
|
|
459
|
+
params.set('end_time', endTime.toISOString());
|
|
460
|
+
params.set('limit', String(limit));
|
|
461
|
+
params.set('offset', String(offset));
|
|
462
|
+
const result = await apiGet('/search', params);
|
|
463
|
+
if (!result.data || result.data.length === 0)
|
|
464
|
+
break;
|
|
465
|
+
allResults.push(...result.data);
|
|
466
|
+
if (result.data.length < limit)
|
|
467
|
+
break;
|
|
468
|
+
offset += limit;
|
|
469
|
+
// Safety limit
|
|
470
|
+
if (allResults.length >= 1000)
|
|
471
|
+
break;
|
|
472
|
+
}
|
|
473
|
+
if (allResults.length === 0) {
|
|
474
|
+
return `No activity found in the last ${hours} hours.`;
|
|
475
|
+
}
|
|
476
|
+
// Aggregate by app
|
|
477
|
+
const appMap = new Map();
|
|
478
|
+
const allText = [];
|
|
479
|
+
const windowPatterns = [];
|
|
480
|
+
for (const result of allResults) {
|
|
481
|
+
const c = result.content;
|
|
482
|
+
const appName = String(c.app_name || 'Unknown');
|
|
483
|
+
const windowName = String(c.window_name || '');
|
|
484
|
+
// Filter by focus apps if specified
|
|
485
|
+
if (focusApps && focusApps.length > 0) {
|
|
486
|
+
const matchesFocus = focusApps.some(fa => appName.toLowerCase().includes(fa.toLowerCase()));
|
|
487
|
+
if (!matchesFocus)
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
if (!appMap.has(appName)) {
|
|
491
|
+
appMap.set(appName, {
|
|
492
|
+
app_name: appName,
|
|
493
|
+
total_entries: 0,
|
|
494
|
+
windows: {},
|
|
495
|
+
sample_content: [],
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
const app = appMap.get(appName);
|
|
499
|
+
app.total_entries++;
|
|
500
|
+
if (windowName) {
|
|
501
|
+
app.windows[windowName] = (app.windows[windowName] || 0) + 1;
|
|
502
|
+
windowPatterns.push(`${appName}: ${windowName}`);
|
|
503
|
+
}
|
|
504
|
+
// Collect text content
|
|
505
|
+
const text = result.type === 'Audio'
|
|
506
|
+
? String(c.transcription || '')
|
|
507
|
+
: String(c.text || '');
|
|
508
|
+
if (text && app.sample_content.length < 5) {
|
|
509
|
+
app.sample_content.push(truncate(text, 100));
|
|
510
|
+
}
|
|
511
|
+
if (text) {
|
|
512
|
+
allText.push(text);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
// Sort apps by usage
|
|
516
|
+
const appUsage = Array.from(appMap.values())
|
|
517
|
+
.sort((a, b) => b.total_entries - a.total_entries);
|
|
518
|
+
// Detect repetitive patterns (same window title appearing many times)
|
|
519
|
+
const windowCounts = new Map();
|
|
520
|
+
for (const pattern of windowPatterns) {
|
|
521
|
+
windowCounts.set(pattern, (windowCounts.get(pattern) || 0) + 1);
|
|
522
|
+
}
|
|
523
|
+
const repetitiveTasks = Array.from(windowCounts.entries())
|
|
524
|
+
.filter(([_, count]) => count >= 5)
|
|
525
|
+
.sort((a, b) => b[1] - a[1])
|
|
526
|
+
.slice(0, 10)
|
|
527
|
+
.map(([pattern, count]) => `${pattern} (${count}x)`);
|
|
528
|
+
// Extract keywords (simple frequency analysis)
|
|
529
|
+
const wordFreq = new Map();
|
|
530
|
+
const stopWords = new Set(['the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'dare', 'ought', 'used', 'to', 'of', 'in', 'for', 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'and', 'but', 'if', 'or', 'because', 'until', 'while', 'this', 'that', 'these', 'those', 'i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom']);
|
|
531
|
+
for (const text of allText) {
|
|
532
|
+
const words = text.toLowerCase().match(/\b[a-z]{4,}\b/g) || [];
|
|
533
|
+
for (const word of words) {
|
|
534
|
+
if (!stopWords.has(word)) {
|
|
535
|
+
wordFreq.set(word, (wordFreq.get(word) || 0) + 1);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
const keywords = Array.from(wordFreq.entries())
|
|
540
|
+
.filter(([_, count]) => count >= 3)
|
|
541
|
+
.sort((a, b) => b[1] - a[1])
|
|
542
|
+
.slice(0, 20)
|
|
543
|
+
.map(([word]) => word);
|
|
544
|
+
// Identify activity patterns
|
|
545
|
+
const activityPatterns = [];
|
|
546
|
+
for (const app of appUsage.slice(0, 5)) {
|
|
547
|
+
const topWindows = Object.entries(app.windows)
|
|
548
|
+
.sort((a, b) => b[1] - a[1])
|
|
549
|
+
.slice(0, 3)
|
|
550
|
+
.map(([w]) => w);
|
|
551
|
+
if (topWindows.length > 0) {
|
|
552
|
+
activityPatterns.push(`${app.app_name}: ${topWindows.join(', ')}`);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
// Build analysis result
|
|
556
|
+
const analysis = {
|
|
557
|
+
period: {
|
|
558
|
+
start: startTime.toISOString(),
|
|
559
|
+
end: endTime.toISOString(),
|
|
560
|
+
hours,
|
|
561
|
+
},
|
|
562
|
+
app_usage: appUsage.slice(0, 10),
|
|
563
|
+
activity_patterns: activityPatterns,
|
|
564
|
+
repetitive_tasks: repetitiveTasks,
|
|
565
|
+
keywords,
|
|
566
|
+
raw_summary: `Analyzed ${allResults.length} entries from ${appUsage.length} apps over ${hours} hours.`,
|
|
567
|
+
};
|
|
568
|
+
// Format output for AI
|
|
569
|
+
let output = `## Session Analysis (Last ${hours} hours)\n\n`;
|
|
570
|
+
output += `**Period**: ${startTime.toLocaleString()} - ${endTime.toLocaleString()}\n`;
|
|
571
|
+
output += `**Total entries analyzed**: ${allResults.length}\n\n`;
|
|
572
|
+
output += `### App Usage (by activity count)\n`;
|
|
573
|
+
for (const app of analysis.app_usage) {
|
|
574
|
+
const pct = ((app.total_entries / allResults.length) * 100).toFixed(1);
|
|
575
|
+
output += `- **${app.app_name}**: ${app.total_entries} entries (${pct}%)\n`;
|
|
576
|
+
const topWindows = Object.entries(app.windows)
|
|
577
|
+
.sort((a, b) => b[1] - a[1])
|
|
578
|
+
.slice(0, 3);
|
|
579
|
+
for (const [window, count] of topWindows) {
|
|
580
|
+
output += ` - ${truncate(window, 60)}: ${count}x\n`;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (analysis.repetitive_tasks.length > 0) {
|
|
584
|
+
output += `\n### Repetitive Tasks Detected\n`;
|
|
585
|
+
for (const task of analysis.repetitive_tasks) {
|
|
586
|
+
output += `- ${task}\n`;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
if (analysis.keywords.length > 0) {
|
|
590
|
+
output += `\n### Top Keywords\n`;
|
|
591
|
+
output += analysis.keywords.join(', ') + '\n';
|
|
592
|
+
}
|
|
593
|
+
output += `\n### Activity Patterns\n`;
|
|
594
|
+
for (const pattern of analysis.activity_patterns) {
|
|
595
|
+
output += `- ${pattern}\n`;
|
|
596
|
+
}
|
|
597
|
+
output += `\n---\n`;
|
|
598
|
+
output += `**Next steps**: Based on this analysis, identify inefficiencies and search for trending productivity tools that could help optimize the user's workflow.`;
|
|
599
|
+
return output;
|
|
600
|
+
}
|
|
601
|
+
function classifyApp(appName, windowName) {
|
|
602
|
+
const appLower = appName.toLowerCase();
|
|
603
|
+
const windowLower = (windowName || '').toLowerCase();
|
|
604
|
+
// Check productive apps first
|
|
605
|
+
if (PRODUCTIVE_APPS.some(pa => appLower.includes(pa.toLowerCase()))) {
|
|
606
|
+
return 'productive_work';
|
|
607
|
+
}
|
|
608
|
+
// Check noise apps
|
|
609
|
+
if (NOISE_APPS.some(na => appLower.includes(na.toLowerCase()))) {
|
|
610
|
+
return 'entertainment';
|
|
611
|
+
}
|
|
612
|
+
// Browser context-dependent
|
|
613
|
+
if (appLower.includes('chrome') || appLower.includes('safari') || appLower.includes('firefox') || appLower.includes('arc') || appLower.includes('edge')) {
|
|
614
|
+
if (/github|stackoverflow|docs\.|documentation|api\.|developer\.|console\./i.test(windowLower)) {
|
|
615
|
+
return 'research';
|
|
616
|
+
}
|
|
617
|
+
if (/twitter|x\.com|facebook|instagram|tiktok|reddit/i.test(windowLower)) {
|
|
618
|
+
return 'entertainment';
|
|
619
|
+
}
|
|
620
|
+
return 'research';
|
|
621
|
+
}
|
|
622
|
+
// Communication apps
|
|
623
|
+
if (appLower.includes('slack') || appLower.includes('teams') || appLower.includes('zoom') || appLower.includes('discord')) {
|
|
624
|
+
if (windowLower.includes('#random') || windowLower.includes('#watercooler') || windowLower.includes('#off-topic')) {
|
|
625
|
+
return 'entertainment';
|
|
626
|
+
}
|
|
627
|
+
return 'communication';
|
|
628
|
+
}
|
|
629
|
+
return 'unknown';
|
|
630
|
+
}
|
|
631
|
+
async function handleScanActivity(args) {
|
|
632
|
+
const hours = Number(args.hours) || 4;
|
|
633
|
+
const includeNoise = Boolean(args.include_noise);
|
|
634
|
+
const endTime = new Date();
|
|
635
|
+
const startTime = new Date(endTime.getTime() - hours * 60 * 60 * 1000);
|
|
636
|
+
// Fetch all data
|
|
637
|
+
const allResults = [];
|
|
638
|
+
let offset = 0;
|
|
639
|
+
const limit = 100;
|
|
640
|
+
while (true) {
|
|
641
|
+
const params = new URLSearchParams();
|
|
642
|
+
params.set('start_time', startTime.toISOString());
|
|
643
|
+
params.set('end_time', endTime.toISOString());
|
|
644
|
+
params.set('limit', String(limit));
|
|
645
|
+
params.set('offset', String(offset));
|
|
646
|
+
const result = await apiGet('/search', params);
|
|
647
|
+
if (!result.data || result.data.length === 0)
|
|
648
|
+
break;
|
|
649
|
+
allResults.push(...result.data);
|
|
650
|
+
if (result.data.length < limit)
|
|
651
|
+
break;
|
|
652
|
+
offset += limit;
|
|
653
|
+
if (allResults.length >= 1000)
|
|
654
|
+
break;
|
|
655
|
+
}
|
|
656
|
+
if (allResults.length === 0) {
|
|
657
|
+
return `No activity found in the last ${hours} hours.`;
|
|
658
|
+
}
|
|
659
|
+
// Group by app with classification
|
|
660
|
+
const appMap = new Map();
|
|
661
|
+
for (const result of allResults) {
|
|
662
|
+
const c = result.content;
|
|
663
|
+
const appName = String(c.app_name || 'Unknown');
|
|
664
|
+
const windowName = String(c.window_name || '');
|
|
665
|
+
const text = result.type === 'Audio' ? String(c.transcription || '') : String(c.text || '');
|
|
666
|
+
const classification = classifyApp(appName, windowName);
|
|
667
|
+
// Skip noise unless requested
|
|
668
|
+
if (!includeNoise && classification === 'entertainment') {
|
|
669
|
+
continue;
|
|
670
|
+
}
|
|
671
|
+
if (!appMap.has(appName)) {
|
|
672
|
+
appMap.set(appName, {
|
|
673
|
+
entries: 0,
|
|
674
|
+
windows: new Map(),
|
|
675
|
+
content: [],
|
|
676
|
+
classification,
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
const app = appMap.get(appName);
|
|
680
|
+
app.entries++;
|
|
681
|
+
app.windows.set(windowName, (app.windows.get(windowName) || 0) + 1);
|
|
682
|
+
if (text && text.length > 20 && app.content.length < 3) {
|
|
683
|
+
app.content.push(truncate(text, 100));
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
// Sort by entries
|
|
687
|
+
const sortedApps = Array.from(appMap.entries())
|
|
688
|
+
.sort((a, b) => b[1].entries - a[1].entries);
|
|
689
|
+
const totalEntries = sortedApps.reduce((sum, [_, data]) => sum + data.entries, 0);
|
|
690
|
+
const productiveEntries = sortedApps
|
|
691
|
+
.filter(([_, data]) => data.classification === 'productive_work' || data.classification === 'research')
|
|
692
|
+
.reduce((sum, [_, data]) => sum + data.entries, 0);
|
|
693
|
+
// Format output
|
|
694
|
+
let output = `## Activity Scan (Last ${hours} hours)\n\n`;
|
|
695
|
+
output += `**Total entries**: ${totalEntries}\n`;
|
|
696
|
+
output += `**Productive time**: ${((productiveEntries / totalEntries) * 100).toFixed(0)}%\n\n`;
|
|
697
|
+
output += `### App Usage\n`;
|
|
698
|
+
for (const [appName, data] of sortedApps.slice(0, 10)) {
|
|
699
|
+
const pct = ((data.entries / totalEntries) * 100).toFixed(1);
|
|
700
|
+
output += `\n**${appName}** - ${pct}% (${data.classification})\n`;
|
|
701
|
+
const topWindows = Array.from(data.windows.entries())
|
|
702
|
+
.sort((a, b) => b[1] - a[1])
|
|
703
|
+
.slice(0, 3);
|
|
704
|
+
for (const [window, count] of topWindows) {
|
|
705
|
+
output += ` - ${truncate(window, 50)}: ${count}x\n`;
|
|
706
|
+
}
|
|
707
|
+
if (data.content.length > 0) {
|
|
708
|
+
output += ` Sample: "${data.content[0]}"\n`;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
output += `\n---\n`;
|
|
712
|
+
output += `**Investigation targets**: Identify 2-3 apps from above with high usage, errors in samples, or repetitive patterns. Then call get_workflow_context for each.`;
|
|
713
|
+
return output;
|
|
714
|
+
}
|
|
715
|
+
async function handleGetWorkflowContext(args) {
|
|
716
|
+
const app = String(args.app);
|
|
717
|
+
const window = args.window ? String(args.window) : undefined;
|
|
718
|
+
const hours = Number(args.hours) || 2;
|
|
719
|
+
const endTime = new Date();
|
|
720
|
+
const startTime = new Date(endTime.getTime() - hours * 60 * 60 * 1000);
|
|
721
|
+
const params = new URLSearchParams();
|
|
722
|
+
params.set('app_name', app);
|
|
723
|
+
if (window)
|
|
724
|
+
params.set('window_name', window);
|
|
725
|
+
params.set('start_time', startTime.toISOString());
|
|
726
|
+
params.set('end_time', endTime.toISOString());
|
|
727
|
+
params.set('limit', '200');
|
|
728
|
+
const result = await apiGet('/search', params);
|
|
729
|
+
if (!result.data || result.data.length === 0) {
|
|
730
|
+
return `No activity found for ${app}${window ? ` - ${window}` : ''} in the last ${hours} hours.`;
|
|
731
|
+
}
|
|
732
|
+
// Analyze patterns
|
|
733
|
+
const allText = [];
|
|
734
|
+
const errorPatterns = [];
|
|
735
|
+
const repetitiveCounts = new Map();
|
|
736
|
+
const timeline = [];
|
|
737
|
+
for (const r of result.data) {
|
|
738
|
+
const c = r.content;
|
|
739
|
+
const text = r.type === 'Audio' ? String(c.transcription || '') : String(c.text || '');
|
|
740
|
+
const timestamp = String(c.timestamp || '');
|
|
741
|
+
if (text) {
|
|
742
|
+
allText.push(text.toLowerCase());
|
|
743
|
+
// Detect errors
|
|
744
|
+
if (/error|exception|failed|crash|undefined|null reference/i.test(text)) {
|
|
745
|
+
const errorMatch = text.match(/error[:\s].*?[.\n]/i);
|
|
746
|
+
if (errorMatch && errorPatterns.length < 5) {
|
|
747
|
+
errorPatterns.push(truncate(errorMatch[0], 80));
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
// Track repetition
|
|
751
|
+
const normalized = text.slice(0, 40).toLowerCase();
|
|
752
|
+
repetitiveCounts.set(normalized, (repetitiveCounts.get(normalized) || 0) + 1);
|
|
753
|
+
// Build timeline sample
|
|
754
|
+
if (timeline.length < 10) {
|
|
755
|
+
timeline.push({
|
|
756
|
+
time: timestamp,
|
|
757
|
+
action: /error|exception/i.test(text) ? 'error' : 'activity',
|
|
758
|
+
snippet: truncate(text, 80),
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
// Find repetitive patterns
|
|
764
|
+
const repetitivePatterns = Array.from(repetitiveCounts.entries())
|
|
765
|
+
.filter(([_, count]) => count >= 3)
|
|
766
|
+
.sort((a, b) => b[1] - a[1])
|
|
767
|
+
.slice(0, 5)
|
|
768
|
+
.map(([text, count]) => `"${truncate(text, 25)}..." (${count}x)`);
|
|
769
|
+
// Detect issues
|
|
770
|
+
const issues = [];
|
|
771
|
+
const combinedText = allText.join(' ');
|
|
772
|
+
if (/search|google|stackoverflow/i.test(combinedText)) {
|
|
773
|
+
issues.push('Frequent searching - may need better documentation or AI assistance');
|
|
774
|
+
}
|
|
775
|
+
if (/copy|paste|ctrl\+c|ctrl\+v/i.test(combinedText)) {
|
|
776
|
+
issues.push('Copy-paste patterns - repetitive manual work detected');
|
|
777
|
+
}
|
|
778
|
+
if (errorPatterns.length > 2) {
|
|
779
|
+
issues.push('Multiple errors - debugging workflow may need improvement');
|
|
780
|
+
}
|
|
781
|
+
if (repetitivePatterns.length > 2) {
|
|
782
|
+
issues.push('Repetitive tasks - automation opportunity');
|
|
783
|
+
}
|
|
784
|
+
// Format output
|
|
785
|
+
let output = `## Workflow Analysis: ${app}${window ? ` - ${window}` : ''}\n\n`;
|
|
786
|
+
output += `**Time period**: Last ${hours} hours\n`;
|
|
787
|
+
output += `**Entries analyzed**: ${result.data.length}\n\n`;
|
|
788
|
+
if (timeline.length > 0) {
|
|
789
|
+
output += `### Recent Timeline\n`;
|
|
790
|
+
for (const entry of timeline.slice(0, 5)) {
|
|
791
|
+
output += `- [${entry.action}] ${entry.snippet}\n`;
|
|
792
|
+
}
|
|
793
|
+
output += '\n';
|
|
794
|
+
}
|
|
795
|
+
if (errorPatterns.length > 0) {
|
|
796
|
+
output += `### Errors Detected\n`;
|
|
797
|
+
for (const err of errorPatterns) {
|
|
798
|
+
output += `- ${err}\n`;
|
|
799
|
+
}
|
|
800
|
+
output += '\n';
|
|
801
|
+
}
|
|
802
|
+
if (repetitivePatterns.length > 0) {
|
|
803
|
+
output += `### Repetitive Patterns\n`;
|
|
804
|
+
for (const pattern of repetitivePatterns) {
|
|
805
|
+
output += `- ${pattern}\n`;
|
|
806
|
+
}
|
|
807
|
+
output += '\n';
|
|
808
|
+
}
|
|
809
|
+
if (issues.length > 0) {
|
|
810
|
+
output += `### Issues Identified\n`;
|
|
811
|
+
for (const issue of issues) {
|
|
812
|
+
output += `- ${issue}\n`;
|
|
813
|
+
}
|
|
814
|
+
output += '\n';
|
|
815
|
+
}
|
|
816
|
+
output += `---\n`;
|
|
817
|
+
output += `**Next**: Call get_curated_tools to find solutions for these pain points.`;
|
|
818
|
+
return output;
|
|
819
|
+
}
|
|
820
|
+
function handleGetCuratedTools(args) {
|
|
821
|
+
const category = args.category ? String(args.category).toLowerCase() : undefined;
|
|
822
|
+
const excludeTools = args.exclude_tools || [];
|
|
823
|
+
const excludeSet = new Set(excludeTools.map(t => t.toLowerCase()));
|
|
824
|
+
let tools = CURATED_TOOLS;
|
|
825
|
+
// Filter by category
|
|
826
|
+
if (category) {
|
|
827
|
+
tools = tools.filter(t => t.category.toLowerCase() === category);
|
|
828
|
+
}
|
|
829
|
+
// Exclude already recommended
|
|
830
|
+
tools = tools.filter(t => !excludeSet.has(t.name.toLowerCase()));
|
|
831
|
+
if (tools.length === 0) {
|
|
832
|
+
return category
|
|
833
|
+
? `No curated tools found for category "${category}".`
|
|
834
|
+
: 'No curated tools available.';
|
|
835
|
+
}
|
|
836
|
+
// Group by category
|
|
837
|
+
const byCategory = new Map();
|
|
838
|
+
for (const tool of tools) {
|
|
839
|
+
if (!byCategory.has(tool.category)) {
|
|
840
|
+
byCategory.set(tool.category, []);
|
|
841
|
+
}
|
|
842
|
+
byCategory.get(tool.category).push(tool);
|
|
843
|
+
}
|
|
844
|
+
let output = `## Curated Tool Recommendations\n\n`;
|
|
845
|
+
for (const [cat, catTools] of byCategory) {
|
|
846
|
+
output += `### ${cat.charAt(0).toUpperCase() + cat.slice(1)}\n`;
|
|
847
|
+
for (const tool of catTools) {
|
|
848
|
+
output += `- **${tool.name}**`;
|
|
849
|
+
if (tool.url)
|
|
850
|
+
output += ` ([${tool.url}](${tool.url}))`;
|
|
851
|
+
output += `\n ${tool.reason}\n`;
|
|
852
|
+
}
|
|
853
|
+
output += '\n';
|
|
854
|
+
}
|
|
855
|
+
output += `---\n`;
|
|
856
|
+
output += `**Note**: If these don't match the specific pain points, use YOUR WEB SEARCH with specific queries like:\n`;
|
|
857
|
+
output += `- "AI TypeScript documentation VS Code extension 2026"\n`;
|
|
858
|
+
output += `- "automated Excel data entry AI tool 2026"\n`;
|
|
859
|
+
output += `Do NOT use generic queries like "coding tools" or "productivity apps".`;
|
|
860
|
+
return output;
|
|
861
|
+
}
|
|
269
862
|
// ==================== Helpers ====================
|
|
270
863
|
function formatSearchResults(results) {
|
|
271
864
|
return results
|
|
@@ -291,7 +884,7 @@ function truncate(str, maxLen) {
|
|
|
291
884
|
// ==================== Server Setup ====================
|
|
292
885
|
const server = new Server({
|
|
293
886
|
name: 'screencoach-mcp',
|
|
294
|
-
version: '0.
|
|
887
|
+
version: '0.3.0', // Added optimizer tools: scan_activity, get_workflow_context, get_curated_tools
|
|
295
888
|
}, {
|
|
296
889
|
capabilities: {
|
|
297
890
|
tools: {},
|
|
@@ -328,6 +921,19 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
328
921
|
case 'health_check':
|
|
329
922
|
result = await handleHealthCheck();
|
|
330
923
|
break;
|
|
924
|
+
case 'analyze_session':
|
|
925
|
+
result = await handleAnalyzeSession(args || {});
|
|
926
|
+
break;
|
|
927
|
+
// Optimizer tools
|
|
928
|
+
case 'scan_activity':
|
|
929
|
+
result = await handleScanActivity(args || {});
|
|
930
|
+
break;
|
|
931
|
+
case 'get_workflow_context':
|
|
932
|
+
result = await handleGetWorkflowContext(args || {});
|
|
933
|
+
break;
|
|
934
|
+
case 'get_curated_tools':
|
|
935
|
+
result = handleGetCuratedTools(args || {});
|
|
936
|
+
break;
|
|
331
937
|
default:
|
|
332
938
|
return {
|
|
333
939
|
content: [{ type: 'text', text: `Unknown tool: ${name}` }],
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,mEAAmE;AACnE,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB,CAAC;AAEvF,uDAAuD;AAEvD,KAAK,UAAU,MAAM,CAAI,IAAY,EAAE,MAAwB;IAC7D,MAAM,GAAG,GAAG,MAAM;QAChB,CAAC,CAAC,GAAG,mBAAmB,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;QACtD,CAAC,CAAC,GAAG,mBAAmB,GAAG,IAAI,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CACb,gFAAgF,mBAAmB,GAAG,CACvG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,mBAAmB,SAAS,EAAE;YAC5D,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6DAA6D;AAE7D,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;;;;kEAIiD;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;oBACnC,WAAW,EAAE,yCAAyC;iBACvD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;iBACtD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;iBACtC;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;8DAC6C;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;oBACnC,WAAW,EAAE,2CAA2C;iBACzD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE;0DACyC;QACtD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,sDAAsD;iBACpE;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;yCACwB;QACrC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;iBAC3C;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;uDACsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;sDACqC;QAClD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;sEACqD;QAClE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;CACF,CAAC;AAkBF,KAAK,UAAU,yBAAyB,CAAC,IAA6B;IACpE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,YAAY;QAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAiB,SAAS,EAAE,MAAM,CAAC,CAAC;IAE/D,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,YAAY;QAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAiB,SAAS,EAAE,MAAM,CAAC,CAAC;IAE/D,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,iCAAiC,OAAO,WAAW,CAAC;IAC7D,CAAC;IAED,OAAO,yBAAyB,OAAO,iBAAiB,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAA6B;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAqC,WAAW,OAAO,EAAE,CAAC,CAAC;IAEtF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,OAAO,aAAa,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,IAAI,MAAM,GAAG,UAAU,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,gBAAgB,KAAK,CAAC,SAAS,IAAI,CAAC;IAC9C,MAAM,IAAI,UAAU,KAAK,CAAC,QAAQ,IAAI,CAAC;IACvC,MAAM,IAAI,aAAa,KAAK,CAAC,WAAW,IAAI,CAAC;IAE7C,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,oCAAoC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAA6B;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,WAAW,OAAO,MAAM,CACzB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,+BAA+B,OAAO,GAAG,CAAC;IACnD,CAAC;IAED,OAAO,kBAAkB,OAAO,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,gBAAgB,CACjB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAiD,WAAW,CAAC,CAAC;IAEzF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;IAEtC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,4CAA4C,mBAAmB,EAAE,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,OAAO,oCAAoC,mBAAmB,oDAAoD,CAAC;IACrH,CAAC;AACH,CAAC;AAED,oDAAoD;AAEpD,SAAS,mBAAmB,CAAC,OAAuB;IAClD,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,QAAQ,cAAc,CAAC,CAAC,WAAW,aAAa,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC/I,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,sBAAsB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACvJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,QAAQ,cAAc,CAAC,CAAC,WAAW,aAAa,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3I,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,MAAc;IAC3C,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED,yDAAyD;AAEzD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,IAAI,MAAc,CAAC;QAEnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,uBAAuB;gBAC1B,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,MAAM,sBAAsB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,eAAe;gBAClB,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,eAAe;gBAClB,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACnC,MAAM;YACR;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;oBAC1D,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|