@elizaos/plugin-google 2.0.3-beta.5 → 2.0.3-beta.7

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 (57) hide show
  1. package/dist/auth.d.ts +9 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +45 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/calendar.d.ts +26 -0
  6. package/dist/calendar.d.ts.map +1 -0
  7. package/dist/calendar.js +237 -0
  8. package/dist/calendar.js.map +1 -0
  9. package/dist/client-factory.d.ts +17 -0
  10. package/dist/client-factory.d.ts.map +1 -0
  11. package/dist/client-factory.js +74 -0
  12. package/dist/client-factory.js.map +1 -0
  13. package/dist/connector-account-provider.d.ts +23 -0
  14. package/dist/connector-account-provider.d.ts.map +1 -0
  15. package/dist/connector-account-provider.js +361 -0
  16. package/dist/connector-account-provider.js.map +1 -0
  17. package/dist/connector-credential-refs.d.ts +43 -0
  18. package/dist/connector-credential-refs.d.ts.map +1 -0
  19. package/dist/connector-credential-refs.js +252 -0
  20. package/dist/connector-credential-refs.js.map +1 -0
  21. package/dist/credential-resolver.d.ts +45 -0
  22. package/dist/credential-resolver.d.ts.map +1 -0
  23. package/dist/credential-resolver.js +529 -0
  24. package/dist/credential-resolver.js.map +1 -0
  25. package/dist/drive.d.ts +41 -0
  26. package/dist/drive.d.ts.map +1 -0
  27. package/dist/drive.js +207 -0
  28. package/dist/drive.js.map +1 -0
  29. package/dist/gmail.d.ts +89 -0
  30. package/dist/gmail.d.ts.map +1 -0
  31. package/dist/gmail.js +765 -0
  32. package/dist/gmail.js.map +1 -0
  33. package/dist/index.d.ts +17 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +47 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/lifeops-message-adapter.d.ts +23 -0
  38. package/dist/lifeops-message-adapter.d.ts.map +1 -0
  39. package/dist/lifeops-message-adapter.js +268 -0
  40. package/dist/lifeops-message-adapter.js.map +1 -0
  41. package/dist/meet.d.ts +61 -0
  42. package/dist/meet.d.ts.map +1 -0
  43. package/dist/meet.js +329 -0
  44. package/dist/meet.js.map +1 -0
  45. package/dist/scopes.d.ts +59 -0
  46. package/dist/scopes.d.ts.map +1 -0
  47. package/dist/scopes.js +142 -0
  48. package/dist/scopes.js.map +1 -0
  49. package/dist/service.d.ts +165 -0
  50. package/dist/service.d.ts.map +1 -0
  51. package/dist/service.js +170 -0
  52. package/dist/service.js.map +1 -0
  53. package/dist/types.d.ts +492 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/dist/types.js +9 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +3 -3
