@shin1ohno/sage 0.7.9 → 0.8.6

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 (149) hide show
  1. package/README.md +26 -8
  2. package/dist/cli/mcp-handler.d.ts.map +1 -1
  3. package/dist/cli/mcp-handler.js +141 -987
  4. package/dist/cli/mcp-handler.js.map +1 -1
  5. package/dist/config/loader.d.ts.map +1 -1
  6. package/dist/config/loader.js +30 -1
  7. package/dist/config/loader.js.map +1 -1
  8. package/dist/config/update-validation.d.ts +52 -0
  9. package/dist/config/update-validation.d.ts.map +1 -0
  10. package/dist/config/update-validation.js +133 -0
  11. package/dist/config/update-validation.js.map +1 -0
  12. package/dist/config/validation.d.ts +130 -0
  13. package/dist/config/validation.d.ts.map +1 -0
  14. package/dist/config/validation.js +53 -0
  15. package/dist/config/validation.js.map +1 -0
  16. package/dist/index.js +443 -1632
  17. package/dist/index.js.map +1 -1
  18. package/dist/integrations/calendar-event-creator.d.ts +2 -3
  19. package/dist/integrations/calendar-event-creator.d.ts.map +1 -1
  20. package/dist/integrations/calendar-event-creator.js +3 -4
  21. package/dist/integrations/calendar-event-creator.js.map +1 -1
  22. package/dist/integrations/calendar-event-deleter.d.ts +2 -3
  23. package/dist/integrations/calendar-event-deleter.d.ts.map +1 -1
  24. package/dist/integrations/calendar-event-deleter.js +3 -4
  25. package/dist/integrations/calendar-event-deleter.js.map +1 -1
  26. package/dist/integrations/calendar-event-response.d.ts +4 -17
  27. package/dist/integrations/calendar-event-response.d.ts.map +1 -1
  28. package/dist/integrations/calendar-event-response.js +3 -4
  29. package/dist/integrations/calendar-event-response.js.map +1 -1
  30. package/dist/integrations/calendar-service.d.ts +6 -3
  31. package/dist/integrations/calendar-service.d.ts.map +1 -1
  32. package/dist/integrations/calendar-service.js +26 -4
  33. package/dist/integrations/calendar-service.js.map +1 -1
  34. package/dist/integrations/calendar-source-manager.d.ts +302 -0
  35. package/dist/integrations/calendar-source-manager.d.ts.map +1 -0
  36. package/dist/integrations/calendar-source-manager.js +862 -0
  37. package/dist/integrations/calendar-source-manager.js.map +1 -0
  38. package/dist/integrations/google-calendar-service.d.ts +176 -0
  39. package/dist/integrations/google-calendar-service.d.ts.map +1 -0
  40. package/dist/integrations/google-calendar-service.js +745 -0
  41. package/dist/integrations/google-calendar-service.js.map +1 -0
  42. package/dist/integrations/notion-mcp.d.ts +28 -3
  43. package/dist/integrations/notion-mcp.d.ts.map +1 -1
  44. package/dist/integrations/notion-mcp.js +21 -5
  45. package/dist/integrations/notion-mcp.js.map +1 -1
  46. package/dist/integrations/reminder-manager.d.ts.map +1 -1
  47. package/dist/integrations/reminder-manager.js +2 -0
  48. package/dist/integrations/reminder-manager.js.map +1 -1
  49. package/dist/oauth/google-oauth-handler.d.ts +149 -0
  50. package/dist/oauth/google-oauth-handler.d.ts.map +1 -0
  51. package/dist/oauth/google-oauth-handler.js +365 -0
  52. package/dist/oauth/google-oauth-handler.js.map +1 -0
  53. package/dist/services/container.d.ts +56 -0
  54. package/dist/services/container.d.ts.map +1 -0
  55. package/dist/services/container.js +76 -0
  56. package/dist/services/container.js.map +1 -0
  57. package/dist/tools/calendar/handlers.d.ts +186 -0
  58. package/dist/tools/calendar/handlers.d.ts.map +1 -0
  59. package/dist/tools/calendar/handlers.js +525 -0
  60. package/dist/tools/calendar/handlers.js.map +1 -0
  61. package/dist/tools/calendar/index.d.ts +11 -0
  62. package/dist/tools/calendar/index.d.ts.map +1 -0
  63. package/dist/tools/calendar/index.js +10 -0
  64. package/dist/tools/calendar/index.js.map +1 -0
  65. package/dist/tools/index.d.ts +23 -0
  66. package/dist/tools/index.d.ts.map +1 -0
  67. package/dist/tools/index.js +24 -0
  68. package/dist/tools/index.js.map +1 -0
  69. package/dist/tools/integrations/handlers.d.ts +57 -0
  70. package/dist/tools/integrations/handlers.d.ts.map +1 -0
  71. package/dist/tools/integrations/handlers.js +159 -0
  72. package/dist/tools/integrations/handlers.js.map +1 -0
  73. package/dist/tools/integrations/index.d.ts +11 -0
  74. package/dist/tools/integrations/index.d.ts.map +1 -0
  75. package/dist/tools/integrations/index.js +10 -0
  76. package/dist/tools/integrations/index.js.map +1 -0
  77. package/dist/tools/registry.d.ts +8 -0
  78. package/dist/tools/registry.d.ts.map +1 -0
  79. package/dist/tools/registry.js +10 -0
  80. package/dist/tools/registry.js.map +1 -0
  81. package/dist/tools/reminders/handlers.d.ts +61 -0
  82. package/dist/tools/reminders/handlers.d.ts.map +1 -0
  83. package/dist/tools/reminders/handlers.js +148 -0
  84. package/dist/tools/reminders/handlers.js.map +1 -0
  85. package/dist/tools/reminders/index.d.ts +11 -0
  86. package/dist/tools/reminders/index.d.ts.map +1 -0
  87. package/dist/tools/reminders/index.js +10 -0
  88. package/dist/tools/reminders/index.js.map +1 -0
  89. package/dist/tools/setup/handlers.d.ts +81 -0
  90. package/dist/tools/setup/handlers.d.ts.map +1 -0
  91. package/dist/tools/setup/handlers.js +172 -0
  92. package/dist/tools/setup/handlers.js.map +1 -0
  93. package/dist/tools/setup/index.d.ts +11 -0
  94. package/dist/tools/setup/index.d.ts.map +1 -0
  95. package/dist/tools/setup/index.js +10 -0
  96. package/dist/tools/setup/index.js.map +1 -0
  97. package/dist/tools/tasks/handlers.d.ts +95 -0
  98. package/dist/tools/tasks/handlers.d.ts.map +1 -0
  99. package/dist/tools/tasks/handlers.js +197 -0
  100. package/dist/tools/tasks/handlers.js.map +1 -0
  101. package/dist/tools/tasks/index.d.ts +11 -0
  102. package/dist/tools/tasks/index.d.ts.map +1 -0
  103. package/dist/tools/tasks/index.js +10 -0
  104. package/dist/tools/tasks/index.js.map +1 -0
  105. package/dist/tools/types.d.ts +54 -0
  106. package/dist/tools/types.d.ts.map +1 -0
  107. package/dist/tools/types.js +9 -0
  108. package/dist/tools/types.js.map +1 -0
  109. package/dist/types/calendar.d.ts +41 -0
  110. package/dist/types/calendar.d.ts.map +1 -0
  111. package/dist/types/calendar.js +18 -0
  112. package/dist/types/calendar.js.map +1 -0
  113. package/dist/types/config.d.ts +15 -0
  114. package/dist/types/config.d.ts.map +1 -1
  115. package/dist/types/config.js +21 -0
  116. package/dist/types/config.js.map +1 -1
  117. package/dist/types/google-calendar-types.d.ts +139 -0
  118. package/dist/types/google-calendar-types.d.ts.map +1 -0
  119. package/dist/types/google-calendar-types.js +46 -0
  120. package/dist/types/google-calendar-types.js.map +1 -0
  121. package/dist/types/index.d.ts +1 -0
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/index.js +1 -0
  124. package/dist/types/index.js.map +1 -1
  125. package/dist/utils/estimation.d.ts +34 -0
  126. package/dist/utils/estimation.d.ts.map +1 -1
  127. package/dist/utils/estimation.js +38 -1
  128. package/dist/utils/estimation.js.map +1 -1
  129. package/dist/utils/mcp-response.d.ts +89 -0
  130. package/dist/utils/mcp-response.d.ts.map +1 -0
  131. package/dist/utils/mcp-response.js +103 -0
  132. package/dist/utils/mcp-response.js.map +1 -0
  133. package/dist/utils/task-splitter.d.ts +65 -4
  134. package/dist/utils/task-splitter.d.ts.map +1 -1
  135. package/dist/utils/task-splitter.js +69 -5
  136. package/dist/utils/task-splitter.js.map +1 -1
  137. package/dist/version.d.ts +2 -2
  138. package/dist/version.d.ts.map +1 -1
  139. package/dist/version.js +22 -4
  140. package/dist/version.js.map +1 -1
  141. package/package.json +4 -3
  142. package/dist/cli/http-server.d.ts +0 -74
  143. package/dist/cli/http-server.d.ts.map +0 -1
  144. package/dist/cli/http-server.js +0 -407
  145. package/dist/cli/http-server.js.map +0 -1
  146. package/dist/remote/remote-mcp-server.d.ts +0 -244
  147. package/dist/remote/remote-mcp-server.d.ts.map +0 -1
  148. package/dist/remote/remote-mcp-server.js +0 -507
  149. package/dist/remote/remote-mcp-server.js.map +0 -1
