@shin1ohno/sage 0.3.0 → 0.5.5
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/cli/http-server-with-config.d.ts +38 -0
- package/dist/cli/http-server-with-config.d.ts.map +1 -0
- package/dist/cli/http-server-with-config.js +477 -0
- package/dist/cli/http-server-with-config.js.map +1 -0
- package/dist/cli/http-server.d.ts +74 -0
- package/dist/cli/http-server.d.ts.map +1 -0
- package/dist/cli/http-server.js +407 -0
- package/dist/cli/http-server.js.map +1 -0
- package/dist/cli/jwt-middleware.d.ts +36 -0
- package/dist/cli/jwt-middleware.d.ts.map +1 -0
- package/dist/cli/jwt-middleware.js +99 -0
- package/dist/cli/jwt-middleware.js.map +1 -0
- package/dist/cli/main-entry.d.ts +45 -0
- package/dist/cli/main-entry.d.ts.map +1 -0
- package/dist/cli/main-entry.js +192 -0
- package/dist/cli/main-entry.js.map +1 -0
- package/dist/cli/mcp-handler.d.ts +56 -0
- package/dist/cli/mcp-handler.d.ts.map +1 -0
- package/dist/cli/mcp-handler.js +2189 -0
- package/dist/cli/mcp-handler.js.map +1 -0
- package/dist/cli/parser.d.ts +45 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +172 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/remote-config-loader.d.ts +89 -0
- package/dist/cli/remote-config-loader.d.ts.map +1 -0
- package/dist/cli/remote-config-loader.js +129 -0
- package/dist/cli/remote-config-loader.js.map +1 -0
- package/dist/cli/secret-auth.d.ts +47 -0
- package/dist/cli/secret-auth.d.ts.map +1 -0
- package/dist/cli/secret-auth.js +165 -0
- package/dist/cli/secret-auth.js.map +1 -0
- package/dist/cli/sse-stream-handler.d.ts +45 -0
- package/dist/cli/sse-stream-handler.d.ts.map +1 -0
- package/dist/cli/sse-stream-handler.js +125 -0
- package/dist/cli/sse-stream-handler.js.map +1 -0
- package/dist/index.js +897 -209
- package/dist/index.js.map +1 -1
- package/dist/integrations/calendar-event-creator.d.ts +152 -0
- package/dist/integrations/calendar-event-creator.d.ts.map +1 -0
- package/dist/integrations/calendar-event-creator.js +507 -0
- package/dist/integrations/calendar-event-creator.js.map +1 -0
- package/dist/integrations/calendar-event-deleter.d.ts +137 -0
- package/dist/integrations/calendar-event-deleter.d.ts.map +1 -0
- package/dist/integrations/calendar-event-deleter.js +378 -0
- package/dist/integrations/calendar-event-deleter.js.map +1 -0
- package/dist/integrations/calendar-event-response.d.ts +213 -0
- package/dist/integrations/calendar-event-response.d.ts.map +1 -0
- package/dist/integrations/calendar-event-response.js +560 -0
- package/dist/integrations/calendar-event-response.js.map +1 -0
- package/dist/integrations/calendar-service.d.ts +66 -1
- package/dist/integrations/calendar-service.d.ts.map +1 -1
- package/dist/integrations/calendar-service.js +223 -0
- package/dist/integrations/calendar-service.js.map +1 -1
- package/dist/oauth/client-store.d.ts +36 -0
- package/dist/oauth/client-store.d.ts.map +1 -0
- package/dist/oauth/client-store.js +119 -0
- package/dist/oauth/client-store.js.map +1 -0
- package/dist/oauth/code-store.d.ts +48 -0
- package/dist/oauth/code-store.d.ts.map +1 -0
- package/dist/oauth/code-store.js +89 -0
- package/dist/oauth/code-store.js.map +1 -0
- package/dist/oauth/index.d.ts +13 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +21 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/oauth-handler.d.ts +101 -0
- package/dist/oauth/oauth-handler.d.ts.map +1 -0
- package/dist/oauth/oauth-handler.js +577 -0
- package/dist/oauth/oauth-handler.js.map +1 -0
- package/dist/oauth/oauth-server.d.ts +165 -0
- package/dist/oauth/oauth-server.d.ts.map +1 -0
- package/dist/oauth/oauth-server.js +489 -0
- package/dist/oauth/oauth-server.js.map +1 -0
- package/dist/oauth/pkce.d.ts +48 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +106 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/refresh-token-store.d.ts +45 -0
- package/dist/oauth/refresh-token-store.d.ts.map +1 -0
- package/dist/oauth/refresh-token-store.js +98 -0
- package/dist/oauth/refresh-token-store.js.map +1 -0
- package/dist/oauth/token-service.d.ts +46 -0
- package/dist/oauth/token-service.d.ts.map +1 -0
- package/dist/oauth/token-service.js +199 -0
- package/dist/oauth/token-service.js.map +1 -0
- package/dist/oauth/types.d.ts +269 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/types.js +53 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/version.d.ts +9 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +11 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Event Deleter Service
|
|
3
|
+
* Handles deleting calendar events via EventKit
|
|
4
|
+
* Requirements: 19.1-19.12
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Single event deletion by ID
|
|
8
|
+
* - Batch event deletion
|
|
9
|
+
* - Calendar-specific deletion
|
|
10
|
+
* - UUID extraction from full IDs
|
|
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
|
+
* Rate limit delay between batch operations (ms)
|
|
24
|
+
*/
|
|
25
|
+
const BATCH_DELAY_MS = 100;
|
|
26
|
+
/**
|
|
27
|
+
* Extract UUID from event ID
|
|
28
|
+
* Requirement: 19.4, 19.5
|
|
29
|
+
*
|
|
30
|
+
* @param eventId - Full event ID or UUID
|
|
31
|
+
* @returns UUID part of the event ID
|
|
32
|
+
*/
|
|
33
|
+
export function extractEventUid(eventId) {
|
|
34
|
+
if (!eventId) {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
const trimmed = eventId.trim();
|
|
38
|
+
if (!trimmed) {
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
// If contains colon, extract the last part (UUID)
|
|
42
|
+
const lastColonIndex = trimmed.lastIndexOf(':');
|
|
43
|
+
if (lastColonIndex !== -1) {
|
|
44
|
+
return trimmed.substring(lastColonIndex + 1);
|
|
45
|
+
}
|
|
46
|
+
return trimmed;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Calendar Event Deleter Service
|
|
50
|
+
* Deletes calendar events via EventKit on macOS
|
|
51
|
+
*/
|
|
52
|
+
export class CalendarEventDeleterService {
|
|
53
|
+
runAppleScript = null;
|
|
54
|
+
/**
|
|
55
|
+
* Detect current platform
|
|
56
|
+
*/
|
|
57
|
+
async detectPlatform() {
|
|
58
|
+
if (typeof process !== 'undefined' && process.platform === 'darwin') {
|
|
59
|
+
return {
|
|
60
|
+
platform: 'macos',
|
|
61
|
+
hasEventKitAccess: true,
|
|
62
|
+
supportsEventDeletion: true,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
platform: 'unknown',
|
|
67
|
+
hasEventKitAccess: false,
|
|
68
|
+
supportsEventDeletion: false,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if EventKit is available for event deletion
|
|
73
|
+
*/
|
|
74
|
+
async isEventKitAvailable() {
|
|
75
|
+
const platform = await this.detectPlatform();
|
|
76
|
+
return platform.hasEventKitAccess;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate delete event request
|
|
80
|
+
* Requirement: 19.2
|
|
81
|
+
*/
|
|
82
|
+
validateRequest(request) {
|
|
83
|
+
if (!request.eventId || request.eventId.trim() === '') {
|
|
84
|
+
return '無効なイベントID: イベントIDが空です';
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Validate batch delete request
|
|
90
|
+
* Requirement: 19.10
|
|
91
|
+
*/
|
|
92
|
+
validateBatchRequest(request) {
|
|
93
|
+
if (!request.eventIds || request.eventIds.length === 0) {
|
|
94
|
+
return '無効なリクエスト: イベントIDの配列が空です';
|
|
95
|
+
}
|
|
96
|
+
for (let i = 0; i < request.eventIds.length; i++) {
|
|
97
|
+
if (!request.eventIds[i] || request.eventIds[i].trim() === '') {
|
|
98
|
+
return `無効なイベントID: インデックス${i}のイベントIDが空です`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Delete a calendar event
|
|
105
|
+
* Requirement: 19.1
|
|
106
|
+
*/
|
|
107
|
+
async deleteEvent(request) {
|
|
108
|
+
// Validate input
|
|
109
|
+
const validationError = this.validateRequest(request);
|
|
110
|
+
if (validationError) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
eventId: request.eventId,
|
|
114
|
+
error: validationError,
|
|
115
|
+
message: 'イベントの削除に失敗しました',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
// Check platform availability
|
|
120
|
+
const isAvailable = await this.isEventKitAvailable();
|
|
121
|
+
if (!isAvailable) {
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
eventId: request.eventId,
|
|
125
|
+
error: 'カレンダー統合がこのプラットフォームで利用できません。macOSで実行してください。',
|
|
126
|
+
message: 'イベントの削除に失敗しました',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Delete event via EventKit
|
|
130
|
+
const result = await this.deleteEventViaEventKit(request);
|
|
131
|
+
if (result.success) {
|
|
132
|
+
result.message = this.generateSuccessMessage(result);
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
eventId: request.eventId,
|
|
140
|
+
error: `EventKitエラー: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
141
|
+
message: 'イベントの削除に失敗しました',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Delete multiple calendar events
|
|
147
|
+
* Requirement: 19.10
|
|
148
|
+
*/
|
|
149
|
+
async deleteEventsBatch(request) {
|
|
150
|
+
// Validate input
|
|
151
|
+
const validationError = this.validateBatchRequest(request);
|
|
152
|
+
if (validationError) {
|
|
153
|
+
return {
|
|
154
|
+
success: false,
|
|
155
|
+
totalCount: 0,
|
|
156
|
+
successCount: 0,
|
|
157
|
+
failedCount: 0,
|
|
158
|
+
results: [],
|
|
159
|
+
error: validationError,
|
|
160
|
+
message: 'イベントの削除に失敗しました',
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const results = [];
|
|
164
|
+
let successCount = 0;
|
|
165
|
+
let failedCount = 0;
|
|
166
|
+
// Process each event sequentially with rate limiting
|
|
167
|
+
for (let i = 0; i < request.eventIds.length; i++) {
|
|
168
|
+
const eventId = request.eventIds[i];
|
|
169
|
+
const result = await this.deleteEvent({
|
|
170
|
+
eventId,
|
|
171
|
+
calendarName: request.calendarName,
|
|
172
|
+
});
|
|
173
|
+
results.push(result);
|
|
174
|
+
if (result.success) {
|
|
175
|
+
successCount++;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
failedCount++;
|
|
179
|
+
}
|
|
180
|
+
// Add delay between operations (except for the last one)
|
|
181
|
+
if (i < request.eventIds.length - 1) {
|
|
182
|
+
await this.delay(BATCH_DELAY_MS);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const batchResult = {
|
|
186
|
+
success: successCount > 0 && failedCount === 0,
|
|
187
|
+
totalCount: request.eventIds.length,
|
|
188
|
+
successCount,
|
|
189
|
+
failedCount,
|
|
190
|
+
results,
|
|
191
|
+
message: '',
|
|
192
|
+
};
|
|
193
|
+
batchResult.message = this.generateBatchSummaryMessage(batchResult);
|
|
194
|
+
return batchResult;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Build AppleScriptObjC script for deleting event via EventKit
|
|
198
|
+
* Requirement: 19.6
|
|
199
|
+
*/
|
|
200
|
+
buildDeleteEventScript(eventId, calendarName) {
|
|
201
|
+
const uid = extractEventUid(eventId);
|
|
202
|
+
const escapedUid = uid.replace(/"/g, '\\"');
|
|
203
|
+
// Build calendar filter section
|
|
204
|
+
let calendarFilterSection = '';
|
|
205
|
+
if (calendarName) {
|
|
206
|
+
const escapedCalendarName = calendarName.replace(/"/g, '\\"');
|
|
207
|
+
calendarFilterSection = `
|
|
208
|
+
-- Filter by calendar name
|
|
209
|
+
set targetCalendarName to "${escapedCalendarName}"
|
|
210
|
+
set eventCalendarName to (theEvent's calendar()'s title()) as text
|
|
211
|
+
if eventCalendarName is not equal to targetCalendarName then
|
|
212
|
+
return "ERROR:指定されたカレンダーにイベントが見つかりません: " & targetCalendarName
|
|
213
|
+
end if
|
|
214
|
+
|
|
215
|
+
-- Check if calendar allows modifications
|
|
216
|
+
set canModify to ((theEvent's calendar())'s allowsContentModifications()) as boolean
|
|
217
|
+
if not canModify then
|
|
218
|
+
return "ERROR:読み取り専用カレンダーからは削除できません: " & eventCalendarName
|
|
219
|
+
end if`;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
calendarFilterSection = `
|
|
223
|
+
-- Check if calendar allows modifications
|
|
224
|
+
set canModify to ((theEvent's calendar())'s allowsContentModifications()) as boolean
|
|
225
|
+
if not canModify then
|
|
226
|
+
set calendarName to (theEvent's calendar()'s title()) as text
|
|
227
|
+
return "ERROR:読み取り専用カレンダーからは削除できません: " & calendarName
|
|
228
|
+
end if`;
|
|
229
|
+
}
|
|
230
|
+
return `
|
|
231
|
+
use AppleScript version "2.7"
|
|
232
|
+
use framework "Foundation"
|
|
233
|
+
use framework "EventKit"
|
|
234
|
+
use scripting additions
|
|
235
|
+
|
|
236
|
+
-- Create EventKit store
|
|
237
|
+
set theStore to current application's EKEventStore's alloc()'s init()
|
|
238
|
+
|
|
239
|
+
-- Request calendar access
|
|
240
|
+
theStore's requestFullAccessToEventsWithCompletion:(missing value)
|
|
241
|
+
delay 0.5
|
|
242
|
+
|
|
243
|
+
-- Check access
|
|
244
|
+
set accessStatus to current application's EKEventStore's authorizationStatusForEntityType:0
|
|
245
|
+
if accessStatus is not 3 then
|
|
246
|
+
return "ERROR:カレンダーへのアクセス権限がありません"
|
|
247
|
+
end if
|
|
248
|
+
|
|
249
|
+
-- Find event by identifier
|
|
250
|
+
set eventIdentifier to "${escapedUid}"
|
|
251
|
+
set theEvent to theStore's calendarItemWithIdentifier:eventIdentifier
|
|
252
|
+
|
|
253
|
+
if theEvent is missing value then
|
|
254
|
+
return "ERROR:イベントが見つかりません: " & eventIdentifier
|
|
255
|
+
end if
|
|
256
|
+
|
|
257
|
+
-- Verify it's an event (not a reminder)
|
|
258
|
+
set eventClass to theEvent's |class|()
|
|
259
|
+
if eventClass is not (current application's EKEvent) then
|
|
260
|
+
return "ERROR:指定されたIDはイベントではありません"
|
|
261
|
+
end if
|
|
262
|
+
|
|
263
|
+
${calendarFilterSection}
|
|
264
|
+
|
|
265
|
+
-- Get event details before deletion
|
|
266
|
+
set eventTitle to (theEvent's title()) as text
|
|
267
|
+
set calendarName to (theEvent's calendar()'s title()) as text
|
|
268
|
+
|
|
269
|
+
-- Delete the event
|
|
270
|
+
set deleteSuccess to theStore's removeEvent:theEvent span:0 |error|:(missing value)
|
|
271
|
+
|
|
272
|
+
if deleteSuccess then
|
|
273
|
+
return "SUCCESS|" & eventIdentifier & "|" & eventTitle & "|" & calendarName
|
|
274
|
+
else
|
|
275
|
+
return "ERROR:イベントの削除に失敗しました"
|
|
276
|
+
end if`;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Delete event via EventKit
|
|
280
|
+
* @internal
|
|
281
|
+
*/
|
|
282
|
+
async deleteEventViaEventKit(request) {
|
|
283
|
+
try {
|
|
284
|
+
// Lazy load run-applescript
|
|
285
|
+
if (!this.runAppleScript) {
|
|
286
|
+
const module = await import('run-applescript');
|
|
287
|
+
this.runAppleScript = module.runAppleScript;
|
|
288
|
+
}
|
|
289
|
+
const uid = extractEventUid(request.eventId);
|
|
290
|
+
const script = this.buildDeleteEventScript(uid, request.calendarName);
|
|
291
|
+
// Use retry with exponential backoff
|
|
292
|
+
const result = await retryWithBackoff(async () => {
|
|
293
|
+
return await this.runAppleScript(script);
|
|
294
|
+
}, {
|
|
295
|
+
...RETRY_OPTIONS,
|
|
296
|
+
onRetry: (error, attempt) => {
|
|
297
|
+
console.error(`EventKit delete event retry attempt ${attempt}: ${error.message}`);
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
return this.parseDeleteEventResult(result, request.eventId);
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
return {
|
|
304
|
+
success: false,
|
|
305
|
+
eventId: request.eventId,
|
|
306
|
+
error: `EventKitエラー: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
307
|
+
message: 'イベントの削除に失敗しました',
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Parse delete event result
|
|
313
|
+
* Requirement: 19.7
|
|
314
|
+
*/
|
|
315
|
+
parseDeleteEventResult(result, eventId) {
|
|
316
|
+
if (result.startsWith('ERROR:')) {
|
|
317
|
+
return {
|
|
318
|
+
success: false,
|
|
319
|
+
eventId,
|
|
320
|
+
error: result.replace('ERROR:', ''),
|
|
321
|
+
message: 'イベントの削除に失敗しました',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
if (result.startsWith('SUCCESS|')) {
|
|
325
|
+
const parts = result.split('|');
|
|
326
|
+
const deletedEventId = parts[1] || eventId;
|
|
327
|
+
const title = parts[2];
|
|
328
|
+
const calendarName = parts[3];
|
|
329
|
+
return {
|
|
330
|
+
success: true,
|
|
331
|
+
eventId: deletedEventId,
|
|
332
|
+
title,
|
|
333
|
+
calendarName,
|
|
334
|
+
message: '',
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
success: false,
|
|
339
|
+
eventId,
|
|
340
|
+
error: '予期しない応答形式',
|
|
341
|
+
message: 'イベントの削除に失敗しました',
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Generate success message for single deletion
|
|
346
|
+
* Requirement: 19.9
|
|
347
|
+
*/
|
|
348
|
+
generateSuccessMessage(result) {
|
|
349
|
+
if (!result.success) {
|
|
350
|
+
return 'イベントの削除に失敗しました';
|
|
351
|
+
}
|
|
352
|
+
if (result.calendarName) {
|
|
353
|
+
return `イベント「${result.title}」を削除しました(カレンダー: ${result.calendarName})`;
|
|
354
|
+
}
|
|
355
|
+
return `イベント「${result.title}」を削除しました`;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Generate summary message for batch deletion
|
|
359
|
+
* Requirement: 19.11
|
|
360
|
+
*/
|
|
361
|
+
generateBatchSummaryMessage(result) {
|
|
362
|
+
if (result.successCount === result.totalCount) {
|
|
363
|
+
return `${result.totalCount}件のイベントを削除しました`;
|
|
364
|
+
}
|
|
365
|
+
if (result.successCount === 0) {
|
|
366
|
+
return `イベントの削除に失敗しました(0件成功、${result.failedCount}件失敗)`;
|
|
367
|
+
}
|
|
368
|
+
return `${result.totalCount}件中${result.successCount}件のイベントを削除しました(${result.failedCount}件失敗)`;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Delay helper for rate limiting
|
|
372
|
+
* @internal
|
|
373
|
+
*/
|
|
374
|
+
delay(ms) {
|
|
375
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=calendar-event-deleter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-event-deleter.js","sourceRoot":"","sources":["../../src/integrations/calendar-event-deleter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,213 @@
|
|
|
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
|
+
/**
|
|
13
|
+
* Response type for calendar events
|
|
14
|
+
* Requirement: 17.2
|
|
15
|
+
*/
|
|
16
|
+
export type EventResponseType = 'accept' | 'decline' | 'tentative';
|
|
17
|
+
/**
|
|
18
|
+
* Calendar type detection
|
|
19
|
+
* Requirement: 17.5, 17.6
|
|
20
|
+
*/
|
|
21
|
+
export type CalendarType = 'google' | 'icloud' | 'exchange' | 'local';
|
|
22
|
+
/**
|
|
23
|
+
* Participant status in calendar events
|
|
24
|
+
*/
|
|
25
|
+
export type EventParticipantStatus = 'accepted' | 'declined' | 'tentative' | 'pending' | 'unknown';
|
|
26
|
+
/**
|
|
27
|
+
* Platform information for calendar integration
|
|
28
|
+
*/
|
|
29
|
+
export interface CalendarResponsePlatformInfo {
|
|
30
|
+
platform: 'macos' | 'ios' | 'ipados' | 'web' | 'unknown';
|
|
31
|
+
hasEventKitAccess: boolean;
|
|
32
|
+
supportsEventResponse: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Event response request
|
|
36
|
+
* Requirement: 17.2
|
|
37
|
+
*/
|
|
38
|
+
export interface EventResponseRequest {
|
|
39
|
+
eventId: string;
|
|
40
|
+
response: EventResponseType;
|
|
41
|
+
comment?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Event response result
|
|
45
|
+
* Requirement: 17.11
|
|
46
|
+
*/
|
|
47
|
+
export interface EventResponseResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
eventId: string;
|
|
50
|
+
eventTitle?: string;
|
|
51
|
+
newStatus?: EventParticipantStatus;
|
|
52
|
+
method?: string;
|
|
53
|
+
message?: string;
|
|
54
|
+
error?: string;
|
|
55
|
+
skipped?: boolean;
|
|
56
|
+
reason?: string;
|
|
57
|
+
instanceOnly?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Batch response request
|
|
61
|
+
* Requirement: 17.3, 17.4
|
|
62
|
+
*/
|
|
63
|
+
export interface BatchResponseRequest {
|
|
64
|
+
eventIds: string[];
|
|
65
|
+
response: EventResponseType;
|
|
66
|
+
comment?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Batch response result
|
|
70
|
+
* Requirement: 17.12
|
|
71
|
+
*/
|
|
72
|
+
export interface BatchResponseResult {
|
|
73
|
+
success: boolean;
|
|
74
|
+
summary: {
|
|
75
|
+
total: number;
|
|
76
|
+
succeeded: number;
|
|
77
|
+
skipped: number;
|
|
78
|
+
failed: number;
|
|
79
|
+
};
|
|
80
|
+
details: {
|
|
81
|
+
succeeded: Array<{
|
|
82
|
+
id: string;
|
|
83
|
+
title: string;
|
|
84
|
+
reason: string;
|
|
85
|
+
}>;
|
|
86
|
+
skipped: Array<{
|
|
87
|
+
id: string;
|
|
88
|
+
title: string;
|
|
89
|
+
reason: string;
|
|
90
|
+
}>;
|
|
91
|
+
failed: Array<{
|
|
92
|
+
id: string;
|
|
93
|
+
title: string;
|
|
94
|
+
error: string;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
message: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Event details for validation
|
|
101
|
+
*/
|
|
102
|
+
export interface EventDetails {
|
|
103
|
+
id: string;
|
|
104
|
+
title: string;
|
|
105
|
+
isOrganizer: boolean;
|
|
106
|
+
hasAttendees: boolean;
|
|
107
|
+
isReadOnly: boolean;
|
|
108
|
+
calendarType: CalendarType;
|
|
109
|
+
isRecurringInstance?: boolean;
|
|
110
|
+
isAllDay?: boolean;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Response validation result
|
|
114
|
+
*/
|
|
115
|
+
export interface CanRespondResult {
|
|
116
|
+
canRespond: boolean;
|
|
117
|
+
reason?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Calendar Event Response Service
|
|
121
|
+
* Handles responding to calendar events
|
|
122
|
+
*/
|
|
123
|
+
export declare class CalendarEventResponseService {
|
|
124
|
+
private runAppleScript;
|
|
125
|
+
/**
|
|
126
|
+
* Detect current platform
|
|
127
|
+
*/
|
|
128
|
+
detectPlatform(): Promise<CalendarResponsePlatformInfo>;
|
|
129
|
+
/**
|
|
130
|
+
* Check if EventKit is available
|
|
131
|
+
*/
|
|
132
|
+
isEventKitAvailable(): Promise<boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Detect calendar type from event ID
|
|
135
|
+
* Requirement: 17.5, 17.6
|
|
136
|
+
*/
|
|
137
|
+
detectCalendarType(eventId: string): Promise<CalendarType>;
|
|
138
|
+
/**
|
|
139
|
+
* Check if an event can be responded to
|
|
140
|
+
* Requirement: 17.7, 17.9, 17.10
|
|
141
|
+
*/
|
|
142
|
+
canRespondToEvent(event: {
|
|
143
|
+
id: string;
|
|
144
|
+
title: string;
|
|
145
|
+
isOrganizer: boolean;
|
|
146
|
+
hasAttendees: boolean;
|
|
147
|
+
isReadOnly: boolean;
|
|
148
|
+
}): Promise<CanRespondResult>;
|
|
149
|
+
/**
|
|
150
|
+
* Respond to a single calendar event
|
|
151
|
+
* Requirement: 17.1
|
|
152
|
+
*/
|
|
153
|
+
respondToEvent(request: EventResponseRequest): Promise<EventResponseResult>;
|
|
154
|
+
/**
|
|
155
|
+
* Respond to multiple calendar events
|
|
156
|
+
* Requirement: 17.3, 17.4
|
|
157
|
+
*/
|
|
158
|
+
respondToEventsBatch(request: BatchResponseRequest): Promise<BatchResponseResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Fetch event details via EventKit
|
|
161
|
+
* @internal
|
|
162
|
+
*/
|
|
163
|
+
private fetchEventDetails;
|
|
164
|
+
/**
|
|
165
|
+
* Build AppleScript for fetching event details
|
|
166
|
+
* @internal
|
|
167
|
+
*/
|
|
168
|
+
private buildFetchEventDetailsScript;
|
|
169
|
+
/**
|
|
170
|
+
* Parse event details result
|
|
171
|
+
* @internal
|
|
172
|
+
*/
|
|
173
|
+
private parseEventDetailsResult;
|
|
174
|
+
/**
|
|
175
|
+
* Respond via EventKit
|
|
176
|
+
* Requirement: 17.6
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
private respondViaEventKit;
|
|
180
|
+
/**
|
|
181
|
+
* Build AppleScript for responding to event
|
|
182
|
+
* Note: EventKit's EKParticipant is read-only, so we use Calendar.app as fallback
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
private buildRespondScript;
|
|
186
|
+
/**
|
|
187
|
+
* Convert response type to EventKit status constant
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
private responseTypeToEventKitStatus;
|
|
191
|
+
/**
|
|
192
|
+
* Convert response type to participant status
|
|
193
|
+
* @internal
|
|
194
|
+
*/
|
|
195
|
+
private responseTypeToStatus;
|
|
196
|
+
/**
|
|
197
|
+
* Get response reason text
|
|
198
|
+
* @internal
|
|
199
|
+
*/
|
|
200
|
+
private getResponseReasonText;
|
|
201
|
+
/**
|
|
202
|
+
* Generate response message
|
|
203
|
+
* Requirement: 17.11
|
|
204
|
+
*/
|
|
205
|
+
generateResponseMessage(response: EventResponseType, eventTitle: string): string;
|
|
206
|
+
/**
|
|
207
|
+
* Generate batch summary message
|
|
208
|
+
* Requirement: 17.12
|
|
209
|
+
* @internal
|
|
210
|
+
*/
|
|
211
|
+
private generateBatchSummaryMessage;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=calendar-event-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-event-response.d.ts","sourceRoot":"","sources":["../../src/integrations/calendar-event-response.ts"],"names":[],"mappings":"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"}
|