@shin1ohno/sage 0.1.0 → 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.
Files changed (72) hide show
  1. package/README.md +79 -114
  2. package/dist/config/storage/storage-factory.d.ts +5 -1
  3. package/dist/config/storage/storage-factory.d.ts.map +1 -1
  4. package/dist/config/storage/storage-factory.js +12 -19
  5. package/dist/config/storage/storage-factory.js.map +1 -1
  6. package/dist/core/sage-core.d.ts +10 -5
  7. package/dist/core/sage-core.d.ts.map +1 -1
  8. package/dist/core/sage-core.js +28 -51
  9. package/dist/core/sage-core.js.map +1 -1
  10. package/dist/index.js +335 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/integrations/apple-reminders.d.ts +49 -0
  13. package/dist/integrations/apple-reminders.d.ts.map +1 -1
  14. package/dist/integrations/apple-reminders.js +229 -0
  15. package/dist/integrations/apple-reminders.js.map +1 -1
  16. package/dist/integrations/notion-mcp.d.ts +136 -1
  17. package/dist/integrations/notion-mcp.d.ts.map +1 -1
  18. package/dist/integrations/notion-mcp.js +449 -1
  19. package/dist/integrations/notion-mcp.js.map +1 -1
  20. package/dist/integrations/task-synchronizer.d.ts +124 -0
  21. package/dist/integrations/task-synchronizer.d.ts.map +1 -0
  22. package/dist/integrations/task-synchronizer.js +363 -0
  23. package/dist/integrations/task-synchronizer.js.map +1 -0
  24. package/dist/integrations/todo-list-manager.d.ts +185 -0
  25. package/dist/integrations/todo-list-manager.d.ts.map +1 -0
  26. package/dist/integrations/todo-list-manager.js +581 -0
  27. package/dist/integrations/todo-list-manager.js.map +1 -0
  28. package/dist/platform/adapter-factory.d.ts.map +1 -1
  29. package/dist/platform/adapter-factory.js +4 -8
  30. package/dist/platform/adapter-factory.js.map +1 -1
  31. package/dist/platform/adapters/mcp-adapter.js +1 -1
  32. package/dist/platform/adapters/mcp-adapter.js.map +1 -1
  33. package/dist/platform/adapters/remote-mcp-adapter.d.ts +34 -0
  34. package/dist/platform/adapters/remote-mcp-adapter.d.ts.map +1 -0
  35. package/dist/platform/adapters/remote-mcp-adapter.js +54 -0
  36. package/dist/platform/adapters/remote-mcp-adapter.js.map +1 -0
  37. package/dist/platform/detector.d.ts +5 -16
  38. package/dist/platform/detector.d.ts.map +1 -1
  39. package/dist/platform/detector.js +52 -108
  40. package/dist/platform/detector.js.map +1 -1
  41. package/dist/platform/index.d.ts +0 -2
  42. package/dist/platform/index.d.ts.map +1 -1
  43. package/dist/platform/index.js +0 -2
  44. package/dist/platform/index.js.map +1 -1
  45. package/dist/platform/types.d.ts +20 -62
  46. package/dist/platform/types.d.ts.map +1 -1
  47. package/dist/platform/types.js +6 -11
  48. package/dist/platform/types.js.map +1 -1
  49. package/dist/remote/cloud-config.d.ts +139 -0
  50. package/dist/remote/cloud-config.d.ts.map +1 -0
  51. package/dist/remote/cloud-config.js +229 -0
  52. package/dist/remote/cloud-config.js.map +1 -0
  53. package/dist/remote/hybrid-integration.d.ts +109 -0
  54. package/dist/remote/hybrid-integration.d.ts.map +1 -0
  55. package/dist/remote/hybrid-integration.js +230 -0
  56. package/dist/remote/hybrid-integration.js.map +1 -0
  57. package/dist/remote/remote-mcp-server.d.ts +244 -0
  58. package/dist/remote/remote-mcp-server.d.ts.map +1 -0
  59. package/dist/remote/remote-mcp-server.js +507 -0
  60. package/dist/remote/remote-mcp-server.js.map +1 -0
  61. package/dist/utils/priority.d.ts.map +1 -1
  62. package/dist/utils/priority.js +18 -5
  63. package/dist/utils/priority.js.map +1 -1
  64. package/dist/utils/stakeholders.d.ts +4 -0
  65. package/dist/utils/stakeholders.d.ts.map +1 -1
  66. package/dist/utils/stakeholders.js +45 -4
  67. package/dist/utils/stakeholders.js.map +1 -1
  68. package/dist/utils/task-splitter.d.ts.map +1 -1
  69. package/dist/utils/task-splitter.js +62 -11
  70. package/dist/utils/task-splitter.js.map +1 -1
  71. package/manifest.json +74 -0
  72. package/package.json +2 -1