@@ -0,0 +1,525 @@
1
+ /**
2
+ * Calendar Tool Handlers
3
+ *
4
+ * Business logic for calendar-related MCP tools.
5
+ * These handlers are decoupled from the MCP server registration
6
+ * to allow reuse between index.ts and mcp-handler.ts.
7
+ *
8
+ * Requirements: 3.3-3.6, 6.1-6.6, 16-19, 32
9
+ */
10
+ import { createToolResponse, createErrorFromCatch } from '../registry.js';
11
+ // ============================================================
12
+ // Handler Functions
13
+ // ============================================================
14
+ /**
15
+ * find_available_slots handler
16
+ *
17
+ * Find available time slots in calendar for scheduling tasks.
18
+ * Requirement: 3.3-3.6, 6.1-6.6, Task 28
19
+ */
20
+ export async function handleFindAvailableSlots(ctx, args) {
21
+ const { durationMinutes, startDate, endDate, preferDeepWork, minDurationMinutes, maxDurationMinutes, } = args;
22
+ const config = ctx.getConfig();
23
+ if (!config) {
24
+ return createToolResponse({
25
+ error: true,
26
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
27
+ });
28
+ }
29
+ let calendarSourceManager = ctx.getCalendarSourceManager();
30
+ if (!calendarSourceManager) {
31
+ ctx.initializeServices(config);
32
+ calendarSourceManager = ctx.getCalendarSourceManager();
33
+ }
34
+ try {
35
+ const enabledSources = calendarSourceManager.getEnabledSources();
36
+ if (enabledSources.length === 0) {
37
+ return createToolResponse({
38
+ success: false,
39
+ message: '有効なカレンダーソースがありません。設定でEventKitまたはGoogle Calendarを有効にしてください。',
40
+ });
41
+ }
42
+ const searchStart = startDate ?? new Date().toISOString().split('T')[0];
43
+ const searchEnd = endDate ??
44
+ new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
45
+ const workingHours = {
46
+ start: config.calendar.workingHours.start,
47
+ end: config.calendar.workingHours.end,
48
+ };
49
+ const minDuration = minDurationMinutes ?? durationMinutes ?? 25;
50
+ const maxDuration = maxDurationMinutes ?? 480;
51
+ const slots = await calendarSourceManager.findAvailableSlots({
52
+ startDate: searchStart,
53
+ endDate: searchEnd,
54
+ minDurationMinutes: minDuration,
55
+ maxDurationMinutes: maxDuration,
56
+ workingHours,
57
+ });
58
+ const filteredSlots = preferDeepWork
59
+ ? slots.filter((s) => s.dayType === 'deep-work')
60
+ : slots;
61
+ return createToolResponse({
62
+ success: true,
63
+ sources: enabledSources,
64
+ searchRange: { start: searchStart, end: searchEnd },
65
+ totalSlots: filteredSlots.length,
66
+ slots: filteredSlots.slice(0, 10).map((slot) => ({
67
+ start: slot.start,
68
+ end: slot.end,
69
+ durationMinutes: slot.durationMinutes,
70
+ suitability: slot.suitability,
71
+ dayType: slot.dayType,
72
+ reason: slot.reason,
73
+ })),
74
+ message: filteredSlots.length > 0
75
+ ? `${filteredSlots.length}件の空き時間が見つかりました (ソース: ${enabledSources.join(', ')})。`
76
+ : '指定した条件に合う空き時間が見つかりませんでした。',
77
+ });
78
+ }
79
+ catch (error) {
80
+ return createErrorFromCatch('カレンダー検索に失敗しました', error);
81
+ }
82
+ }
83
+ /**
84
+ * list_calendar_events handler
85
+ *
86
+ * List calendar events for a specified period.
87
+ * Requirement: 16.1-16.12, Task 27
88
+ */
89
+ export async function handleListCalendarEvents(ctx, args) {
90
+ const { startDate, endDate, calendarId } = args;
91
+ const config = ctx.getConfig();
92
+ if (!config) {
93
+ return createToolResponse({
94
+ error: true,
95
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
96
+ });
97
+ }
98
+ let calendarSourceManager = ctx.getCalendarSourceManager();
99
+ if (!calendarSourceManager) {
100
+ ctx.initializeServices(config);
101
+ calendarSourceManager = ctx.getCalendarSourceManager();
102
+ }
103
+ try {
104
+ const enabledSources = calendarSourceManager.getEnabledSources();
105
+ if (enabledSources.length === 0) {
106
+ return createToolResponse({
107
+ success: false,
108
+ message: '有効なカレンダーソースがありません。設定でEventKitまたはGoogle Calendarを有効にしてください。',
109
+ });
110
+ }
111
+ const events = await calendarSourceManager.getEvents(startDate, endDate, calendarId);
112
+ return createToolResponse({
113
+ success: true,
114
+ sources: enabledSources,
115
+ events: events.map((event) => {
116
+ // Use type assertion via unknown for optional fields added in Task 25
117
+ const eventRecord = event;
118
+ return {
119
+ id: event.id,
120
+ title: event.title,
121
+ start: event.start,
122
+ end: event.end,
123
+ isAllDay: event.isAllDay,
124
+ calendar: eventRecord.calendar,
125
+ location: eventRecord.location,
126
+ source: eventRecord.source,
127
+ };
128
+ }),
129
+ period: { start: startDate, end: endDate },
130
+ totalEvents: events.length,
131
+ message: events.length > 0
132
+ ? `${events.length}件のイベントが見つかりました (ソース: ${enabledSources.join(', ')})。`
133
+ : '指定した期間にイベントが見つかりませんでした。',
134
+ });
135
+ }
136
+ catch (error) {
137
+ return createErrorFromCatch('カレンダーイベントの取得に失敗しました', error);
138
+ }
139
+ }
140
+ /**
141
+ * respond_to_calendar_event handler
142
+ *
143
+ * Respond to a single calendar event with accept/decline/tentative.
144
+ * Requirement: 17.1, 17.2, 17.5-17.11
145
+ */
146
+ export async function handleRespondToCalendarEvent(ctx, args) {
147
+ const { eventId, response, comment, source, calendarId } = args;
148
+ const config = ctx.getConfig();
149
+ if (!config) {
150
+ return createToolResponse({
151
+ error: true,
152
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
153
+ });
154
+ }
155
+ let calendarSourceManager = ctx.getCalendarSourceManager();
156
+ let calendarEventResponseService = ctx.getCalendarEventResponseService();
157
+ if (!calendarSourceManager || !calendarEventResponseService) {
158
+ ctx.initializeServices(config);
159
+ calendarSourceManager = ctx.getCalendarSourceManager();
160
+ calendarEventResponseService = ctx.getCalendarEventResponseService();
161
+ }
162
+ try {
163
+ // Try Google Calendar first (if source is 'google' or not specified)
164
+ if (source === 'google' || !source) {
165
+ try {
166
+ const result = await calendarSourceManager.respondToEvent(eventId, response, source === 'google' ? 'google' : undefined, calendarId);
167
+ return createToolResponse({
168
+ success: true,
169
+ eventId,
170
+ source: result.source || 'google',
171
+ message: result.message,
172
+ });
173
+ }
174
+ catch (error) {
175
+ if (source === 'google') {
176
+ return createErrorFromCatch('Google Calendarイベント返信に失敗しました', error);
177
+ }
178
+ // Continue to try EventKit if source was not specified
179
+ }
180
+ }
181
+ // Try EventKit (either explicitly requested or as fallback)
182
+ if (source === 'eventkit' || !source) {
183
+ const isAvailable = await calendarEventResponseService.isEventKitAvailable();
184
+ if (!isAvailable) {
185
+ return createToolResponse({
186
+ success: false,
187
+ message: 'EventKitカレンダーイベント返信機能はmacOSでのみ利用可能です。Google Calendarイベントの場合は、source=\'google\'を指定してください。',
188
+ });
189
+ }
190
+ const result = await calendarEventResponseService.respondToEvent({
191
+ eventId,
192
+ response,
193
+ comment,
194
+ });
195
+ if (result.success) {
196
+ return createToolResponse({
197
+ success: true,
198
+ eventId: result.eventId,
199
+ eventTitle: result.eventTitle,
200
+ newStatus: result.newStatus,
201
+ method: result.method,
202
+ instanceOnly: result.instanceOnly,
203
+ source: 'eventkit',
204
+ message: result.message,
205
+ });
206
+ }
207
+ return createToolResponse({
208
+ success: false,
209
+ eventId: result.eventId,
210
+ eventTitle: result.eventTitle,
211
+ skipped: result.skipped,
212
+ reason: result.reason,
213
+ error: result.error,
214
+ source: 'eventkit',
215
+ message: result.skipped
216
+ ? `イベントをスキップしました: ${result.reason}`
217
+ : `イベント返信に失敗しました: ${result.error}`,
218
+ });
219
+ }
220
+ return createToolResponse({
221
+ error: true,
222
+ message: '有効なカレンダーソースが見つかりません。',
223
+ });
224
+ }
225
+ catch (error) {
226
+ return createErrorFromCatch('カレンダーイベント返信に失敗しました', error);
227
+ }
228
+ }
229
+ /**
230
+ * respond_to_calendar_events_batch handler
231
+ *
232
+ * Respond to multiple calendar events at once.
233
+ * Requirement: 17.3, 17.4, 17.12
234
+ */
235
+ export async function handleRespondToCalendarEventsBatch(ctx, args) {
236
+ const { eventIds, response, comment } = args;
237
+ const config = ctx.getConfig();
238
+ if (!config) {
239
+ return createToolResponse({
240
+ error: true,
241
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
242
+ });
243
+ }
244
+ let calendarEventResponseService = ctx.getCalendarEventResponseService();
245
+ if (!calendarEventResponseService) {
246
+ ctx.initializeServices(config);
247
+ calendarEventResponseService = ctx.getCalendarEventResponseService();
248
+ }
249
+ try {
250
+ const isAvailable = await calendarEventResponseService.isEventKitAvailable();
251
+ if (!isAvailable) {
252
+ return createToolResponse({
253
+ success: false,
254
+ message: 'カレンダーイベント返信機能はmacOSでのみ利用可能です。',
255
+ });
256
+ }
257
+ const result = await calendarEventResponseService.respondToEventsBatch({
258
+ eventIds,
259
+ response,
260
+ comment,
261
+ });
262
+ return createToolResponse({
263
+ success: result.success,
264
+ summary: result.summary,
265
+ details: {
266
+ succeeded: result.details.succeeded,
267
+ skipped: result.details.skipped,
268
+ failed: result.details.failed,
269
+ },
270
+ message: result.message,
271
+ });
272
+ }
273
+ catch (error) {
274
+ return createErrorFromCatch('カレンダーイベント一括返信に失敗しました', error);
275
+ }
276
+ }
277
+ /**
278
+ * create_calendar_event handler
279
+ *
280
+ * Create a new calendar event.
281
+ * Requirement: 18.1-18.11, Task 29
282
+ */
283
+ export async function handleCreateCalendarEvent(ctx, args) {
284
+ const { title, startDate, endDate, location, notes, preferredSource } = args;
285
+ const config = ctx.getConfig();
286
+ if (!config) {
287
+ return createToolResponse({
288
+ error: true,
289
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
290
+ });
291
+ }
292
+ let calendarSourceManager = ctx.getCalendarSourceManager();
293
+ if (!calendarSourceManager) {
294
+ ctx.initializeServices(config);
295
+ calendarSourceManager = ctx.getCalendarSourceManager();
296
+ }
297
+ try {
298
+ const enabledSources = calendarSourceManager.getEnabledSources();
299
+ if (enabledSources.length === 0) {
300
+ return createToolResponse({
301
+ success: false,
302
+ message: '有効なカレンダーソースがありません。設定でEventKitまたはGoogle Calendarを有効にしてください。',
303
+ });
304
+ }
305
+ const request = {
306
+ title,
307
+ start: startDate,
308
+ end: endDate,
309
+ location,
310
+ description: notes,
311
+ };
312
+ const event = await calendarSourceManager.createEvent(request, preferredSource);
313
+ // Use type assertion via unknown for optional fields
314
+ const eventRecord = event;
315
+ return createToolResponse({
316
+ success: true,
317
+ eventId: event.id,
318
+ title: event.title,
319
+ startDate: event.start,
320
+ endDate: event.end,
321
+ source: event.source || 'unknown',
322
+ calendarName: eventRecord.calendar,
323
+ isAllDay: event.isAllDay,
324
+ message: `カレンダーイベントを作成しました: ${event.title} (ソース: ${event.source || 'unknown'})`,
325
+ });
326
+ }
327
+ catch (error) {
328
+ return createErrorFromCatch('カレンダーイベント作成に失敗しました', error);
329
+ }
330
+ }
331
+ /**
332
+ * delete_calendar_event handler
333
+ *
334
+ * Delete a calendar event.
335
+ * Requirement: 19.1-19.9, Task 30
336
+ */
337
+ export async function handleDeleteCalendarEvent(ctx, args) {
338
+ const { eventId, source } = args;
339
+ const config = ctx.getConfig();
340
+ if (!config) {
341
+ return createToolResponse({
342
+ error: true,
343
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
344
+ });
345
+ }
346
+ let calendarSourceManager = ctx.getCalendarSourceManager();
347
+ if (!calendarSourceManager) {
348
+ ctx.initializeServices(config);
349
+ calendarSourceManager = ctx.getCalendarSourceManager();
350
+ }
351
+ try {
352
+ const enabledSources = calendarSourceManager.getEnabledSources();
353
+ if (enabledSources.length === 0) {
354
+ return createToolResponse({
355
+ success: false,
356
+ message: '有効なカレンダーソースがありません。設定でEventKitまたはGoogle Calendarを有効にしてください。',
357
+ });
358
+ }
359
+ await calendarSourceManager.deleteEvent(eventId, source);
360
+ return createToolResponse({
361
+ success: true,
362
+ eventId,
363
+ source: source || 'all enabled sources',
364
+ message: source
365
+ ? `カレンダーイベントを削除しました (ソース: ${source})`
366
+ : `カレンダーイベントを削除しました (全ての有効なソースから)`,
367
+ });
368
+ }
369
+ catch (error) {
370
+ return createErrorFromCatch('カレンダーイベント削除に失敗しました', error);
371
+ }
372
+ }
373
+ /**
374
+ * delete_calendar_events_batch handler
375
+ *
376
+ * Delete multiple calendar events.
377
+ * Requirement: 19.10-19.11, Task 30
378
+ */
379
+ export async function handleDeleteCalendarEventsBatch(ctx, args) {
380
+ const { eventIds, source } = args;
381
+ const config = ctx.getConfig();
382
+ if (!config) {
383
+ return createToolResponse({
384
+ error: true,
385
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
386
+ });
387
+ }
388
+ let calendarSourceManager = ctx.getCalendarSourceManager();
389
+ if (!calendarSourceManager) {
390
+ ctx.initializeServices(config);
391
+ calendarSourceManager = ctx.getCalendarSourceManager();
392
+ }
393
+ try {
394
+ const enabledSources = calendarSourceManager.getEnabledSources();
395
+ if (enabledSources.length === 0) {
396
+ return createToolResponse({
397
+ success: false,
398
+ message: '有効なカレンダーソースがありません。設定でEventKitまたはGoogle Calendarを有効にしてください。',
399
+ });
400
+ }
401
+ const results = [];
402
+ for (const eventId of eventIds) {
403
+ try {
404
+ await calendarSourceManager.deleteEvent(eventId, source);
405
+ results.push({ eventId, success: true });
406
+ }
407
+ catch (error) {
408
+ results.push({
409
+ eventId,
410
+ success: false,
411
+ error: error instanceof Error ? error.message : 'Unknown error',
412
+ });
413
+ }
414
+ }
415
+ const successCount = results.filter((r) => r.success).length;
416
+ const failedCount = results.filter((r) => !r.success).length;
417
+ return createToolResponse({
418
+ success: failedCount === 0,
419
+ totalCount: eventIds.length,
420
+ successCount,
421
+ failedCount,
422
+ source: source || 'all enabled sources',
423
+ results,
424
+ message: source
425
+ ? `${successCount}/${eventIds.length}件のイベントを削除しました (ソース: ${source})`
426
+ : `${successCount}/${eventIds.length}件のイベントを削除しました (全ての有効なソースから)`,
427
+ });
428
+ }
429
+ catch (error) {
430
+ return createErrorFromCatch('カレンダーイベント一括削除に失敗しました', error);
431
+ }
432
+ }
433
+ /**
434
+ * list_calendar_sources handler
435
+ *
436
+ * List available and enabled calendar sources.
437
+ * Requirement: Task 32
438
+ */
439
+ export async function handleListCalendarSources(ctx) {
440
+ const config = ctx.getConfig();
441
+ if (!config) {
442
+ return createToolResponse({
443
+ error: true,
444
+ message: 'sageが設定されていません。check_setup_statusを実行してください。',
445
+ });
446
+ }
447
+ let calendarSourceManager = ctx.getCalendarSourceManager();
448
+ if (!calendarSourceManager) {
449
+ ctx.initializeServices(config);
450
+ calendarSourceManager = ctx.getCalendarSourceManager();
451
+ }
452
+ try {
453
+ const availableSources = await calendarSourceManager.detectAvailableSources();
454
+ const enabledSources = calendarSourceManager.getEnabledSources();
455
+ const healthStatus = await calendarSourceManager.healthCheck();
456
+ return createToolResponse({
457
+ success: true,
458
+ sources: {
459
+ eventkit: {
460
+ available: availableSources.eventkit,
461
+ enabled: enabledSources.includes('eventkit'),
462
+ healthy: healthStatus.eventkit,
463
+ description: 'macOS EventKit calendar integration (macOS only)',
464
+ },
465
+ google: {
466
+ available: availableSources.google,
467
+ enabled: enabledSources.includes('google'),
468
+ healthy: healthStatus.google,
469
+ description: 'Google Calendar API integration (all platforms)',
470
+ },
471
+ },
472
+ summary: {
473
+ totalAvailable: Object.values(availableSources).filter(Boolean).length,
474
+ totalEnabled: enabledSources.length,
475
+ allHealthy: Object.values(healthStatus).every(Boolean),
476
+ },
477
+ });
478
+ }
479
+ catch (error) {
480
+ return createErrorFromCatch('カレンダーソース情報の取得に失敗しました', error);
481
+ }
482
+ }
483
+ /**
484
+ * get_working_cadence handler
485
+ *
486
+ * Get user's working rhythm information.
487
+ * Requirement: 32.1-32.10
488
+ */
489
+ export async function handleGetWorkingCadence(ctx, args) {
490
+ const { dayOfWeek, date } = args;
491
+ // Dynamically import WorkingCadenceService to avoid circular dependency
492
+ let workingCadenceService = ctx.getWorkingCadenceService();
493
+ if (!workingCadenceService) {
494
+ const { WorkingCadenceService } = await import('../../services/working-cadence.js');
495
+ workingCadenceService = new WorkingCadenceService();
496
+ ctx.setWorkingCadenceService(workingCadenceService);
497
+ }
498
+ try {
499
+ const result = await workingCadenceService.getWorkingCadence({
500
+ dayOfWeek,
501
+ date,
502
+ });
503
+ if (!result.success) {
504
+ return createToolResponse({
505
+ error: true,
506
+ message: result.error || '勤務リズム情報の取得に失敗しました。',
507
+ });
508
+ }
509
+ return createToolResponse({
510
+ success: true,
511
+ user: result.user,
512
+ workingHours: result.workingHours,
513
+ weeklyPattern: result.weeklyPattern,
514
+ deepWorkBlocks: result.deepWorkBlocks,
515
+ weeklyReview: result.weeklyReview,
516
+ specificDay: result.specificDay,
517
+ recommendations: result.recommendations,
518
+ summary: result.summary,
519
+ });
520
+ }
521
+ catch (error) {
522
+ return createErrorFromCatch('勤務リズム情報の取得に失敗しました', error);
523
+ }
524
+ }
525
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/calendar/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Calendar Tools Module
3
+ *
4
+ * Exports calendar-related tool handlers for reuse between
5
+ * index.ts (stdio transport) and mcp-handler.ts (HTTP transport).
6
+ *
7
+ * Requirements: 3.3-3.6, 6.1-6.6, 16-19, 32
8
+ */
9
+ export type { CalendarToolsContext, FindAvailableSlotsInput, ListCalendarEventsInput, RespondToCalendarEventInput, RespondToCalendarEventsBatchInput, CreateCalendarEventInput, DeleteCalendarEventInput, DeleteCalendarEventsBatchInput, SetCalendarSourceInput, GetWorkingCadenceInput, } from './handlers.js';
10
+ export { handleFindAvailableSlots, handleListCalendarEvents, handleRespondToCalendarEvent, handleRespondToCalendarEventsBatch, handleCreateCalendarEvent, handleDeleteCalendarEvent, handleDeleteCalendarEventsBatch, handleListCalendarSources, handleGetWorkingCadence, } from './handlers.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/calendar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,iCAAiC,EACjC,wBAAwB,EACxB,wBAAwB,EACxB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Calendar Tools Module
3
+ *
4
+ * Exports calendar-related tool handlers for reuse between
5
+ * index.ts (stdio transport) and mcp-handler.ts (HTTP transport).
6
+ *
7
+ * Requirements: 3.3-3.6, 6.1-6.6, 16-19, 32
8
+ */
9
+ export { handleFindAvailableSlots, handleListCalendarEvents, handleRespondToCalendarEvent, handleRespondToCalendarEventsBatch, handleCreateCalendarEvent, handleDeleteCalendarEvent, handleDeleteCalendarEventsBatch, handleListCalendarSources, handleGetWorkingCadence, } from './handlers.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/calendar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tools Module
3
+ *
4
+ * Exports all tool-related types, utilities, and tool collections.
5
+ *
6
+ * ## Usage
7
+ *
8
+ * ```typescript
9
+ * import { createToolResponse, createErrorFromCatch } from './tools/index.js';
10
+ *
11
+ * // In a tool handler:
12
+ * return createToolResponse({ success: true, data: result });
13
+ *
14
+ * // Error handling:
15
+ * catch (error) {
16
+ * return createErrorFromCatch('Operation failed', error);
17
+ * }
18
+ * ```
19
+ */
20
+ export type { ToolResponse, ToolResponseContent, ToolCategory, ToolMetadata, ToolServices, } from './types.js';
21
+ export { createToolResponse, createErrorResponse, createErrorFromCatch, createSuccessResponse, getErrorMessage, } from './registry.js';
22
+ export { TaskAnalyzer, type AnalysisResult } from './analyze-tasks.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Tools Module
3
+ *
4
+ * Exports all tool-related types, utilities, and tool collections.
5
+ *
6
+ * ## Usage
7
+ *
8
+ * ```typescript
9
+ * import { createToolResponse, createErrorFromCatch } from './tools/index.js';
10
+ *
11
+ * // In a tool handler:
12
+ * return createToolResponse({ success: true, data: result });
13
+ *
14
+ * // Error handling:
15
+ * catch (error) {
16
+ * return createErrorFromCatch('Operation failed', error);
17
+ * }
18
+ * ```
19
+ */
20
+ // Response utilities (re-exported from mcp-response)
21
+ export { createToolResponse, createErrorResponse, createErrorFromCatch, createSuccessResponse, getErrorMessage, } from './registry.js';
22
+ // Existing analysis tools
23
+ export { TaskAnalyzer } from './analyze-tasks.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,qDAAqD;AACrD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,0BAA0B;AAC1B,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC"}