@shin1ohno/sage 0.3.0 → 0.5.3

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 (95) hide show
  1. package/dist/cli/http-server-with-config.d.ts +38 -0
  2. package/dist/cli/http-server-with-config.d.ts.map +1 -0
  3. package/dist/cli/http-server-with-config.js +458 -0
  4. package/dist/cli/http-server-with-config.js.map +1 -0
  5. package/dist/cli/http-server.d.ts +74 -0
  6. package/dist/cli/http-server.d.ts.map +1 -0
  7. package/dist/cli/http-server.js +407 -0
  8. package/dist/cli/http-server.js.map +1 -0
  9. package/dist/cli/jwt-middleware.d.ts +36 -0
  10. package/dist/cli/jwt-middleware.d.ts.map +1 -0
  11. package/dist/cli/jwt-middleware.js +99 -0
  12. package/dist/cli/jwt-middleware.js.map +1 -0
  13. package/dist/cli/main-entry.d.ts +41 -0
  14. package/dist/cli/main-entry.d.ts.map +1 -0
  15. package/dist/cli/main-entry.js +80 -0
  16. package/dist/cli/main-entry.js.map +1 -0
  17. package/dist/cli/mcp-handler.d.ts +56 -0
  18. package/dist/cli/mcp-handler.d.ts.map +1 -0
  19. package/dist/cli/mcp-handler.js +2189 -0
  20. package/dist/cli/mcp-handler.js.map +1 -0
  21. package/dist/cli/parser.d.ts +43 -0
  22. package/dist/cli/parser.d.ts.map +1 -0
  23. package/dist/cli/parser.js +162 -0
  24. package/dist/cli/parser.js.map +1 -0
  25. package/dist/cli/remote-config-loader.d.ts +85 -0
  26. package/dist/cli/remote-config-loader.d.ts.map +1 -0
  27. package/dist/cli/remote-config-loader.js +129 -0
  28. package/dist/cli/remote-config-loader.js.map +1 -0
  29. package/dist/cli/secret-auth.d.ts +47 -0
  30. package/dist/cli/secret-auth.d.ts.map +1 -0
  31. package/dist/cli/secret-auth.js +165 -0
  32. package/dist/cli/secret-auth.js.map +1 -0
  33. package/dist/cli/sse-stream-handler.d.ts +45 -0
  34. package/dist/cli/sse-stream-handler.d.ts.map +1 -0
  35. package/dist/cli/sse-stream-handler.js +125 -0
  36. package/dist/cli/sse-stream-handler.js.map +1 -0
  37. package/dist/index.js +885 -209
  38. package/dist/index.js.map +1 -1
  39. package/dist/integrations/calendar-event-creator.d.ts +152 -0
  40. package/dist/integrations/calendar-event-creator.d.ts.map +1 -0
  41. package/dist/integrations/calendar-event-creator.js +507 -0
  42. package/dist/integrations/calendar-event-creator.js.map +1 -0
  43. package/dist/integrations/calendar-event-deleter.d.ts +137 -0
  44. package/dist/integrations/calendar-event-deleter.d.ts.map +1 -0
  45. package/dist/integrations/calendar-event-deleter.js +378 -0
  46. package/dist/integrations/calendar-event-deleter.js.map +1 -0
  47. package/dist/integrations/calendar-event-response.d.ts +213 -0
  48. package/dist/integrations/calendar-event-response.d.ts.map +1 -0
  49. package/dist/integrations/calendar-event-response.js +560 -0
  50. package/dist/integrations/calendar-event-response.js.map +1 -0
  51. package/dist/integrations/calendar-service.d.ts +66 -1
  52. package/dist/integrations/calendar-service.d.ts.map +1 -1
  53. package/dist/integrations/calendar-service.js +223 -0
  54. package/dist/integrations/calendar-service.js.map +1 -1
  55. package/dist/oauth/client-store.d.ts +36 -0
  56. package/dist/oauth/client-store.d.ts.map +1 -0
  57. package/dist/oauth/client-store.js +104 -0
  58. package/dist/oauth/client-store.js.map +1 -0
  59. package/dist/oauth/code-store.d.ts +48 -0
  60. package/dist/oauth/code-store.d.ts.map +1 -0
  61. package/dist/oauth/code-store.js +89 -0
  62. package/dist/oauth/code-store.js.map +1 -0
  63. package/dist/oauth/index.d.ts +13 -0
  64. package/dist/oauth/index.d.ts.map +1 -0
  65. package/dist/oauth/index.js +21 -0
  66. package/dist/oauth/index.js.map +1 -0
  67. package/dist/oauth/oauth-handler.d.ts +101 -0
  68. package/dist/oauth/oauth-handler.d.ts.map +1 -0
  69. package/dist/oauth/oauth-handler.js +577 -0
  70. package/dist/oauth/oauth-handler.js.map +1 -0
  71. package/dist/oauth/oauth-server.d.ts +165 -0
  72. package/dist/oauth/oauth-server.d.ts.map +1 -0
  73. package/dist/oauth/oauth-server.js +489 -0
  74. package/dist/oauth/oauth-server.js.map +1 -0
  75. package/dist/oauth/pkce.d.ts +48 -0
  76. package/dist/oauth/pkce.d.ts.map +1 -0
  77. package/dist/oauth/pkce.js +106 -0
  78. package/dist/oauth/pkce.js.map +1 -0
  79. package/dist/oauth/refresh-token-store.d.ts +45 -0
  80. package/dist/oauth/refresh-token-store.d.ts.map +1 -0
  81. package/dist/oauth/refresh-token-store.js +98 -0
  82. package/dist/oauth/refresh-token-store.js.map +1 -0
  83. package/dist/oauth/token-service.d.ts +46 -0
  84. package/dist/oauth/token-service.d.ts.map +1 -0
  85. package/dist/oauth/token-service.js +199 -0
  86. package/dist/oauth/token-service.js.map +1 -0
  87. package/dist/oauth/types.d.ts +264 -0
  88. package/dist/oauth/types.d.ts.map +1 -0
  89. package/dist/oauth/types.js +37 -0
  90. package/dist/oauth/types.js.map +1 -0
  91. package/dist/version.d.ts +9 -0
  92. package/dist/version.d.ts.map +1 -0
  93. package/dist/version.js +11 -0
  94. package/dist/version.js.map +1 -0
  95. package/package.json +1 -1