@@ -0,0 +1,581 @@
1
+ /**
2
+ * TodoListManager
3
+ * Unified TODO list management with multi-source integration
4
+ * Requirement: 12.1-12.8
5
+ */
6
+ import { AppleRemindersService } from './apple-reminders.js';
7
+ import { NotionMCPService, NotionMCPClient } from './notion-mcp.js';
8
+ /**
9
+ * TodoListManager
10
+ * Provides unified TODO list management across Apple Reminders and Notion
11
+ */
12
+ export class TodoListManager {
13
+ appleReminders;
14
+ notion;
15
+ notionClient = null;
16
+ cachedTodos = [];
17
+ lastFetchTime = 0;
18
+ cacheTimeout = 60000; // 1 minute cache
19
+ config;
20
+ constructor(config) {
21
+ this.appleReminders = new AppleRemindersService();
22
+ this.notion = new NotionMCPService();
23
+ this.config = config || {};
24
+ if (config?.cacheTimeoutMs) {
25
+ this.cacheTimeout = config.cacheTimeoutMs;
26
+ }
27
+ // Initialize Notion client if database ID is configured
28
+ if (config?.notionDatabaseId) {
29
+ this.notionClient = new NotionMCPClient({
30
+ allowedDatabaseIds: [config.notionDatabaseId],
31
+ });
32
+ this.notion.setMCPClient(this.notionClient);
33
+ }
34
+ }
35
+ /**
36
+ * Configure Notion integration
37
+ */
38
+ configureNotion(databaseId) {
39
+ this.config.notionDatabaseId = databaseId;
40
+ this.notionClient = new NotionMCPClient({
41
+ allowedDatabaseIds: [databaseId],
42
+ });
43
+ this.notion.setMCPClient(this.notionClient);
44
+ }
45
+ /**
46
+ * List all todos with optional filtering
47
+ * Requirement: 12.1, 12.2, 12.3, 12.7
48
+ */
49
+ async listTodos(filter) {
50
+ const todos = await this.fetchAllTodos();
51
+ if (!filter) {
52
+ return todos;
53
+ }
54
+ return this.filterTodos(todos, filter);
55
+ }
56
+ /**
57
+ * Get tasks due today
58
+ * Requirement: 12.8
59
+ */
60
+ async getTodaysTasks() {
61
+ const today = new Date();
62
+ const startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate());
63
+ const endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
64
+ return this.listTodos({
65
+ dueDate: {
66
+ start: startOfDay.toISOString(),
67
+ end: endOfDay.toISOString(),
68
+ },
69
+ status: ['not_started', 'in_progress'],
70
+ });
71
+ }
72
+ /**
73
+ * Update task status
74
+ * Requirement: 12.5, 12.6
75
+ */
76
+ async updateTaskStatus(taskId, status, source) {
77
+ try {
78
+ // Find the task
79
+ const todos = await this.fetchAllTodos();
80
+ const task = todos.find((t) => t.id === taskId || t.sourceId === taskId);
81
+ if (!task) {
82
+ return {
83
+ success: false,
84
+ taskId,
85
+ updatedFields: [],
86
+ syncedSources: [],
87
+ error: `Task with ID ${taskId} not found`,
88
+ };
89
+ }
90
+ // Update in the source
91
+ const updateResult = await this.updateInSource(task, status, source);
92
+ if (!updateResult.success) {
93
+ return updateResult;
94
+ }
95
+ // Sync across sources if the task exists in multiple places
96
+ const syncedSources = [source];
97
+ // Update cache
98
+ this.invalidateCache();
99
+ return {
100
+ success: true,
101
+ taskId,
102
+ updatedFields: ['status'],
103
+ syncedSources,
104
+ };
105
+ }
106
+ catch (error) {
107
+ return {
108
+ success: false,
109
+ taskId,
110
+ updatedFields: [],
111
+ syncedSources: [],
112
+ error: `Failed to update task: ${error.message}`,
113
+ };
114
+ }
115
+ }
116
+ /**
117
+ * Sync task across all sources
118
+ * Requirement: 12.6
119
+ */
120
+ async syncTaskAcrossSources(taskId) {
121
+ try {
122
+ const todos = await this.fetchAllTodos();
123
+ const task = todos.find((t) => t.id === taskId || t.sourceId === taskId);
124
+ if (!task) {
125
+ return {
126
+ success: false,
127
+ taskId,
128
+ syncedSources: [],
129
+ error: `Task with ID ${taskId} not found`,
130
+ };
131
+ }
132
+ // Find matching tasks in other sources
133
+ const conflicts = [];
134
+ const syncedSources = [task.source];
135
+ // Look for duplicates by title
136
+ const duplicates = todos.filter((t) => t.title === task.title && t.source !== task.source);
137
+ for (const duplicate of duplicates) {
138
+ // Check for conflicts
139
+ if (duplicate.status !== task.status) {
140
+ conflicts.push({
141
+ field: 'status',
142
+ appleRemindersValue: task.source === 'apple_reminders' ? task.status : duplicate.status,
143
+ notionValue: task.source === 'notion' ? task.status : duplicate.status,
144
+ resolvedValue: task.status, // Default: use the source task's value
145
+ resolution: task.source,
146
+ });
147
+ }
148
+ if (duplicate.priority !== task.priority) {
149
+ conflicts.push({
150
+ field: 'priority',
151
+ appleRemindersValue: task.source === 'apple_reminders' ? task.priority : duplicate.priority,
152
+ notionValue: task.source === 'notion' ? task.priority : duplicate.priority,
153
+ resolvedValue: task.priority,
154
+ resolution: task.source,
155
+ });
156
+ }
157
+ syncedSources.push(duplicate.source);
158
+ }
159
+ return {
160
+ success: conflicts.length === 0,
161
+ taskId,
162
+ syncedSources,
163
+ conflicts: conflicts.length > 0 ? conflicts : undefined,
164
+ };
165
+ }
166
+ catch (error) {
167
+ return {
168
+ success: false,
169
+ taskId,
170
+ syncedSources: [],
171
+ error: `Failed to sync task: ${error.message}`,
172
+ };
173
+ }
174
+ }
175
+ /**
176
+ * Filter todos based on criteria
177
+ */
178
+ filterTodos(todos, filter) {
179
+ return todos.filter((todo) => {
180
+ // Priority filter
181
+ if (filter.priority && filter.priority.length > 0) {
182
+ if (!filter.priority.includes(todo.priority)) {
183
+ return false;
184
+ }
185
+ }
186
+ // Status filter
187
+ if (filter.status && filter.status.length > 0) {
188
+ if (!filter.status.includes(todo.status)) {
189
+ return false;
190
+ }
191
+ }
192
+ // Source filter
193
+ if (filter.source && filter.source.length > 0) {
194
+ if (!filter.source.includes(todo.source)) {
195
+ return false;
196
+ }
197
+ }
198
+ // Tags filter
199
+ if (filter.tags && filter.tags.length > 0) {
200
+ const hasMatchingTag = filter.tags.some((tag) => todo.tags.includes(tag));
201
+ if (!hasMatchingTag) {
202
+ return false;
203
+ }
204
+ }
205
+ // Date range filter
206
+ if (filter.dueDate) {
207
+ if (!todo.dueDate) {
208
+ return false;
209
+ }
210
+ const dueDate = new Date(todo.dueDate);
211
+ if (filter.dueDate.start) {
212
+ const startDate = new Date(filter.dueDate.start);
213
+ if (dueDate < startDate) {
214
+ return false;
215
+ }
216
+ }
217
+ if (filter.dueDate.end) {
218
+ const endDate = new Date(filter.dueDate.end);
219
+ if (dueDate >= endDate) {
220
+ return false;
221
+ }
222
+ }
223
+ }
224
+ return true;
225
+ });
226
+ }
227
+ /**
228
+ * Merge todos from different sources
229
+ */
230
+ mergeTodosFromSources(reminders, notionTasks) {
231
+ const merged = [];
232
+ const seenTitles = new Map();
233
+ // Add reminders first
234
+ for (const reminder of reminders) {
235
+ const normalizedTitle = reminder.title.toLowerCase().trim();
236
+ seenTitles.set(normalizedTitle, reminder);
237
+ merged.push(reminder);
238
+ }
239
+ // Add Notion tasks, checking for duplicates
240
+ for (const task of notionTasks) {
241
+ const normalizedTitle = task.title.toLowerCase().trim();
242
+ if (seenTitles.has(normalizedTitle)) {
243
+ // Duplicate detected - mark as linked
244
+ const existing = seenTitles.get(normalizedTitle);
245
+ // Update existing with Notion source info if needed
246
+ existing.tags = [...new Set([...existing.tags, ...task.tags])];
247
+ }
248
+ else {
249
+ seenTitles.set(normalizedTitle, task);
250
+ merged.push(task);
251
+ }
252
+ }
253
+ return merged;
254
+ }
255
+ /**
256
+ * Format todo for display
257
+ */
258
+ formatTodoForDisplay(todo) {
259
+ const lines = [];
260
+ // Title with priority indicator
261
+ const priorityEmoji = this.getPriorityEmoji(todo.priority);
262
+ lines.push(`${priorityEmoji} ${todo.title}`);
263
+ // Status
264
+ const statusEmoji = this.getStatusEmoji(todo.status);
265
+ lines.push(` Status: ${statusEmoji} ${todo.status}`);
266
+ // Priority
267
+ lines.push(` Priority: ${todo.priority}`);
268
+ // Due date
269
+ if (todo.dueDate) {
270
+ const dueDate = new Date(todo.dueDate);
271
+ lines.push(` Due: ${dueDate.toLocaleDateString('ja-JP')}`);
272
+ }
273
+ // Description
274
+ if (todo.description) {
275
+ lines.push(` Description: ${todo.description}`);
276
+ }
277
+ // Estimated time
278
+ if (todo.estimatedMinutes) {
279
+ lines.push(` Estimated: ${todo.estimatedMinutes} min`);
280
+ }
281
+ // Stakeholders
282
+ if (todo.stakeholders && todo.stakeholders.length > 0) {
283
+ lines.push(` Stakeholders: ${todo.stakeholders.join(', ')}`);
284
+ }
285
+ // Tags
286
+ if (todo.tags.length > 0) {
287
+ lines.push(` Tags: ${todo.tags.join(', ')}`);
288
+ }
289
+ // Source
290
+ lines.push(` Source: ${todo.source}`);
291
+ return lines.join('\n');
292
+ }
293
+ /**
294
+ * Fetch all todos from all sources
295
+ */
296
+ async fetchAllTodos() {
297
+ // Check cache
298
+ if (this.cachedTodos.length > 0 && Date.now() - this.lastFetchTime < this.cacheTimeout) {
299
+ return this.cachedTodos;
300
+ }
301
+ const reminders = await this.fetchFromAppleReminders();
302
+ const notionTasks = await this.fetchFromNotion();
303
+ this.cachedTodos = this.mergeTodosFromSources(reminders, notionTasks);
304
+ this.lastFetchTime = Date.now();
305
+ return this.cachedTodos;
306
+ }
307
+ /**
308
+ * Fetch todos from Apple Reminders
309
+ * Uses AppleScript to query existing reminders
310
+ */
311
+ async fetchFromAppleReminders() {
312
+ const isAvailable = await this.appleReminders.isAvailable();
313
+ if (!isAvailable) {
314
+ return [];
315
+ }
316
+ try {
317
+ // Fetch reminders using AppleScript
318
+ const reminders = await this.appleReminders.fetchReminders(this.config.appleRemindersDefaultList);
319
+ // Convert to TodoItem format
320
+ return reminders.map((reminder) => ({
321
+ id: `ar-${reminder.id}`,
322
+ title: reminder.title,
323
+ description: reminder.notes,
324
+ priority: this.mapAppleRemindersPriority(reminder.priority),
325
+ status: reminder.completed ? 'completed' : 'not_started',
326
+ dueDate: reminder.dueDate,
327
+ createdDate: reminder.creationDate || new Date().toISOString(),
328
+ updatedDate: reminder.modificationDate || new Date().toISOString(),
329
+ source: 'apple_reminders',
330
+ sourceId: reminder.id,
331
+ tags: [],
332
+ }));
333
+ }
334
+ catch (error) {
335
+ console.error('Failed to fetch from Apple Reminders:', error);
336
+ return [];
337
+ }
338
+ }
339
+ /**
340
+ * Map Apple Reminders priority to internal priority
341
+ */
342
+ mapAppleRemindersPriority(priority) {
343
+ if (!priority || priority === 0)
344
+ return 'P3';
345
+ if (priority <= 3)
346
+ return 'P0'; // High priority
347
+ if (priority <= 6)
348
+ return 'P1'; // Medium-high
349
+ if (priority <= 7)
350
+ return 'P2'; // Medium
351
+ return 'P3'; // Low
352
+ }
353
+ /**
354
+ * Fetch todos from Notion
355
+ * Uses MCP client to query the configured database
356
+ */
357
+ async fetchFromNotion() {
358
+ // Check if Notion is configured
359
+ if (!this.config.notionDatabaseId || !this.notionClient) {
360
+ return [];
361
+ }
362
+ const isAvailable = await this.notion.isAvailable();
363
+ if (!isAvailable) {
364
+ return [];
365
+ }
366
+ try {
367
+ // Ensure the client is connected
368
+ if (!this.notionClient.isConnected()) {
369
+ await this.notionClient.connect();
370
+ }
371
+ // Query the configured database
372
+ const query = {
373
+ databaseId: this.config.notionDatabaseId,
374
+ pageSize: 100,
375
+ };
376
+ const result = await this.notionClient.queryDatabase(query);
377
+ if (!result.success || !result.results) {
378
+ return [];
379
+ }
380
+ // Convert to TodoItem format
381
+ return result.results.map((page) => ({
382
+ id: `n-${page.id}`,
383
+ title: page.title || 'Untitled',
384
+ description: page.properties?.Description?.rich_text?.[0]?.plain_text,
385
+ priority: this.mapNotionPriority(page.properties?.Priority?.select?.name),
386
+ status: this.mapNotionStatus(page.properties?.Status?.select?.name),
387
+ dueDate: page.properties?.DueDate?.date?.start,
388
+ createdDate: page.createdTime || new Date().toISOString(),
389
+ updatedDate: page.lastEditedTime || new Date().toISOString(),
390
+ source: 'notion',
391
+ sourceId: page.id,
392
+ tags: (page.properties?.Tags?.multi_select || []).map((t) => t.name),
393
+ estimatedMinutes: page.properties?.EstimatedTime?.number,
394
+ stakeholders: (page.properties?.Stakeholders?.multi_select || []).map((s) => s.name),
395
+ }));
396
+ }
397
+ catch (error) {
398
+ console.error('Failed to fetch from Notion:', error);
399
+ return [];
400
+ }
401
+ }
402
+ /**
403
+ * Map Notion priority to internal priority
404
+ */
405
+ mapNotionPriority(priority) {
406
+ if (!priority)
407
+ return 'P3';
408
+ const normalized = priority.toUpperCase();
409
+ if (normalized === 'P0' || normalized === 'URGENT' || normalized === 'CRITICAL')
410
+ return 'P0';
411
+ if (normalized === 'P1' || normalized === 'HIGH')
412
+ return 'P1';
413
+ if (normalized === 'P2' || normalized === 'MEDIUM')
414
+ return 'P2';
415
+ return 'P3';
416
+ }
417
+ /**
418
+ * Map Notion status to internal status
419
+ */
420
+ mapNotionStatus(status) {
421
+ if (!status)
422
+ return 'not_started';
423
+ const normalized = status.toLowerCase();
424
+ if (normalized.includes('complete') || normalized.includes('done'))
425
+ return 'completed';
426
+ if (normalized.includes('progress') || normalized.includes('doing'))
427
+ return 'in_progress';
428
+ if (normalized.includes('cancel'))
429
+ return 'cancelled';
430
+ return 'not_started';
431
+ }
432
+ /**
433
+ * Update task in its source
434
+ * Requirement: 12.5
435
+ */
436
+ async updateInSource(task, status, source) {
437
+ try {
438
+ switch (source) {
439
+ case 'apple_reminders': {
440
+ // Update via AppleScript
441
+ const completed = status === 'completed';
442
+ const result = await this.appleReminders.updateReminderStatus(task.sourceId, completed, this.config.appleRemindersDefaultList);
443
+ if (!result.success) {
444
+ return {
445
+ success: false,
446
+ taskId: task.id,
447
+ updatedFields: [],
448
+ syncedSources: [],
449
+ error: result.error,
450
+ };
451
+ }
452
+ return {
453
+ success: true,
454
+ taskId: task.id,
455
+ updatedFields: ['status'],
456
+ syncedSources: ['apple_reminders'],
457
+ };
458
+ }
459
+ case 'notion': {
460
+ // Update via Notion MCP
461
+ if (!this.notionClient) {
462
+ return {
463
+ success: false,
464
+ taskId: task.id,
465
+ updatedFields: [],
466
+ syncedSources: [],
467
+ error: 'Notion client not configured',
468
+ };
469
+ }
470
+ // Ensure client is connected
471
+ if (!this.notionClient.isConnected()) {
472
+ await this.notionClient.connect();
473
+ }
474
+ // Map internal status to Notion status format
475
+ const notionStatus = this.mapStatusToNotion(status);
476
+ const result = await this.notionClient.updatePage(task.sourceId, {
477
+ Status: notionStatus,
478
+ });
479
+ if (!result.success) {
480
+ return {
481
+ success: false,
482
+ taskId: task.id,
483
+ updatedFields: [],
484
+ syncedSources: [],
485
+ error: result.error,
486
+ };
487
+ }
488
+ return {
489
+ success: true,
490
+ taskId: task.id,
491
+ updatedFields: ['status'],
492
+ syncedSources: ['notion'],
493
+ };
494
+ }
495
+ case 'manual':
496
+ // Manual tasks are only stored locally
497
+ return {
498
+ success: true,
499
+ taskId: task.id,
500
+ updatedFields: ['status'],
501
+ syncedSources: ['manual'],
502
+ };
503
+ default:
504
+ return {
505
+ success: false,
506
+ taskId: task.id,
507
+ updatedFields: [],
508
+ syncedSources: [],
509
+ error: `Unknown source: ${source}`,
510
+ };
511
+ }
512
+ }
513
+ catch (error) {
514
+ return {
515
+ success: false,
516
+ taskId: task.id,
517
+ updatedFields: [],
518
+ syncedSources: [],
519
+ error: `Failed to update in ${source}: ${error.message}`,
520
+ };
521
+ }
522
+ }
523
+ /**
524
+ * Map internal status to Notion status format
525
+ */
526
+ mapStatusToNotion(status) {
527
+ switch (status) {
528
+ case 'completed':
529
+ return 'Done';
530
+ case 'in_progress':
531
+ return 'In Progress';
532
+ case 'cancelled':
533
+ return 'Cancelled';
534
+ case 'not_started':
535
+ default:
536
+ return 'Not Started';
537
+ }
538
+ }
539
+ /**
540
+ * Invalidate cache
541
+ */
542
+ invalidateCache() {
543
+ this.cachedTodos = [];
544
+ this.lastFetchTime = 0;
545
+ }
546
+ /**
547
+ * Get emoji for priority level
548
+ */
549
+ getPriorityEmoji(priority) {
550
+ switch (priority) {
551
+ case 'P0':
552
+ return '🔴';
553
+ case 'P1':
554
+ return '🟠';
555
+ case 'P2':
556
+ return '🟡';
557
+ case 'P3':
558
+ return '🟢';
559
+ default:
560
+ return '⚪';
561
+ }
562
+ }
563
+ /**
564
+ * Get emoji for status
565
+ */
566
+ getStatusEmoji(status) {
567
+ switch (status) {
568
+ case 'not_started':
569
+ return '⬜';
570
+ case 'in_progress':
571
+ return '🔄';
572
+ case 'completed':
573
+ return '✅';
574
+ case 'cancelled':
575
+ return '❌';
576
+ default:
577
+ return '⬜';
578
+ }
579
+ }
580
+ }
581
+ //# sourceMappingURL=todo-list-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-list-manager.js","sourceRoot":"","sources":["../../src/integrations/todo-list-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-factory.d.ts","sourceRoot":"","sources":["../../src/platform/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMhE;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;;OAGG;WACU,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAK/C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,eAAe;CAkBtE"}
1
+ {"version":3,"file":"adapter-factory.d.ts","sourceRoot":"","sources":["../../src/platform/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIhE;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;;OAGG;WACU,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAK/C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,eAAe;CActE"}
@@ -5,8 +5,6 @@
5
5
  */
6
6
  import { PlatformDetector } from './detector.js';
7
7
  import { MCPAdapter } from './adapters/mcp-adapter.js';
8
- import { SkillsAdapteriOS } from './adapters/skills-adapter-ios.js';
9
- import { SkillsAdapterWeb } from './adapters/skills-adapter-web.js';
10
8
  /**
11
9
  * Factory for creating platform-specific adapters
12
10
  */
@@ -27,12 +25,10 @@ export class PlatformAdapterFactory {
27
25
  switch (platformType) {
28
26
  case 'desktop_mcp':
29
27
  return new MCPAdapter();
30
- case 'ios_skills':
31
- return new SkillsAdapteriOS('ios_skills');
32
- case 'ipados_skills':
33
- return new SkillsAdapteriOS('ipados_skills');
34
- case 'web_skills':
35
- return new SkillsAdapterWeb();
28
+ case 'remote_mcp':
29
+ // Remote MCP clients connect via Remote MCP Server
30
+ // They use the same MCPAdapter through the server
31
+ return new MCPAdapter();
36
32
  default:
37
33
  throw new Error(`Unsupported platform type: ${platformType}`);
38
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-factory.js","sourceRoot":"","sources":["../../src/platform/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,YAA0B;QACjD,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,aAAa;gBAChB,OAAO,IAAI,UAAU,EAAE,CAAC;YAE1B,KAAK,YAAY;gBACf,OAAO,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAE5C,KAAK,eAAe;gBAClB,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAE/C,KAAK,YAAY;gBACf,OAAO,IAAI,gBAAgB,EAAE,CAAC;YAEhC;gBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"adapter-factory.js","sourceRoot":"","sources":["../../src/platform/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,YAA0B;QACjD,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,aAAa;gBAChB,OAAO,IAAI,UAAU,EAAE,CAAC;YAE1B,KAAK,YAAY;gBACf,mDAAmD;gBACnD,kDAAkD;gBAClD,OAAO,IAAI,UAAU,EAAE,CAAC;YAE1B;gBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
@@ -16,7 +16,7 @@ export class MCPAdapter {
16
16
  type: 'desktop_mcp',
17
17
  version: '1.0.0',
18
18
  capabilities: PlatformDetector.getCapabilities('desktop_mcp'),
19
- nativeIntegrations: PlatformDetector.getNativeIntegrations('desktop_mcp'),
19
+ integrations: PlatformDetector.getIntegrations('desktop_mcp'),
20
20
  };
21
21
  this.featureSet = PlatformDetector.getFeatureSet('desktop_mcp');
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../../src/platform/adapters/mcp-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,YAAY,CAAe;IAC3B,UAAU,CAAa;IAE/B;QACE,IAAI,CAAC,YAAY,GAAG;YAClB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC;YAC7D,kBAAkB,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,aAAa,CAAC;SAC1E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,6BAA6B;QAC7B,6BAA6B;QAC7B,mCAAmC;QACnC,iCAAiC;QACjC,iCAAiC;IACnC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,UAAkB;QACtC,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../../src/platform/adapters/mcp-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,YAAY,CAAe;IAC3B,UAAU,CAAa;IAE/B;QACE,IAAI,CAAC,YAAY,GAAG;YAClB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC;YAC7D,YAAY,EAAE,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC;SAC9D,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,6BAA6B;QAC7B,6BAA6B;QAC7B,mCAAmC;QACnC,iCAAiC;QACjC,iCAAiC;IACnC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,UAAkB;QACtC,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;CACF"}