package/dist/meet.js ADDED
@@ -0,0 +1,329 @@
1
+ import { GoogleMeetStatus } from "./types.js";
2
+ export const GOOGLE_MEET_API_SURFACE = [
3
+ { method: "createMeeting", capabilities: ["meet.create"] },
4
+ { method: "getMeeting", capabilities: ["meet.read"] },
5
+ { method: "getMeetingSpace", capabilities: ["meet.read"] },
6
+ { method: "getConferenceRecord", capabilities: ["meet.read"] },
7
+ { method: "listMeetingParticipants", capabilities: ["meet.read"] },
8
+ { method: "listMeetingTranscripts", capabilities: ["meet.read"] },
9
+ { method: "getMeetingTranscript", capabilities: ["meet.read"] },
10
+ { method: "listMeetingRecordings", capabilities: ["meet.read"] },
11
+ { method: "getMeetingRecordingUrl", capabilities: ["meet.read"] },
12
+ { method: "endMeeting", capabilities: ["meet.create"] },
13
+ { method: "generateReport", capabilities: ["meet.read"] },
14
+ ];
15
+ export class GoogleMeetClient {
16
+ clientFactory;
17
+ constructor(clientFactory) {
18
+ this.clientFactory = clientFactory;
19
+ }
20
+ async createMeeting(params) {
21
+ const meet = await this.clientFactory.meet(params, ["meet.create"], "meet.createMeeting");
22
+ const response = await meet.spaces.create({
23
+ requestBody: {
24
+ config: params.accessType ? { accessType: params.accessType } : undefined,
25
+ },
26
+ });
27
+ return {
28
+ ...mapSpace(response.data, params.title),
29
+ title: params.title,
30
+ startTime: new Date().toISOString(),
31
+ participants: [],
32
+ transcripts: [],
33
+ status: response.data.activeConference ? GoogleMeetStatus.ACTIVE : GoogleMeetStatus.WAITING,
34
+ };
35
+ }
36
+ async getMeeting(params) {
37
+ const space = await this.getMeetingSpace(params);
38
+ return {
39
+ ...space,
40
+ participants: [],
41
+ transcripts: [],
42
+ status: space.activeConferenceRecord ? GoogleMeetStatus.ACTIVE : GoogleMeetStatus.WAITING,
43
+ };
44
+ }
45
+ async getMeetingSpace(params) {
46
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.getMeetingSpace");
47
+ const response = await meet.spaces.get({
48
+ name: normalizeSpaceName(params.meetingId),
49
+ });
50
+ return mapSpace(response.data);
51
+ }
52
+ async getConferenceRecord(params) {
53
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.getConferenceRecord");
54
+ const response = await meet.conferenceRecords.get({
55
+ name: params.conferenceRecordName,
56
+ });
57
+ return mapConferenceRecord(response.data);
58
+ }
59
+ async listMeetingParticipants(params) {
60
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.listMeetingParticipants");
61
+ const participants = [];
62
+ let pageToken;
63
+ do {
64
+ const response = await meet.conferenceRecords.participants.list({
65
+ parent: params.conferenceRecordName,
66
+ pageSize: Math.min(params.limit ?? 100, 100),
67
+ pageToken,
68
+ });
69
+ participants.push(...(response.data.participants ?? []).map(mapParticipant));
70
+ pageToken = response.data.nextPageToken ?? undefined;
71
+ } while (pageToken && (!params.limit || participants.length < params.limit));
72
+ return params.limit ? participants.slice(0, params.limit) : participants;
73
+ }
74
+ async listMeetingTranscripts(params) {
75
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.listMeetingTranscripts");
76
+ const transcripts = [];
77
+ let pageToken;
78
+ do {
79
+ const response = await meet.conferenceRecords.transcripts.list({
80
+ parent: params.conferenceRecordName,
81
+ pageSize: 100,
82
+ pageToken,
83
+ });
84
+ transcripts.push(...(response.data.transcripts ?? []).map(mapTranscriptArtifact));
85
+ pageToken = response.data.nextPageToken ?? undefined;
86
+ } while (pageToken);
87
+ return transcripts;
88
+ }
89
+ async getMeetingTranscript(params) {
90
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.getMeetingTranscript");
91
+ const transcriptEntries = [];
92
+ let pageToken;
93
+ do {
94
+ const response = await meet.conferenceRecords.transcripts.entries.list({
95
+ parent: params.transcriptName,
96
+ pageSize: 100,
97
+ pageToken,
98
+ });
99
+ transcriptEntries.push(...(response.data.transcriptEntries ?? []).map(mapTranscriptEntry));
100
+ pageToken = response.data.nextPageToken ?? undefined;
101
+ } while (pageToken);
102
+ return transcriptEntries;
103
+ }
104
+ async listMeetingRecordings(params) {
105
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.listMeetingRecordings");
106
+ const recordings = [];
107
+ let pageToken;
108
+ do {
109
+ const response = await meet.conferenceRecords.recordings.list({
110
+ parent: params.conferenceRecordName,
111
+ pageSize: 100,
112
+ pageToken,
113
+ });
114
+ recordings.push(...(response.data.recordings ?? []).map(mapRecording));
115
+ pageToken = response.data.nextPageToken ?? undefined;
116
+ } while (pageToken);
117
+ return recordings;
118
+ }
119
+ async getMeetingRecordingUrl(params) {
120
+ const meet = await this.clientFactory.meet(params, ["meet.read"], "meet.getMeetingRecordingUrl");
121
+ const response = await meet.conferenceRecords.recordings.get({
122
+ name: params.recordingName,
123
+ });
124
+ return response.data.driveDestination?.exportUri ?? null;
125
+ }
126
+ async endMeeting(params) {
127
+ const meet = await this.clientFactory.meet(params, ["meet.create"], "meet.endMeeting");
128
+ await meet.spaces.endActiveConference({
129
+ name: normalizeSpaceName(params.spaceName),
130
+ requestBody: {},
131
+ });
132
+ }
133
+ async generateReport(params) {
134
+ const conferenceRecordName = normalizeConferenceRecordName(params);
135
+ const conference = await this.getConferenceRecord({
136
+ accountId: params.accountId,
137
+ conferenceRecordName,
138
+ });
139
+ const participants = await this.listMeetingParticipants({
140
+ accountId: params.accountId,
141
+ conferenceRecordName,
142
+ });
143
+ const transcriptEntries = await this.collectTranscriptEntries(params, conferenceRecordName);
144
+ const summary = summarizeTranscript(transcriptEntries);
145
+ const recordings = params.includeRecordings === false
146
+ ? []
147
+ : await this.listMeetingRecordings({
148
+ accountId: params.accountId,
149
+ conferenceRecordName,
150
+ });
151
+ return {
152
+ meetingId: params.meetingId ?? conferenceRecordName,
153
+ conferenceRecordName,
154
+ title: `Google Meet Report - ${conferenceRecordName}`,
155
+ date: conference.startTime,
156
+ durationMinutes: durationMinutes(conference),
157
+ participants,
158
+ summary: params.includeSummary === false ? "" : summary.summary,
159
+ keyPoints: params.includeSummary === false ? [] : summary.keyPoints,
160
+ actionItems: params.includeActionItems === false ? [] : summary.actionItems,
161
+ fullTranscript: params.includeTranscript === false ? [] : transcriptEntries,
162
+ recordings,
163
+ };
164
+ }
165
+ async collectTranscriptEntries(params, conferenceRecordName) {
166
+ if (params.includeSummary === false &&
167
+ params.includeActionItems === false &&
168
+ params.includeTranscript === false) {
169
+ return [];
170
+ }
171
+ const transcriptNames = params.transcriptName
172
+ ? [params.transcriptName]
173
+ : (await this.listMeetingTranscripts({
174
+ accountId: params.accountId,
175
+ conferenceRecordName,
176
+ })).map((transcript) => transcript.name);
177
+ const transcriptGroups = await Promise.all(transcriptNames.map((transcriptName) => this.getMeetingTranscript({ accountId: params.accountId, transcriptName })));
178
+ return transcriptGroups.flat();
179
+ }
180
+ }
181
+ function mapSpace(space, title) {
182
+ const meetingCode = space.meetingCode ?? undefined;
183
+ const spaceName = space.name ?? "";
184
+ return {
185
+ id: spaceName,
186
+ spaceName,
187
+ meetingCode,
188
+ meetingUri: space.meetingUri ?? (meetingCode ? `https://meet.google.com/${meetingCode}` : ""),
189
+ title,
190
+ accessType: toMeetAccessType(space.config?.accessType),
191
+ activeConferenceRecord: space.activeConference?.conferenceRecord ?? undefined,
192
+ };
193
+ }
194
+ function mapConferenceRecord(conference) {
195
+ return {
196
+ id: conference.name ?? "",
197
+ name: conference.name ?? "",
198
+ spaceName: conference.space ?? undefined,
199
+ startTime: conference.startTime ?? undefined,
200
+ endTime: conference.endTime ?? undefined,
201
+ expireTime: conference.expireTime ?? undefined,
202
+ };
203
+ }
204
+ function mapParticipant(participant) {
205
+ const display = participantDisplay(participant);
206
+ return {
207
+ id: participant.name ?? "",
208
+ name: display.name,
209
+ displayName: display.name,
210
+ joinTime: participant.earliestStartTime ?? undefined,
211
+ leaveTime: participant.latestEndTime ?? undefined,
212
+ isActive: !participant.latestEndTime,
213
+ userType: display.userType,
214
+ };
215
+ }
216
+ function mapTranscriptArtifact(transcript) {
217
+ return {
218
+ id: transcript.name ?? "",
219
+ name: transcript.name ?? "",
220
+ documentId: transcript.docsDestination?.document ?? undefined,
221
+ documentUri: transcript.docsDestination?.exportUri ?? undefined,
222
+ startTime: transcript.startTime ?? undefined,
223
+ endTime: transcript.endTime ?? undefined,
224
+ state: transcript.state ?? undefined,
225
+ };
226
+ }
227
+ function mapTranscriptEntry(entry) {
228
+ return {
229
+ id: entry.name ?? "",
230
+ speakerName: entry.participant ?? undefined,
231
+ speakerId: entry.participant ?? undefined,
232
+ text: entry.text ?? "",
233
+ timestamp: entry.startTime ?? undefined,
234
+ startTime: entry.startTime ?? undefined,
235
+ endTime: entry.endTime ?? undefined,
236
+ languageCode: entry.languageCode ?? undefined,
237
+ confidence: 1,
238
+ };
239
+ }
240
+ function mapRecording(recording) {
241
+ return {
242
+ id: recording.name ?? "",
243
+ name: recording.name ?? "",
244
+ uri: recording.driveDestination?.exportUri ?? undefined,
245
+ fileId: recording.driveDestination?.file ?? undefined,
246
+ startTime: recording.startTime ?? undefined,
247
+ endTime: recording.endTime ?? undefined,
248
+ state: recording.state ?? undefined,
249
+ };
250
+ }
251
+ function participantDisplay(participant) {
252
+ if (participant.signedinUser) {
253
+ return {
254
+ name: participant.signedinUser.displayName ?? participant.signedinUser.user ?? "Signed-in User",
255
+ userType: "signed_in",
256
+ };
257
+ }
258
+ if (participant.anonymousUser) {
259
+ return {
260
+ name: participant.anonymousUser.displayName ?? "Anonymous User",
261
+ userType: "anonymous",
262
+ };
263
+ }
264
+ if (participant.phoneUser) {
265
+ return {
266
+ name: participant.phoneUser.displayName ?? "Phone User",
267
+ userType: "phone",
268
+ };
269
+ }
270
+ return { name: "Unknown", userType: "unknown" };
271
+ }
272
+ function normalizeSpaceName(value) {
273
+ if (value.startsWith("spaces/")) {
274
+ return value;
275
+ }
276
+ return `spaces/${value}`;
277
+ }
278
+ function normalizeConferenceRecordName(params) {
279
+ if (params.conferenceRecordName?.startsWith("conferenceRecords/")) {
280
+ return params.conferenceRecordName;
281
+ }
282
+ if (params.meetingId?.startsWith("conferenceRecords/")) {
283
+ return params.meetingId;
284
+ }
285
+ throw new Error("Google Meet reports require conferenceRecordName in the form conferenceRecords/{record}.");
286
+ }
287
+ function toMeetAccessType(value) {
288
+ if (value === "OPEN" || value === "TRUSTED" || value === "RESTRICTED") {
289
+ return value;
290
+ }
291
+ return undefined;
292
+ }
293
+ function durationMinutes(conference) {
294
+ if (!conference.startTime || !conference.endTime) {
295
+ return 0;
296
+ }
297
+ const start = new Date(conference.startTime).getTime();
298
+ const end = new Date(conference.endTime).getTime();
299
+ if (Number.isNaN(start) || Number.isNaN(end)) {
300
+ return 0;
301
+ }
302
+ return Math.max(0, Math.round((end - start) / 60000));
303
+ }
304
+ function summarizeTranscript(entries) {
305
+ const lines = entries.map((entry) => entry.text.trim()).filter(Boolean);
306
+ if (lines.length === 0) {
307
+ return {
308
+ summary: "No transcript entries were available for this conference record.",
309
+ keyPoints: [],
310
+ actionItems: [],
311
+ };
312
+ }
313
+ const plainText = lines.join(" ");
314
+ const sentences = plainText
315
+ .split(/(?<=[.!?])\s+/)
316
+ .map((sentence) => sentence.trim())
317
+ .filter(Boolean);
318
+ const summary = sentences.slice(0, 3).join(" ") || plainText.slice(0, 500);
319
+ const keyPoints = lines.filter((line) => line.length >= 20).slice(0, 6);
320
+ const actionItems = lines
321
+ .filter((line) => /\b(action item|to[- ]?do|follow up|need to|will|should)\b/i.test(line))
322
+ .slice(0, 6)
323
+ .map((line) => ({
324
+ description: line,
325
+ priority: "medium",
326
+ }));
327
+ return { summary, keyPoints, actionItems };
328
+ }
329
+ //# sourceMappingURL=meet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet.js","sourceRoot":"","sources":["../src/meet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export declare const GOOGLE_CAPABILITIES: readonly ["gmail.read", "gmail.send", "gmail.manage", "calendar.read", "calendar.write", "drive.read", "drive.write", "meet.create", "meet.read"];
2
+ export type GoogleCapability = (typeof GOOGLE_CAPABILITIES)[number];
3
+ export declare const GOOGLE_CAPABILITY_GROUPS: readonly ["gmail", "calendar", "drive", "meet"];
4
+ export type GoogleCapabilityGroup = (typeof GOOGLE_CAPABILITY_GROUPS)[number];
5
+ export declare const GOOGLE_OAUTH_SCOPES: {
6
+ readonly gmail: {
7
+ readonly read: "https://www.googleapis.com/auth/gmail.readonly";
8
+ readonly send: "https://www.googleapis.com/auth/gmail.send";
9
+ readonly manage: "https://www.googleapis.com/auth/gmail.modify";
10
+ readonly settings: "https://www.googleapis.com/auth/gmail.settings.basic";
11
+ };
12
+ readonly calendar: {
13
+ readonly read: "https://www.googleapis.com/auth/calendar.readonly";
14
+ readonly write: "https://www.googleapis.com/auth/calendar.events";
15
+ };
16
+ readonly drive: {
17
+ readonly read: "https://www.googleapis.com/auth/drive.readonly";
18
+ readonly write: "https://www.googleapis.com/auth/drive.file";
19
+ };
20
+ readonly meet: {
21
+ readonly create: "https://www.googleapis.com/auth/meetings.space.created";
22
+ readonly read: "https://www.googleapis.com/auth/meetings.space.readonly";
23
+ };
24
+ readonly profile: {
25
+ readonly email: "https://www.googleapis.com/auth/userinfo.email";
26
+ readonly profile: "https://www.googleapis.com/auth/userinfo.profile";
27
+ readonly openid: "openid";
28
+ };
29
+ };
30
+ export interface GoogleCapabilityMetadata {
31
+ id: GoogleCapability;
32
+ group: GoogleCapabilityGroup;
33
+ label: string;
34
+ description: string;
35
+ scopes: readonly string[];
36
+ }
37
+ export declare const GOOGLE_CAPABILITY_SCOPES: {
38
+ readonly "gmail.read": readonly ["https://www.googleapis.com/auth/gmail.readonly"];
39
+ readonly "gmail.send": readonly ["https://www.googleapis.com/auth/gmail.send"];
40
+ readonly "gmail.manage": readonly ["https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.settings.basic"];
41
+ readonly "calendar.read": readonly ["https://www.googleapis.com/auth/calendar.readonly"];
42
+ readonly "calendar.write": readonly ["https://www.googleapis.com/auth/calendar.events"];
43
+ readonly "drive.read": readonly ["https://www.googleapis.com/auth/drive.readonly"];
44
+ readonly "drive.write": readonly ["https://www.googleapis.com/auth/drive.file"];
45
+ readonly "meet.create": readonly ["https://www.googleapis.com/auth/meetings.space.created"];
46
+ readonly "meet.read": readonly ["https://www.googleapis.com/auth/meetings.space.readonly"];
47
+ };
48
+ export declare const GOOGLE_CAPABILITY_METADATA: Record<"gmail.read" | "gmail.send" | "gmail.manage" | "calendar.read" | "calendar.write" | "drive.read" | "drive.write" | "meet.create" | "meet.read", GoogleCapabilityMetadata>;
49
+ export declare const GOOGLE_CAPABILITY_DESCRIPTORS: Record<"gmail.read" | "gmail.send" | "gmail.manage" | "calendar.read" | "calendar.write" | "drive.read" | "drive.write" | "meet.create" | "meet.read", GoogleCapabilityMetadata>;
50
+ export declare const GOOGLE_IDENTITY_SCOPES: readonly ["openid", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"];
51
+ export declare function isGoogleCapability(value: unknown): value is GoogleCapability;
52
+ export declare function normalizeGoogleCapabilities(capabilities: Iterable<unknown> | undefined): GoogleCapability[];
53
+ export interface GoogleScopeDerivationOptions {
54
+ includeIdentityScopes?: boolean;
55
+ }
56
+ export declare function scopesForGoogleCapabilities(capabilities: readonly GoogleCapability[], options?: GoogleScopeDerivationOptions): string[];
57
+ export declare function capabilityGroups(capabilities: readonly GoogleCapability[]): GoogleCapabilityGroup[];
58
+ export declare const GOOGLE_DEFAULT_CONNECT_SCOPES: string[];
59
+ //# sourceMappingURL=scopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,mJAUtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,wBAAwB,iDAAkD,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;CAwBtB,CAAC;AAEX,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;CAU2B,CAAC;AA6CjE,eAAO,MAAM,0BAA0B,kLAWtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,kLAA6B,CAAC;AAExE,eAAO,MAAM,sBAAsB,2HAIzB,CAAC;AAIX,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,GAC1C,gBAAgB,EAAE,CAapB;AAED,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,OAAO,GAAE,4BAAiC,GACzC,MAAM,EAAE,CAgBV;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,qBAAqB,EAAE,CAMzB;AAED,eAAO,MAAM,6BAA6B,UAExC,CAAC"}
package/dist/scopes.js ADDED
@@ -0,0 +1,142 @@
1
+ export const GOOGLE_CAPABILITIES = [
2
+ "gmail.read",
3
+ "gmail.send",
4
+ "gmail.manage",
5
+ "calendar.read",
6
+ "calendar.write",
7
+ "drive.read",
8
+ "drive.write",
9
+ "meet.create",
10
+ "meet.read",
11
+ ];
12
+ export const GOOGLE_CAPABILITY_GROUPS = ["gmail", "calendar", "drive", "meet"];
13
+ export const GOOGLE_OAUTH_SCOPES = {
14
+ gmail: {
15
+ read: "https://www.googleapis.com/auth/gmail.readonly",
16
+ send: "https://www.googleapis.com/auth/gmail.send",
17
+ manage: "https://www.googleapis.com/auth/gmail.modify",
18
+ settings: "https://www.googleapis.com/auth/gmail.settings.basic",
19
+ },
20
+ calendar: {
21
+ read: "https://www.googleapis.com/auth/calendar.readonly",
22
+ write: "https://www.googleapis.com/auth/calendar.events",
23
+ },
24
+ drive: {
25
+ read: "https://www.googleapis.com/auth/drive.readonly",
26
+ write: "https://www.googleapis.com/auth/drive.file",
27
+ },
28
+ meet: {
29
+ create: "https://www.googleapis.com/auth/meetings.space.created",
30
+ read: "https://www.googleapis.com/auth/meetings.space.readonly",
31
+ },
32
+ profile: {
33
+ email: "https://www.googleapis.com/auth/userinfo.email",
34
+ profile: "https://www.googleapis.com/auth/userinfo.profile",
35
+ openid: "openid",
36
+ },
37
+ };
38
+ export const GOOGLE_CAPABILITY_SCOPES = {
39
+ "gmail.read": [GOOGLE_OAUTH_SCOPES.gmail.read],
40
+ "gmail.send": [GOOGLE_OAUTH_SCOPES.gmail.send],
41
+ "gmail.manage": [GOOGLE_OAUTH_SCOPES.gmail.manage, GOOGLE_OAUTH_SCOPES.gmail.settings],
42
+ "calendar.read": [GOOGLE_OAUTH_SCOPES.calendar.read],
43
+ "calendar.write": [GOOGLE_OAUTH_SCOPES.calendar.write],
44
+ "drive.read": [GOOGLE_OAUTH_SCOPES.drive.read],
45
+ "drive.write": [GOOGLE_OAUTH_SCOPES.drive.write],
46
+ "meet.create": [GOOGLE_OAUTH_SCOPES.meet.create],
47
+ "meet.read": [GOOGLE_OAUTH_SCOPES.meet.read],
48
+ };
49
+ const GOOGLE_CAPABILITY_DETAILS = {
50
+ "gmail.read": {
51
+ label: "Read Gmail",
52
+ description: "Search and read Gmail message metadata and message bodies.",
53
+ },
54
+ "gmail.send": {
55
+ label: "Send Gmail",
56
+ description: "Send email through Gmail for the selected account.",
57
+ },
58
+ "gmail.manage": {
59
+ label: "Manage Gmail",
60
+ description: "Modify Gmail labels, message state, and basic mail settings.",
61
+ },
62
+ "calendar.read": {
63
+ label: "Read Calendar",
64
+ description: "List Google Calendar events for the selected account.",
65
+ },
66
+ "calendar.write": {
67
+ label: "Write Calendar",
68
+ description: "Create and update Google Calendar events.",
69
+ },
70
+ "drive.read": {
71
+ label: "Read Drive",
72
+ description: "Search and read Google Drive file metadata.",
73
+ },
74
+ "drive.write": {
75
+ label: "Write Drive",
76
+ description: "Create or update files opened or created by this integration.",
77
+ },
78
+ "meet.create": {
79
+ label: "Create Meet Spaces",
80
+ description: "Create Google Meet spaces and end active conferences created by the user.",
81
+ },
82
+ "meet.read": {
83
+ label: "Read Meet Artifacts",
84
+ description: "Read Google Meet spaces, conference records, participants, transcripts, and recordings.",
85
+ },
86
+ };
87
+ export const GOOGLE_CAPABILITY_METADATA = GOOGLE_CAPABILITIES.reduce((metadata, capability) => {
88
+ metadata[capability] = {
89
+ id: capability,
90
+ group: capability.split(".")[0],
91
+ ...GOOGLE_CAPABILITY_DETAILS[capability],
92
+ scopes: GOOGLE_CAPABILITY_SCOPES[capability],
93
+ };
94
+ return metadata;
95
+ }, {});
96
+ export const GOOGLE_CAPABILITY_DESCRIPTORS = GOOGLE_CAPABILITY_METADATA;
97
+ export const GOOGLE_IDENTITY_SCOPES = [
98
+ GOOGLE_OAUTH_SCOPES.profile.openid,
99
+ GOOGLE_OAUTH_SCOPES.profile.email,
100
+ GOOGLE_OAUTH_SCOPES.profile.profile,
101
+ ];
102
+ const GOOGLE_CAPABILITY_SET = new Set(GOOGLE_CAPABILITIES);
103
+ export function isGoogleCapability(value) {
104
+ return typeof value === "string" && GOOGLE_CAPABILITY_SET.has(value);
105
+ }
106
+ export function normalizeGoogleCapabilities(capabilities) {
107
+ const normalized = [];
108
+ const seen = new Set();
109
+ for (const candidate of capabilities ?? []) {
110
+ if (!isGoogleCapability(candidate) || seen.has(candidate)) {
111
+ continue;
112
+ }
113
+ seen.add(candidate);
114
+ normalized.push(candidate);
115
+ }
116
+ return normalized;
117
+ }
118
+ export function scopesForGoogleCapabilities(capabilities, options = {}) {
119
+ const selected = new Set();
120
+ if (options.includeIdentityScopes !== false) {
121
+ for (const scope of GOOGLE_IDENTITY_SCOPES) {
122
+ selected.add(scope);
123
+ }
124
+ }
125
+ for (const capability of normalizeGoogleCapabilities(capabilities)) {
126
+ for (const scope of GOOGLE_CAPABILITY_METADATA[capability].scopes) {
127
+ selected.add(scope);
128
+ }
129
+ }
130
+ return Array.from(selected);
131
+ }
132
+ export function capabilityGroups(capabilities) {
133
+ const groups = new Set();
134
+ for (const capability of normalizeGoogleCapabilities(capabilities)) {
135
+ groups.add(capability.split(".")[0]);
136
+ }
137
+ return Array.from(groups);
138
+ }
139
+ export const GOOGLE_DEFAULT_CONNECT_SCOPES = scopesForGoogleCapabilities([], {
140
+ includeIdentityScopes: true,
141
+ });
142
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"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"}