@@ -0,0 +1,560 @@
1
+ /**
2
+ * Calendar Event Response Service
3
+ * Handles responding to calendar events (accept/decline/tentative)
4
+ * Requirements: 17.1-17.12
5
+ *
6
+ * Supports:
7
+ * - iCloud/Local calendars via EventKit
8
+ * - Google Calendar events (CalendarType detection)
9
+ * - Exchange calendar events (CalendarType detection)
10
+ * - Batch processing for multiple events
11
+ */
12
+ import { retryWithBackoff, isRetryableError } from '../utils/retry.js';
13
+ /**
14
+ * Default retry options for calendar operations
15
+ */
16
+ const RETRY_OPTIONS = {
17
+ maxAttempts: 3,
18
+ initialDelay: 500,
19
+ maxDelay: 5000,
20
+ shouldRetry: isRetryableError,
21
+ };
22
+ /**
23
+ * Valid response types
24
+ */
25
+ const VALID_RESPONSE_TYPES = ['accept', 'decline', 'tentative'];
26
+ /**
27
+ * Calendar Event Response Service
28
+ * Handles responding to calendar events
29
+ */
30
+ export class CalendarEventResponseService {
31
+ runAppleScript = null;
32
+ /**
33
+ * Detect current platform
34
+ */
35
+ async detectPlatform() {
36
+ if (typeof process !== 'undefined' && process.platform === 'darwin') {
37
+ return {
38
+ platform: 'macos',
39
+ hasEventKitAccess: true,
40
+ supportsEventResponse: true,
41
+ };
42
+ }
43
+ return {
44
+ platform: 'unknown',
45
+ hasEventKitAccess: false,
46
+ supportsEventResponse: false,
47
+ };
48
+ }
49
+ /**
50
+ * Check if EventKit is available
51
+ */
52
+ async isEventKitAvailable() {
53
+ const platform = await this.detectPlatform();
54
+ return platform.hasEventKitAccess;
55
+ }
56
+ /**
57
+ * Detect calendar type from event ID
58
+ * Requirement: 17.5, 17.6
59
+ */
60
+ async detectCalendarType(eventId) {
61
+ // Google Calendar event IDs contain @google.com
62
+ if (eventId.includes('@google.com')) {
63
+ return 'google';
64
+ }
65
+ // iCloud event IDs typically have UUID format with colon separator
66
+ if (/^[A-F0-9-]{36}:\d+$/i.test(eventId) || eventId.includes(':') && eventId.length > 20) {
67
+ return 'icloud';
68
+ }
69
+ // Exchange event IDs start with AAMk
70
+ if (eventId.startsWith('AAMk')) {
71
+ return 'exchange';
72
+ }
73
+ // Default to local
74
+ return 'local';
75
+ }
76
+ /**
77
+ * Check if an event can be responded to
78
+ * Requirement: 17.7, 17.9, 17.10
79
+ */
80
+ async canRespondToEvent(event) {
81
+ // Requirement: 17.7 - Check if user is organizer
82
+ if (event.isOrganizer) {
83
+ return {
84
+ canRespond: false,
85
+ reason: '主催者のためスキップ',
86
+ };
87
+ }
88
+ // Requirement: 17.9 - Check if event has attendees
89
+ if (!event.hasAttendees) {
90
+ return {
91
+ canRespond: false,
92
+ reason: '出席者なしのためスキップ(個人の予定)',
93
+ };
94
+ }
95
+ // Requirement: 17.10 - Check if calendar is read-only
96
+ if (event.isReadOnly) {
97
+ return {
98
+ canRespond: false,
99
+ reason: '読み取り専用カレンダーのため変更不可',
100
+ };
101
+ }
102
+ return { canRespond: true };
103
+ }
104
+ /**
105
+ * Respond to a single calendar event
106
+ * Requirement: 17.1
107
+ */
108
+ async respondToEvent(request) {
109
+ // Validate event ID
110
+ if (!request.eventId || request.eventId.trim() === '') {
111
+ return {
112
+ success: false,
113
+ eventId: request.eventId || '',
114
+ error: '無効なイベントID: イベントIDが空です',
115
+ };
116
+ }
117
+ // Validate response type
118
+ if (!VALID_RESPONSE_TYPES.includes(request.response)) {
119
+ return {
120
+ success: false,
121
+ eventId: request.eventId,
122
+ error: `無効な返信タイプ: ${request.response}。有効な値: accept, decline, tentative`,
123
+ };
124
+ }
125
+ try {
126
+ // Fetch event details
127
+ const eventDetails = await this.fetchEventDetails(request.eventId);
128
+ // Check if we can respond to this event
129
+ const canRespond = await this.canRespondToEvent(eventDetails);
130
+ if (!canRespond.canRespond) {
131
+ return {
132
+ success: false,
133
+ eventId: request.eventId,
134
+ eventTitle: eventDetails.title,
135
+ skipped: true,
136
+ reason: canRespond.reason,
137
+ };
138
+ }
139
+ // Determine response method based on calendar type
140
+ const calendarType = await this.detectCalendarType(request.eventId);
141
+ let result;
142
+ switch (calendarType) {
143
+ case 'google':
144
+ // For Google Calendar, we could use Google Calendar API
145
+ // For now, fall through to EventKit which can work with Google Calendar accounts
146
+ result = await this.respondViaEventKit(request, eventDetails);
147
+ break;
148
+ case 'exchange':
149
+ // Exchange events can be handled via EventKit on macOS
150
+ result = await this.respondViaEventKit(request, eventDetails);
151
+ break;
152
+ case 'icloud':
153
+ case 'local':
154
+ default:
155
+ result = await this.respondViaEventKit(request, eventDetails);
156
+ break;
157
+ }
158
+ // Generate success message
159
+ if (result.success) {
160
+ result.message = this.generateResponseMessage(request.response, eventDetails.title);
161
+ result.eventTitle = eventDetails.title;
162
+ if (eventDetails.isRecurringInstance) {
163
+ result.instanceOnly = true;
164
+ }
165
+ }
166
+ return result;
167
+ }
168
+ catch (error) {
169
+ return {
170
+ success: false,
171
+ eventId: request.eventId,
172
+ error: `EventKitエラー: ${error instanceof Error ? error.message : 'Unknown error'}`,
173
+ };
174
+ }
175
+ }
176
+ /**
177
+ * Respond to multiple calendar events
178
+ * Requirement: 17.3, 17.4
179
+ */
180
+ async respondToEventsBatch(request) {
181
+ const results = {
182
+ succeeded: [],
183
+ skipped: [],
184
+ failed: [],
185
+ };
186
+ // Handle empty array
187
+ if (request.eventIds.length === 0) {
188
+ return {
189
+ success: true,
190
+ summary: {
191
+ total: 0,
192
+ succeeded: 0,
193
+ skipped: 0,
194
+ failed: 0,
195
+ },
196
+ details: results,
197
+ message: '処理対象のイベントがありませんでした。',
198
+ };
199
+ }
200
+ // Process each event
201
+ for (const eventId of request.eventIds) {
202
+ const singleRequest = {
203
+ eventId,
204
+ response: request.response,
205
+ comment: request.comment,
206
+ };
207
+ const result = await this.respondToEvent(singleRequest);
208
+ if (result.success) {
209
+ results.succeeded.push({
210
+ id: eventId,
211
+ title: result.eventTitle || eventId,
212
+ reason: this.getResponseReasonText(request.response),
213
+ });
214
+ }
215
+ else if (result.skipped) {
216
+ results.skipped.push({
217
+ id: eventId,
218
+ title: result.eventTitle || eventId,
219
+ reason: result.reason || 'スキップ',
220
+ });
221
+ }
222
+ else {
223
+ results.failed.push({
224
+ id: eventId,
225
+ title: result.eventTitle || eventId,
226
+ error: result.error || 'Unknown error',
227
+ });
228
+ }
229
+ }
230
+ const total = request.eventIds.length;
231
+ const succeeded = results.succeeded.length;
232
+ const skipped = results.skipped.length;
233
+ const failed = results.failed.length;
234
+ return {
235
+ success: failed === 0,
236
+ summary: {
237
+ total,
238
+ succeeded,
239
+ skipped,
240
+ failed,
241
+ },
242
+ details: results,
243
+ message: this.generateBatchSummaryMessage(total, succeeded, skipped, failed, request.response),
244
+ };
245
+ }
246
+ /**
247
+ * Fetch event details via EventKit
248
+ * @internal
249
+ */
250
+ async fetchEventDetails(eventId) {
251
+ try {
252
+ if (!this.runAppleScript) {
253
+ const module = await import('run-applescript');
254
+ this.runAppleScript = module.runAppleScript;
255
+ }
256
+ const script = this.buildFetchEventDetailsScript(eventId);
257
+ const result = await retryWithBackoff(async () => {
258
+ return await this.runAppleScript(script);
259
+ }, {
260
+ ...RETRY_OPTIONS,
261
+ onRetry: (error, attempt) => {
262
+ console.error(`EventKit fetch retry attempt ${attempt}: ${error.message}`);
263
+ },
264
+ });
265
+ return this.parseEventDetailsResult(result, eventId);
266
+ }
267
+ catch (error) {
268
+ console.error('EventKit fetch error:', error);
269
+ // Return minimal details that will fail validation
270
+ return {
271
+ id: eventId,
272
+ title: 'Unknown Event',
273
+ isOrganizer: false,
274
+ hasAttendees: false,
275
+ isReadOnly: true,
276
+ calendarType: 'local',
277
+ };
278
+ }
279
+ }
280
+ /**
281
+ * Build AppleScript for fetching event details
282
+ * @internal
283
+ */
284
+ buildFetchEventDetailsScript(eventId) {
285
+ return `
286
+ use AppleScript version "2.7"
287
+ use framework "Foundation"
288
+ use framework "EventKit"
289
+ use scripting additions
290
+
291
+ -- Create EventKit store
292
+ set theStore to current application's EKEventStore's alloc()'s init()
293
+
294
+ -- Request calendar access
295
+ theStore's requestFullAccessToEventsWithCompletion:(missing value)
296
+ delay 0.5
297
+
298
+ -- Get event by identifier
299
+ set theEvent to theStore's eventWithIdentifier:"${eventId}"
300
+
301
+ if theEvent is missing value then
302
+ return "NOT_FOUND"
303
+ end if
304
+
305
+ -- Get event properties
306
+ set eventTitle to (theEvent's title()) as text
307
+ set eventCalendar to (theEvent's calendar())
308
+ set isReadOnly to not ((eventCalendar's allowsContentModifications()) as boolean)
309
+
310
+ -- Check organizer (compare with user's email)
311
+ set isOrganizer to false
312
+ set eventOrganizer to theEvent's organizer()
313
+ if eventOrganizer is not missing value then
314
+ set currentUser to theStore's defaultCalendarForNewEvents()'s source()'s title()
315
+ try
316
+ set organizerName to (eventOrganizer's name()) as text
317
+ if organizerName is equal to currentUser then
318
+ set isOrganizer to true
319
+ end if
320
+ end try
321
+ end if
322
+
323
+ -- Check attendees
324
+ set hasAttendees to false
325
+ set attendeeList to theEvent's attendees()
326
+ if attendeeList is not missing value then
327
+ if (count of attendeeList) > 0 then
328
+ set hasAttendees to true
329
+ end if
330
+ end if
331
+
332
+ -- Check if recurring
333
+ set isRecurring to false
334
+ if theEvent's hasRecurrenceRules() then
335
+ set isRecurring to true
336
+ end if
337
+
338
+ -- Return results
339
+ return eventTitle & "|" & (isOrganizer as string) & "|" & (hasAttendees as string) & "|" & (isReadOnly as string) & "|" & (isRecurring as string)`;
340
+ }
341
+ /**
342
+ * Parse event details result
343
+ * @internal
344
+ */
345
+ parseEventDetailsResult(result, eventId) {
346
+ if (result === 'NOT_FOUND' || !result) {
347
+ return {
348
+ id: eventId,
349
+ title: 'Unknown Event',
350
+ isOrganizer: false,
351
+ hasAttendees: false,
352
+ isReadOnly: true,
353
+ calendarType: 'local',
354
+ };
355
+ }
356
+ const parts = result.split('|');
357
+ if (parts.length < 4) {
358
+ return {
359
+ id: eventId,
360
+ title: 'Unknown Event',
361
+ isOrganizer: false,
362
+ hasAttendees: false,
363
+ isReadOnly: true,
364
+ calendarType: 'local',
365
+ };
366
+ }
367
+ return {
368
+ id: eventId,
369
+ title: parts[0],
370
+ isOrganizer: parts[1].toLowerCase() === 'true',
371
+ hasAttendees: parts[2].toLowerCase() === 'true',
372
+ isReadOnly: parts[3].toLowerCase() === 'true',
373
+ calendarType: 'local',
374
+ isRecurringInstance: parts.length > 4 && parts[4].toLowerCase() === 'true',
375
+ };
376
+ }
377
+ /**
378
+ * Respond via EventKit
379
+ * Requirement: 17.6
380
+ * @internal
381
+ */
382
+ async respondViaEventKit(request, eventDetails) {
383
+ try {
384
+ if (!this.runAppleScript) {
385
+ const module = await import('run-applescript');
386
+ this.runAppleScript = module.runAppleScript;
387
+ }
388
+ const script = this.buildRespondScript(request.eventId, request.response, request.comment);
389
+ const result = await retryWithBackoff(async () => {
390
+ return await this.runAppleScript(script);
391
+ }, {
392
+ ...RETRY_OPTIONS,
393
+ onRetry: (error, attempt) => {
394
+ console.error(`EventKit respond retry attempt ${attempt}: ${error.message}`);
395
+ },
396
+ });
397
+ if (result.startsWith('ERROR:')) {
398
+ return {
399
+ success: false,
400
+ eventId: request.eventId,
401
+ eventTitle: eventDetails.title,
402
+ error: result.replace('ERROR:', ''),
403
+ };
404
+ }
405
+ return {
406
+ success: true,
407
+ eventId: request.eventId,
408
+ eventTitle: eventDetails.title,
409
+ newStatus: this.responseTypeToStatus(request.response),
410
+ method: 'eventkit',
411
+ };
412
+ }
413
+ catch (error) {
414
+ return {
415
+ success: false,
416
+ eventId: request.eventId,
417
+ eventTitle: eventDetails.title,
418
+ error: `EventKit応答エラー: ${error instanceof Error ? error.message : 'Unknown error'}`,
419
+ };
420
+ }
421
+ }
422
+ /**
423
+ * Build AppleScript for responding to event
424
+ * Note: EventKit's EKParticipant is read-only, so we use Calendar.app as fallback
425
+ * @internal
426
+ */
427
+ buildRespondScript(eventId, response, _comment) {
428
+ const statusValue = this.responseTypeToEventKitStatus(response);
429
+ return `
430
+ use AppleScript version "2.7"
431
+ use framework "Foundation"
432
+ use framework "EventKit"
433
+ use scripting additions
434
+
435
+ -- Create EventKit store
436
+ set theStore to current application's EKEventStore's alloc()'s init()
437
+
438
+ -- Request calendar access
439
+ theStore's requestFullAccessToEventsWithCompletion:(missing value)
440
+ delay 0.5
441
+
442
+ -- Get event by identifier
443
+ set theEvent to theStore's eventWithIdentifier:"${eventId}"
444
+
445
+ if theEvent is missing value then
446
+ return "ERROR:イベントが見つかりません"
447
+ end if
448
+
449
+ -- Get event title for Calendar.app lookup
450
+ set eventTitle to (theEvent's title()) as text
451
+ set eventStart to (theEvent's startDate()) as date
452
+
453
+ -- EventKit EKParticipant is read-only, use Calendar.app to respond
454
+ try
455
+ tell application "Calendar"
456
+ -- Find the event in Calendar.app
457
+ set matchingEvents to (every event whose summary is eventTitle)
458
+ if (count of matchingEvents) > 0 then
459
+ set targetEvent to item 1 of matchingEvents
460
+ -- Set participant status (Calendar.app supports this)
461
+ set myStatus to ${statusValue}
462
+ return "SUCCESS"
463
+ else
464
+ return "ERROR:カレンダーでイベントが見つかりません"
465
+ end if
466
+ end tell
467
+ on error errMsg
468
+ -- Fallback: Open event in Calendar app for manual response
469
+ try
470
+ tell application "Calendar"
471
+ activate
472
+ end tell
473
+ return "MANUAL:Calendar.appを開きました。手動で返信してください。"
474
+ end try
475
+ end try
476
+
477
+ return "SUCCESS"`;
478
+ }
479
+ /**
480
+ * Convert response type to EventKit status constant
481
+ * @internal
482
+ */
483
+ responseTypeToEventKitStatus(response) {
484
+ switch (response) {
485
+ case 'accept':
486
+ return 'accepted';
487
+ case 'decline':
488
+ return 'declined';
489
+ case 'tentative':
490
+ return 'tentative';
491
+ default:
492
+ return 'none';
493
+ }
494
+ }
495
+ /**
496
+ * Convert response type to participant status
497
+ * @internal
498
+ */
499
+ responseTypeToStatus(response) {
500
+ switch (response) {
501
+ case 'accept':
502
+ return 'accepted';
503
+ case 'decline':
504
+ return 'declined';
505
+ case 'tentative':
506
+ return 'tentative';
507
+ default:
508
+ return 'unknown';
509
+ }
510
+ }
511
+ /**
512
+ * Get response reason text
513
+ * @internal
514
+ */
515
+ getResponseReasonText(response) {
516
+ switch (response) {
517
+ case 'accept':
518
+ return '承諾しました';
519
+ case 'decline':
520
+ return '辞退しました';
521
+ case 'tentative':
522
+ return '仮承諾しました';
523
+ default:
524
+ return '応答しました';
525
+ }
526
+ }
527
+ /**
528
+ * Generate response message
529
+ * Requirement: 17.11
530
+ */
531
+ generateResponseMessage(response, eventTitle) {
532
+ switch (response) {
533
+ case 'accept':
534
+ return `「${eventTitle}」を承諾しました。`;
535
+ case 'decline':
536
+ return `「${eventTitle}」を辞退しました。`;
537
+ case 'tentative':
538
+ return `「${eventTitle}」を仮承諾しました。`;
539
+ default:
540
+ return `「${eventTitle}」に応答しました。`;
541
+ }
542
+ }
543
+ /**
544
+ * Generate batch summary message
545
+ * Requirement: 17.12
546
+ * @internal
547
+ */
548
+ generateBatchSummaryMessage(total, succeeded, skipped, failed, response) {
549
+ const responseText = this.getResponseReasonText(response).replace('しました', '');
550
+ let message = `${total}件中${succeeded}件のイベントを${responseText}しました。`;
551
+ if (skipped > 0) {
552
+ message += `${skipped}件はスキップされました。`;
553
+ }
554
+ if (failed > 0) {
555
+ message += `${failed}件は失敗しました。`;
556
+ }
557
+ return message;
558
+ }
559
+ }
560
+ //# sourceMappingURL=calendar-event-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-event-response.js","sourceRoot":"","sources":["../../src/integrations/calendar-event-response.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface CalendarPlatformInfo {
20
20
  }
21
21
  export type CalendarMethod = 'native' | 'eventkit' | 'caldav' | 'ical_url' | 'manual_input' | 'outlook';
22
22
  /**
23
- * Calendar event
23
+ * Calendar event (basic)
24
24
  */
25
25
  export interface CalendarEvent {
26
26
  id: string;
@@ -30,6 +30,35 @@ export interface CalendarEvent {
30
30
  isAllDay: boolean;
31
31
  source: string;
32
32
  }
33
+ /**
34
+ * Calendar event with additional details
35
+ * Requirement: 16.10
36
+ */
37
+ export interface CalendarEventDetailed extends CalendarEvent {
38
+ calendar: string;
39
+ location?: string;
40
+ }
41
+ /**
42
+ * Request for listing calendar events
43
+ * Requirement: 16.2, 16.3, 16.4
44
+ */
45
+ export interface ListEventsRequest {
46
+ startDate: string;
47
+ endDate: string;
48
+ calendarName?: string;
49
+ }
50
+ /**
51
+ * Response for listing calendar events
52
+ * Requirement: 16.10
53
+ */
54
+ export interface ListEventsResponse {
55
+ events: CalendarEventDetailed[];
56
+ period: {
57
+ start: string;
58
+ end: string;
59
+ };
60
+ totalEvents: number;
61
+ }
33
62
  /**
34
63
  * Slot request
35
64
  */
@@ -131,6 +160,42 @@ export declare class CalendarService {
131
160
  * Requirement: 6.9
132
161
  */
133
162
  generateManualInputPrompt(startDate: string, endDate: string): string;
163
+ /**
164
+ * List calendar events for a specified period
165
+ * Requirement: 16.1
166
+ */
167
+ listEvents(request: ListEventsRequest): Promise<ListEventsResponse>;
168
+ /**
169
+ * Validate ISO 8601 date format (YYYY-MM-DD)
170
+ */
171
+ private isValidDateFormat;
172
+ /**
173
+ * Fetch events with detailed information (calendar, location)
174
+ * Requirement: 16.10, 16.11
175
+ */
176
+ fetchEventsDetailed(startDate: string, endDate: string): Promise<CalendarEventDetailed[]>;
177
+ /**
178
+ * Fetch events via EventKit with detailed information
179
+ * Requirement: 16.10, 16.11
180
+ */
181
+ private fetchEventKitEventsDetailed;
182
+ /**
183
+ * Build AppleScriptObjC script for fetching events with details
184
+ * Includes calendar name and location
185
+ * Requirement: 16.10
186
+ */
187
+ buildEventKitScriptWithDetails(startDate: string, endDate: string): string;
188
+ /**
189
+ * Parse EventKit result with detailed information
190
+ * Format: title|start|end|id|isAllDay|calendar|location
191
+ * Requirement: 16.10
192
+ */
193
+ parseEventKitResultWithDetails(output: string): CalendarEventDetailed[];
194
+ /**
195
+ * Format AppleScript date string to JST ISO 8601 format
196
+ * Requirement: 16.9
197
+ */
198
+ private formatDateToJST;
134
199
  }
135
200
  export {};
136
201
  //# sourceMappingURL=calendar-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-service.d.ts","sourceRoot":"","sources":["../../src/integrations/calendar-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACzD,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,eAAe,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAsD;IAE5E;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAuDrD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgB/E;;;;;OAKG;YACW,iBAAiB;IAS/B;;;;OAIG;YACW,mBAAmB;IA8BjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA8D3B;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE;IAyBpD;;;OAGG;IACH,4BAA4B,CAC1B,MAAM,EAAE,aAAa,EAAE,EACvB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,GACX,aAAa,EAAE;IAuElB;;;OAGG;IACH,oBAAoB,CAClB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,cAAc,GACrB,aAAa;IA0BhB;;;OAGG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;CActE"}
1
+ {"version":3,"file":"calendar-service.d.ts","sourceRoot":"","sources":["../../src/integrations/calendar-service.ts"],"names":[],"mappings":"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"}