@particle-academy/google-meet-ui 0.0.0 → 0.3.0
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/CHANGELOG.md +81 -0
- package/LICENSE +21 -0
- package/README.md +163 -2
- package/art/fancified.svg +26 -0
- package/dist/index.cjs +454 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +233 -0
- package/dist/index.d.ts +233 -0
- package/dist/index.js +417 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -6
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var connectors = require('@particle-academy/fancy-flow/connectors');
|
|
4
|
+
|
|
5
|
+
// src/service.ts
|
|
6
|
+
var CONNECTOR_API_VERSION = 1;
|
|
7
|
+
var GOOGLE_MEET_SERVICE = {
|
|
8
|
+
service: "google_meet",
|
|
9
|
+
serviceTitle: "Google Meet",
|
|
10
|
+
domain: "messaging",
|
|
11
|
+
sandbox: "unverified"
|
|
12
|
+
};
|
|
13
|
+
var GOOGLE_MEET_CREDENTIALS = [
|
|
14
|
+
{
|
|
15
|
+
"key": "clientId",
|
|
16
|
+
"label": "OAuth client ID",
|
|
17
|
+
"scope": "provider",
|
|
18
|
+
"secret": false,
|
|
19
|
+
"help": "From the Google Cloud project you registered. One value for the whole installation -- the same app serves every connected Google account."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"key": "clientSecret",
|
|
23
|
+
"label": "OAuth client secret",
|
|
24
|
+
"scope": "provider",
|
|
25
|
+
"secret": true,
|
|
26
|
+
"help": "From the same Google Cloud project. Used to exchange the code and to refresh; never sent with an API request."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"key": "accessToken",
|
|
30
|
+
"label": "Access token",
|
|
31
|
+
"scope": "account",
|
|
32
|
+
"secret": true,
|
|
33
|
+
"help": "Obtained by the host's OAuth exchange, PER CONNECTED GOOGLE ACCOUNT. Expires after one hour -- a host that does not refresh will work for a while and then fail with no warning."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"key": "refreshToken",
|
|
37
|
+
"label": "Refresh token",
|
|
38
|
+
"scope": "account",
|
|
39
|
+
"secret": true,
|
|
40
|
+
"optional": true,
|
|
41
|
+
"help": "Also per account. Reusable -- Google does not rotate it on refresh."
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
var GOOGLE_MEET_OAUTH = {
|
|
45
|
+
"flow": "authorization_code",
|
|
46
|
+
"authorizeUrl": "https://accounts.google.com/o/oauth2/v2/auth",
|
|
47
|
+
"tokenUrl": "https://oauth2.googleapis.com/token",
|
|
48
|
+
"scopes": [
|
|
49
|
+
"https://www.googleapis.com/auth/meetings.space.created",
|
|
50
|
+
"https://www.googleapis.com/auth/meetings.space.readonly"
|
|
51
|
+
],
|
|
52
|
+
"accessTokenCredential": "accessToken",
|
|
53
|
+
"refreshTokenCredential": "refreshToken",
|
|
54
|
+
"refreshTokenRotates": false,
|
|
55
|
+
"accessTokenTtlSeconds": 3600,
|
|
56
|
+
"grant": "google",
|
|
57
|
+
"authorizeParams": {
|
|
58
|
+
"access_type": "offline",
|
|
59
|
+
"include_granted_scopes": "true"
|
|
60
|
+
},
|
|
61
|
+
"revoke": {
|
|
62
|
+
"url": "https://oauth2.googleapis.com/revoke",
|
|
63
|
+
"param": "token",
|
|
64
|
+
"scope": "grant"
|
|
65
|
+
},
|
|
66
|
+
"identity": {
|
|
67
|
+
"scope": "openid",
|
|
68
|
+
"claim": "sub",
|
|
69
|
+
"issuers": [
|
|
70
|
+
"https://accounts.google.com",
|
|
71
|
+
"accounts.google.com"
|
|
72
|
+
],
|
|
73
|
+
"jwksUrl": "https://www.googleapis.com/oauth2/v3/certs",
|
|
74
|
+
"audienceCredential": "clientId"
|
|
75
|
+
},
|
|
76
|
+
"restrictedScopes": []
|
|
77
|
+
};
|
|
78
|
+
function googleMeetMeta(role, operation, docs) {
|
|
79
|
+
return { ...GOOGLE_MEET_SERVICE, role, operation, docs };
|
|
80
|
+
}
|
|
81
|
+
var GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND = "@particle-academy/google_meet_conference_record_list";
|
|
82
|
+
var GOOGLE_MEET_CONFERENCE_RECORD_LIST_OPERATION = "conference_record_list";
|
|
83
|
+
var GOOGLE_MEET_CONFERENCE_RECORD_LIST_META = googleMeetMeta("action", "conference records", "https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list");
|
|
84
|
+
var GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT = [
|
|
85
|
+
{
|
|
86
|
+
"path": "data.conferenceRecords",
|
|
87
|
+
"type": "array",
|
|
88
|
+
"description": "This page's records, each with name (conferenceRecords/{id}), startTime, endTime, expireTime and space (the spaces/{id} it belongs to)."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"path": "data.nextPageToken",
|
|
92
|
+
"type": "string",
|
|
93
|
+
"description": "Present when there is another page."
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
var googleMeetConferenceRecordListKind = connectors.defineConnectorKind(GOOGLE_MEET_CONFERENCE_RECORD_LIST_META, {
|
|
97
|
+
name: GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND,
|
|
98
|
+
aliases: ["google_meet_conference_record_list"],
|
|
99
|
+
label: "List conference records",
|
|
100
|
+
description: "List past conferences, optionally filtered to one space.",
|
|
101
|
+
icon: "\u{1F3A5}",
|
|
102
|
+
inputs: [{ id: "in" }],
|
|
103
|
+
outputs: [{ id: "out" }],
|
|
104
|
+
sideEffects: "none",
|
|
105
|
+
outputShape: GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT,
|
|
106
|
+
configSchema: [
|
|
107
|
+
{
|
|
108
|
+
"type": "text",
|
|
109
|
+
"key": "filter",
|
|
110
|
+
"label": "Filter",
|
|
111
|
+
"description": `Google's filter grammar, e.g. space.name = "spaces/abc123" to see one space's history, or space.meeting_code = "abc-defg-hij". Leave blank for every conference the account can see.`
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"type": "number",
|
|
115
|
+
"key": "pageSize",
|
|
116
|
+
"label": "Page size",
|
|
117
|
+
"min": 1,
|
|
118
|
+
"max": 100,
|
|
119
|
+
"description": "Records per page. Leave blank for Google's default."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"type": "text",
|
|
123
|
+
"key": "pageToken",
|
|
124
|
+
"label": "Page token",
|
|
125
|
+
"description": "From a previous call's data.nextPageToken."
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
defaultConfig: {
|
|
129
|
+
"mode": "auto"
|
|
130
|
+
},
|
|
131
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_CONFERENCE_RECORD_LIST_META, config, "conference records")
|
|
132
|
+
});
|
|
133
|
+
var GOOGLE_MEET_PARTICIPANT_LIST_KIND = "@particle-academy/google_meet_participant_list";
|
|
134
|
+
var GOOGLE_MEET_PARTICIPANT_LIST_OPERATION = "participant_list";
|
|
135
|
+
var GOOGLE_MEET_PARTICIPANT_LIST_META = googleMeetMeta("action", "a conference's participants", "https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants/list");
|
|
136
|
+
var GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT = [
|
|
137
|
+
{
|
|
138
|
+
"path": "data.participants",
|
|
139
|
+
"type": "array",
|
|
140
|
+
"description": "This page's participants. Each has name (participants/{id}), earliestStartTime, latestEndTime -- the SPAN across every time this person joined and left, not a single join/leave pair, since one person can rejoin -- and exactly one of signedinUser.displayName, anonymousUser.displayName, or phoneUser.displayName (a partially redacted phone number)."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"path": "data.nextPageToken",
|
|
144
|
+
"type": "string",
|
|
145
|
+
"description": "Present when there is another page."
|
|
146
|
+
}
|
|
147
|
+
];
|
|
148
|
+
var googleMeetParticipantListKind = connectors.defineConnectorKind(GOOGLE_MEET_PARTICIPANT_LIST_META, {
|
|
149
|
+
name: GOOGLE_MEET_PARTICIPANT_LIST_KIND,
|
|
150
|
+
aliases: ["google_meet_participant_list"],
|
|
151
|
+
label: "List participants",
|
|
152
|
+
description: "List who attended a conference.",
|
|
153
|
+
icon: "\u{1F3A5}",
|
|
154
|
+
inputs: [{ id: "in" }],
|
|
155
|
+
outputs: [{ id: "out" }],
|
|
156
|
+
sideEffects: "none",
|
|
157
|
+
outputShape: GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT,
|
|
158
|
+
configSchema: [
|
|
159
|
+
{
|
|
160
|
+
"type": "text",
|
|
161
|
+
"key": "conferenceRecordId",
|
|
162
|
+
"label": "Conference record ID",
|
|
163
|
+
"required": true,
|
|
164
|
+
"description": "The id from conference_record_list's data.conferenceRecords[].name (conferenceRecords/{id} -- give the id after the slash) or from space_get's data.activeConference.conferenceRecord."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"type": "text",
|
|
168
|
+
"key": "pageToken",
|
|
169
|
+
"label": "Page token",
|
|
170
|
+
"description": "From a previous call's data.nextPageToken."
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
defaultConfig: {
|
|
174
|
+
"mode": "auto"
|
|
175
|
+
},
|
|
176
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_PARTICIPANT_LIST_META, config, "a conference's participants")
|
|
177
|
+
});
|
|
178
|
+
var GOOGLE_MEET_SPACE_CREATE_KIND = "@particle-academy/google_meet_space_create";
|
|
179
|
+
var GOOGLE_MEET_SPACE_CREATE_OPERATION = "space_create";
|
|
180
|
+
var GOOGLE_MEET_SPACE_CREATE_META = googleMeetMeta("action", "a Meet space", "https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/create");
|
|
181
|
+
var GOOGLE_MEET_SPACE_CREATE_OUTPUT = [
|
|
182
|
+
{
|
|
183
|
+
"path": "data.name",
|
|
184
|
+
"type": "string",
|
|
185
|
+
"description": "The space's resource name, spaces/{id}."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"path": "data.meetingUri",
|
|
189
|
+
"type": "string",
|
|
190
|
+
"description": "The join link."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"path": "data.meetingCode",
|
|
194
|
+
"type": "string",
|
|
195
|
+
"description": "The short, human-typeable code shown in the Meet UI (part of meetingUri)."
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"path": "data.config.accessType",
|
|
199
|
+
"type": "string",
|
|
200
|
+
"description": "Echoes what was requested, or Google's default when omitted."
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"path": "data.config.entryPointAccess",
|
|
204
|
+
"type": "string",
|
|
205
|
+
"description": "Echoes what was requested, or Google's default (ALL) when omitted."
|
|
206
|
+
}
|
|
207
|
+
];
|
|
208
|
+
var googleMeetSpaceCreateKind = connectors.defineConnectorKind(GOOGLE_MEET_SPACE_CREATE_META, {
|
|
209
|
+
name: GOOGLE_MEET_SPACE_CREATE_KIND,
|
|
210
|
+
aliases: ["google_meet_space_create"],
|
|
211
|
+
label: "Create meeting space",
|
|
212
|
+
description: "Create a new Google Meet space and get its join link.",
|
|
213
|
+
icon: "\u{1F3A5}",
|
|
214
|
+
inputs: [{ id: "in" }],
|
|
215
|
+
outputs: [{ id: "out" }],
|
|
216
|
+
sideEffects: "unsafe-to-replay",
|
|
217
|
+
outputShape: GOOGLE_MEET_SPACE_CREATE_OUTPUT,
|
|
218
|
+
configSchema: [
|
|
219
|
+
{
|
|
220
|
+
"type": "select",
|
|
221
|
+
"key": "accessType",
|
|
222
|
+
"label": "Who can join",
|
|
223
|
+
"description": "OPEN: anyone with the link, no knock. TRUSTED: anyone in your organization, no knock; others knock. RESTRICTED: only people and groups explicitly invited. Leave blank for Google's account default.",
|
|
224
|
+
"options": [
|
|
225
|
+
{
|
|
226
|
+
"value": "OPEN",
|
|
227
|
+
"label": "Open \u2014 anyone with the link"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"value": "TRUSTED",
|
|
231
|
+
"label": "Trusted \u2014 your organization joins directly"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"value": "RESTRICTED",
|
|
235
|
+
"label": "Restricted \u2014 invited people and groups only"
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"type": "select",
|
|
241
|
+
"key": "entryPointAccess",
|
|
242
|
+
"label": "Entry points",
|
|
243
|
+
"description": "ALL: any Meet client (web, mobile, phone dial-in, the calling API). CREATOR_APP_ONLY: only the app that created the space, and only through the Meet REST API and SIP \u2014 no phone dial-in and no other Meet client. Leave blank for Google's default (ALL).",
|
|
244
|
+
"options": [
|
|
245
|
+
{
|
|
246
|
+
"value": "ALL",
|
|
247
|
+
"label": "All entry points"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"value": "CREATOR_APP_ONLY",
|
|
251
|
+
"label": "This app only"
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
defaultConfig: {
|
|
257
|
+
"mode": "auto"
|
|
258
|
+
},
|
|
259
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_SPACE_CREATE_META, config, "a Meet space")
|
|
260
|
+
});
|
|
261
|
+
var GOOGLE_MEET_SPACE_GET_KIND = "@particle-academy/google_meet_space_get";
|
|
262
|
+
var GOOGLE_MEET_SPACE_GET_OPERATION = "space_get";
|
|
263
|
+
var GOOGLE_MEET_SPACE_GET_META = googleMeetMeta("action", "a Meet space", "https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/get");
|
|
264
|
+
var GOOGLE_MEET_SPACE_GET_OUTPUT = [
|
|
265
|
+
{
|
|
266
|
+
"path": "data.name",
|
|
267
|
+
"type": "string",
|
|
268
|
+
"description": "The space's resource name, spaces/{id}."
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"path": "data.meetingUri",
|
|
272
|
+
"type": "string",
|
|
273
|
+
"description": "The join link."
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"path": "data.meetingCode",
|
|
277
|
+
"type": "string",
|
|
278
|
+
"description": "The short, human-typeable code."
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"path": "data.config.accessType",
|
|
282
|
+
"type": "string",
|
|
283
|
+
"description": "OPEN, TRUSTED or RESTRICTED."
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"path": "data.config.entryPointAccess",
|
|
287
|
+
"type": "string",
|
|
288
|
+
"description": "ALL or CREATOR_APP_ONLY."
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"path": "data.activeConference.conferenceRecord",
|
|
292
|
+
"type": "string",
|
|
293
|
+
"description": "Present only while a conference is LIVE right now \u2014 the conferenceRecords/{id} resource name to read once it ends. Absent between meetings."
|
|
294
|
+
}
|
|
295
|
+
];
|
|
296
|
+
var googleMeetSpaceGetKind = connectors.defineConnectorKind(GOOGLE_MEET_SPACE_GET_META, {
|
|
297
|
+
name: GOOGLE_MEET_SPACE_GET_KIND,
|
|
298
|
+
aliases: ["google_meet_space_get"],
|
|
299
|
+
label: "Get meeting space",
|
|
300
|
+
description: "Read a Meet space's current state, including whether a conference is active right now.",
|
|
301
|
+
icon: "\u{1F3A5}",
|
|
302
|
+
inputs: [{ id: "in" }],
|
|
303
|
+
outputs: [{ id: "out" }],
|
|
304
|
+
sideEffects: "none",
|
|
305
|
+
outputShape: GOOGLE_MEET_SPACE_GET_OUTPUT,
|
|
306
|
+
configSchema: [
|
|
307
|
+
{
|
|
308
|
+
"type": "text",
|
|
309
|
+
"key": "spaceId",
|
|
310
|
+
"label": "Space ID",
|
|
311
|
+
"required": true,
|
|
312
|
+
"description": "The id from space_create's data.name (spaces/{id} -- give the id after the slash), or the meeting code shown in Meet's own UI. NOT independently spot-checked that the meeting-code form resolves through this exact endpoint; verify with a live call before relying on it."
|
|
313
|
+
}
|
|
314
|
+
],
|
|
315
|
+
defaultConfig: {
|
|
316
|
+
"mode": "auto"
|
|
317
|
+
},
|
|
318
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_SPACE_GET_META, config, "a Meet space")
|
|
319
|
+
});
|
|
320
|
+
var GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND = "@particle-academy/google_meet_transcript_entry_list";
|
|
321
|
+
var GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OPERATION = "transcript_entry_list";
|
|
322
|
+
var GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META = googleMeetMeta("action", "transcript entries", "https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/list");
|
|
323
|
+
var GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT = [
|
|
324
|
+
{
|
|
325
|
+
"path": "data.transcriptEntries",
|
|
326
|
+
"type": "array",
|
|
327
|
+
"description": "This page's entries, in order. Each has name, participant (participants/{id} -- join against participant_list to get a display name), text (the spoken words), languageCode, startTime and endTime."
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"path": "data.nextPageToken",
|
|
331
|
+
"type": "string",
|
|
332
|
+
"description": "Present when there is another page."
|
|
333
|
+
}
|
|
334
|
+
];
|
|
335
|
+
var googleMeetTranscriptEntryListKind = connectors.defineConnectorKind(GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META, {
|
|
336
|
+
name: GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND,
|
|
337
|
+
aliases: ["google_meet_transcript_entry_list"],
|
|
338
|
+
label: "List transcript entries",
|
|
339
|
+
description: "Read a finished conference's transcript, one utterance per entry.",
|
|
340
|
+
icon: "\u{1F4DD}",
|
|
341
|
+
inputs: [{ id: "in" }],
|
|
342
|
+
outputs: [{ id: "out" }],
|
|
343
|
+
sideEffects: "none",
|
|
344
|
+
outputShape: GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT,
|
|
345
|
+
configSchema: [
|
|
346
|
+
{
|
|
347
|
+
"type": "text",
|
|
348
|
+
"key": "conferenceRecordId",
|
|
349
|
+
"label": "Conference record ID",
|
|
350
|
+
"required": true,
|
|
351
|
+
"description": "The id from conference_record_list's data.conferenceRecords[].name (give the id after conferenceRecords/)."
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"type": "text",
|
|
355
|
+
"key": "transcriptId",
|
|
356
|
+
"label": "Transcript ID",
|
|
357
|
+
"required": true,
|
|
358
|
+
"description": "The id from transcript_list's data.transcripts[].name (give the id after transcripts/)."
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"type": "text",
|
|
362
|
+
"key": "pageToken",
|
|
363
|
+
"label": "Page token",
|
|
364
|
+
"description": "From a previous call's data.nextPageToken."
|
|
365
|
+
}
|
|
366
|
+
],
|
|
367
|
+
defaultConfig: {
|
|
368
|
+
"mode": "auto"
|
|
369
|
+
},
|
|
370
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META, config, "transcript entries")
|
|
371
|
+
});
|
|
372
|
+
var GOOGLE_MEET_TRANSCRIPT_LIST_KIND = "@particle-academy/google_meet_transcript_list";
|
|
373
|
+
var GOOGLE_MEET_TRANSCRIPT_LIST_OPERATION = "transcript_list";
|
|
374
|
+
var GOOGLE_MEET_TRANSCRIPT_LIST_META = googleMeetMeta("action", "a conference's transcripts", "https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list");
|
|
375
|
+
var GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT = [
|
|
376
|
+
{
|
|
377
|
+
"path": "data.transcripts",
|
|
378
|
+
"type": "array",
|
|
379
|
+
"description": "Usually one, unless the meeting was recorded in segments. Each has name (\u2026/transcripts/{id} -- what transcript_entry_list needs), state, startTime, endTime, and docsDestination.exportUri (a Google Docs link, when export finished)."
|
|
380
|
+
}
|
|
381
|
+
];
|
|
382
|
+
var googleMeetTranscriptListKind = connectors.defineConnectorKind(GOOGLE_MEET_TRANSCRIPT_LIST_META, {
|
|
383
|
+
name: GOOGLE_MEET_TRANSCRIPT_LIST_KIND,
|
|
384
|
+
aliases: ["google_meet_transcript_list"],
|
|
385
|
+
label: "List transcripts",
|
|
386
|
+
description: "List a finished conference's transcripts, when transcription was on.",
|
|
387
|
+
icon: "\u{1F4DD}",
|
|
388
|
+
inputs: [{ id: "in" }],
|
|
389
|
+
outputs: [{ id: "out" }],
|
|
390
|
+
sideEffects: "none",
|
|
391
|
+
outputShape: GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT,
|
|
392
|
+
configSchema: [
|
|
393
|
+
{
|
|
394
|
+
"type": "text",
|
|
395
|
+
"key": "conferenceRecordId",
|
|
396
|
+
"label": "Conference record ID",
|
|
397
|
+
"required": true,
|
|
398
|
+
"description": "The id from conference_record_list's data.conferenceRecords[].name (conferenceRecords/{id} -- give the id after the slash)."
|
|
399
|
+
}
|
|
400
|
+
],
|
|
401
|
+
defaultConfig: {
|
|
402
|
+
"mode": "auto"
|
|
403
|
+
},
|
|
404
|
+
renderBody: ({ config }) => connectors.summarize(GOOGLE_MEET_TRANSCRIPT_LIST_META, config, "a conference's transcripts")
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
// src/index.ts
|
|
408
|
+
var GOOGLE_MEET_KINDS = [
|
|
409
|
+
googleMeetConferenceRecordListKind,
|
|
410
|
+
googleMeetParticipantListKind,
|
|
411
|
+
googleMeetSpaceCreateKind,
|
|
412
|
+
googleMeetSpaceGetKind,
|
|
413
|
+
googleMeetTranscriptEntryListKind,
|
|
414
|
+
googleMeetTranscriptListKind
|
|
415
|
+
];
|
|
416
|
+
|
|
417
|
+
exports.CONNECTOR_API_VERSION = CONNECTOR_API_VERSION;
|
|
418
|
+
exports.GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND = GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND;
|
|
419
|
+
exports.GOOGLE_MEET_CONFERENCE_RECORD_LIST_META = GOOGLE_MEET_CONFERENCE_RECORD_LIST_META;
|
|
420
|
+
exports.GOOGLE_MEET_CONFERENCE_RECORD_LIST_OPERATION = GOOGLE_MEET_CONFERENCE_RECORD_LIST_OPERATION;
|
|
421
|
+
exports.GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT = GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT;
|
|
422
|
+
exports.GOOGLE_MEET_CREDENTIALS = GOOGLE_MEET_CREDENTIALS;
|
|
423
|
+
exports.GOOGLE_MEET_KINDS = GOOGLE_MEET_KINDS;
|
|
424
|
+
exports.GOOGLE_MEET_OAUTH = GOOGLE_MEET_OAUTH;
|
|
425
|
+
exports.GOOGLE_MEET_PARTICIPANT_LIST_KIND = GOOGLE_MEET_PARTICIPANT_LIST_KIND;
|
|
426
|
+
exports.GOOGLE_MEET_PARTICIPANT_LIST_META = GOOGLE_MEET_PARTICIPANT_LIST_META;
|
|
427
|
+
exports.GOOGLE_MEET_PARTICIPANT_LIST_OPERATION = GOOGLE_MEET_PARTICIPANT_LIST_OPERATION;
|
|
428
|
+
exports.GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT = GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT;
|
|
429
|
+
exports.GOOGLE_MEET_SERVICE = GOOGLE_MEET_SERVICE;
|
|
430
|
+
exports.GOOGLE_MEET_SPACE_CREATE_KIND = GOOGLE_MEET_SPACE_CREATE_KIND;
|
|
431
|
+
exports.GOOGLE_MEET_SPACE_CREATE_META = GOOGLE_MEET_SPACE_CREATE_META;
|
|
432
|
+
exports.GOOGLE_MEET_SPACE_CREATE_OPERATION = GOOGLE_MEET_SPACE_CREATE_OPERATION;
|
|
433
|
+
exports.GOOGLE_MEET_SPACE_CREATE_OUTPUT = GOOGLE_MEET_SPACE_CREATE_OUTPUT;
|
|
434
|
+
exports.GOOGLE_MEET_SPACE_GET_KIND = GOOGLE_MEET_SPACE_GET_KIND;
|
|
435
|
+
exports.GOOGLE_MEET_SPACE_GET_META = GOOGLE_MEET_SPACE_GET_META;
|
|
436
|
+
exports.GOOGLE_MEET_SPACE_GET_OPERATION = GOOGLE_MEET_SPACE_GET_OPERATION;
|
|
437
|
+
exports.GOOGLE_MEET_SPACE_GET_OUTPUT = GOOGLE_MEET_SPACE_GET_OUTPUT;
|
|
438
|
+
exports.GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND = GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND;
|
|
439
|
+
exports.GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META = GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META;
|
|
440
|
+
exports.GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OPERATION = GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OPERATION;
|
|
441
|
+
exports.GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT = GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT;
|
|
442
|
+
exports.GOOGLE_MEET_TRANSCRIPT_LIST_KIND = GOOGLE_MEET_TRANSCRIPT_LIST_KIND;
|
|
443
|
+
exports.GOOGLE_MEET_TRANSCRIPT_LIST_META = GOOGLE_MEET_TRANSCRIPT_LIST_META;
|
|
444
|
+
exports.GOOGLE_MEET_TRANSCRIPT_LIST_OPERATION = GOOGLE_MEET_TRANSCRIPT_LIST_OPERATION;
|
|
445
|
+
exports.GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT = GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT;
|
|
446
|
+
exports.googleMeetConferenceRecordListKind = googleMeetConferenceRecordListKind;
|
|
447
|
+
exports.googleMeetMeta = googleMeetMeta;
|
|
448
|
+
exports.googleMeetParticipantListKind = googleMeetParticipantListKind;
|
|
449
|
+
exports.googleMeetSpaceCreateKind = googleMeetSpaceCreateKind;
|
|
450
|
+
exports.googleMeetSpaceGetKind = googleMeetSpaceGetKind;
|
|
451
|
+
exports.googleMeetTranscriptEntryListKind = googleMeetTranscriptEntryListKind;
|
|
452
|
+
exports.googleMeetTranscriptListKind = googleMeetTranscriptListKind;
|
|
453
|
+
//# sourceMappingURL=index.cjs.map
|
|
454
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/service.ts","../src/kinds/conference-record-list.ts","../src/kinds/participant-list.ts","../src/kinds/space-create.ts","../src/kinds/space-get.ts","../src/kinds/transcript-entry-list.ts","../src/kinds/transcript-list.ts","../src/index.ts"],"names":["defineConnectorKind","summarize"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * Google Meet's identity on the authoring surface, shared by every Google Meet\n * node.\n *\n * This file must import nothing from the js package: a PHP or Python project\n * installs the ui package and never that one, and the import would be a\n * dangling module the moment it did.\n *\n * ## The sandbox trap\n *\n * Google Meet has no test estate distinct from a real account, as far as this\n * review found (2026-09-16) -- but it is UNVERIFIED, not confirmed.\n * space_create makes a real, joinable meeting space. Use fake mode while\n * building.\n */\n\nimport type { ConnectorDomain, ConnectorMeta } from \"@particle-academy/fancy-flow/connectors\";\n\n/**\n * The connector API version this package was GENERATED against.\n *\n * A literal, never imported — an imported constant lets an upgrade rewrite the\n * very claim it exists to detect.\n */\nexport const CONNECTOR_API_VERSION = 1;\n\n/** The parts of a connector's identity that belong to the SERVICE, not the node. */\nexport const GOOGLE_MEET_SERVICE = {\n service: \"google_meet\",\n serviceTitle: \"Google Meet\",\n domain: \"messaging\",\n sandbox: \"unverified\",\n} as const satisfies Pick<ConnectorMeta, \"service\" | \"serviceTitle\" | \"domain\" | \"sandbox\">;\n\n/**\n * Every connector domain weaver knows, pinned against fancy-flow's union.\n *\n * A closed set copied into three codebases stays correct only while something\n * MAKES it: this line fails to compile the moment weaver carries a value\n * fancy-flow does not, including the values no provider uses yet.\n */\nconst WEAVER_DOMAINS: readonly ConnectorDomain[] = [\n \"payments\",\n \"commerce\",\n \"messaging\",\n \"email\",\n \"crm\",\n \"support\",\n \"storage\",\n \"calendar\",\n \"productivity\",\n \"database\",\n \"devtools\",\n \"analytics\",\n \"marketing\",\n \"ai\",\n \"forms\",\n \"hr\",\n \"geo\"\n];\nvoid WEAVER_DOMAINS;\n\n/** The credentials a Google Meet connection holds. */\nexport const GOOGLE_MEET_CREDENTIALS = [\n {\n \"key\": \"clientId\",\n \"label\": \"OAuth client ID\",\n \"scope\": \"provider\",\n \"secret\": false,\n \"help\": \"From the Google Cloud project you registered. One value for the whole installation -- the same app serves every connected Google account.\"\n },\n {\n \"key\": \"clientSecret\",\n \"label\": \"OAuth client secret\",\n \"scope\": \"provider\",\n \"secret\": true,\n \"help\": \"From the same Google Cloud project. Used to exchange the code and to refresh; never sent with an API request.\"\n },\n {\n \"key\": \"accessToken\",\n \"label\": \"Access token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"help\": \"Obtained by the host's OAuth exchange, PER CONNECTED GOOGLE ACCOUNT. Expires after one hour -- a host that does not refresh will work for a while and then fail with no warning.\"\n },\n {\n \"key\": \"refreshToken\",\n \"label\": \"Refresh token\",\n \"scope\": \"account\",\n \"secret\": true,\n \"optional\": true,\n \"help\": \"Also per account. Reusable -- Google does not rotate it on refresh.\"\n }\n] as const;\n\n/**\n * The OAuth2 exchange Google Meet requires — DECLARED here, performed by the\n * host.\n *\n * A consent screen needs a browser, a redirect URI and somewhere to persist\n * the result, and all three belong to the host; a package that ran the dance\n * itself would have to own a web server. So this says precisely enough for a\n * host to do it.\n *\n * The access token lasts 3600 seconds. A host that never refreshes will work\n * all afternoon and be broken by morning, which is why the lifetime is stated\n * rather than left to be discovered.\n *\n * Its refresh tokens do NOT rotate: the same one is reusable, so a refresh may\n * safely be retried and may run concurrently. That is stated rather than\n * assumed because the opposite — a provider that spends the token and revokes\n * the grant on a replay — looks identical until it happens.\n *\n * Its consent grant is SHARED with every connector declaring grant \"google\":\n * one OAuth client, one consent and one refresh token per person, scopes added\n * as features are first used (authorizeParams). Revoking removes the WHOLE\n * grant, so only a full disconnect revokes; a per-feature disconnect stops\n * using the scope locally. Identify the account by the id_token's sub, never\n * by email.\n */\nexport const GOOGLE_MEET_OAUTH = {\n \"flow\": \"authorization_code\",\n \"authorizeUrl\": \"https://accounts.google.com/o/oauth2/v2/auth\",\n \"tokenUrl\": \"https://oauth2.googleapis.com/token\",\n \"scopes\": [\n \"https://www.googleapis.com/auth/meetings.space.created\",\n \"https://www.googleapis.com/auth/meetings.space.readonly\"\n ],\n \"accessTokenCredential\": \"accessToken\",\n \"refreshTokenCredential\": \"refreshToken\",\n \"refreshTokenRotates\": false,\n \"accessTokenTtlSeconds\": 3600,\n \"grant\": \"google\",\n \"authorizeParams\": {\n \"access_type\": \"offline\",\n \"include_granted_scopes\": \"true\"\n },\n \"revoke\": {\n \"url\": \"https://oauth2.googleapis.com/revoke\",\n \"param\": \"token\",\n \"scope\": \"grant\"\n },\n \"identity\": {\n \"scope\": \"openid\",\n \"claim\": \"sub\",\n \"issuers\": [\n \"https://accounts.google.com\",\n \"accounts.google.com\"\n ],\n \"jwksUrl\": \"https://www.googleapis.com/oauth2/v3/certs\",\n \"audienceCredential\": \"clientId\"\n },\n \"restrictedScopes\": []\n} as const;\n\n/** Build a Google Meet node's connector metadata from the operation it performs. */\nexport function googleMeetMeta(\n role: ConnectorMeta[\"role\"],\n operation: string,\n docs: string,\n): ConnectorMeta {\n return { ...GOOGLE_MEET_SERVICE, role, operation, docs };\n}\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/conference-record-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/conference-record-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * List conference records — List past conferences, optionally filtered to one\n * space.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND = \"@particle-academy/google_meet_conference_record_list\";\nexport const GOOGLE_MEET_CONFERENCE_RECORD_LIST_OPERATION = \"conference_record_list\";\n\nexport const GOOGLE_MEET_CONFERENCE_RECORD_LIST_META = googleMeetMeta(\"action\", \"conference records\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.conferenceRecords\",\n \"type\": \"array\",\n \"description\": \"This page's records, each with name (conferenceRecords/{id}), startTime, endTime, expireTime and space (the spaces/{id} it belongs to).\"\n },\n {\n \"path\": \"data.nextPageToken\",\n \"type\": \"string\",\n \"description\": \"Present when there is another page.\"\n }\n];\n\nexport const googleMeetConferenceRecordListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_CONFERENCE_RECORD_LIST_META, {\n name: GOOGLE_MEET_CONFERENCE_RECORD_LIST_KIND,\n aliases: [\"google_meet_conference_record_list\"],\n label: \"List conference records\",\n description: \"List past conferences, optionally filtered to one space.\",\n icon: \"🎥\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_MEET_CONFERENCE_RECORD_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"filter\",\n \"label\": \"Filter\",\n \"description\": \"Google's filter grammar, e.g. space.name = \\\"spaces/abc123\\\" to see one space's history, or space.meeting_code = \\\"abc-defg-hij\\\". Leave blank for every conference the account can see.\"\n },\n {\n \"type\": \"number\",\n \"key\": \"pageSize\",\n \"label\": \"Page size\",\n \"min\": 1,\n \"max\": 100,\n \"description\": \"Records per page. Leave blank for Google's default.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"pageToken\",\n \"label\": \"Page token\",\n \"description\": \"From a previous call's data.nextPageToken.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_CONFERENCE_RECORD_LIST_META, config as Record<string, unknown>, \"conference records\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/participant-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/participant-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * List participants — List who attended a conference.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_PARTICIPANT_LIST_KIND = \"@particle-academy/google_meet_participant_list\";\nexport const GOOGLE_MEET_PARTICIPANT_LIST_OPERATION = \"participant_list\";\n\nexport const GOOGLE_MEET_PARTICIPANT_LIST_META = googleMeetMeta(\"action\", \"a conference's participants\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.participants\",\n \"type\": \"array\",\n \"description\": \"This page's participants. Each has name (participants/{id}), earliestStartTime, latestEndTime -- the SPAN across every time this person joined and left, not a single join/leave pair, since one person can rejoin -- and exactly one of signedinUser.displayName, anonymousUser.displayName, or phoneUser.displayName (a partially redacted phone number).\"\n },\n {\n \"path\": \"data.nextPageToken\",\n \"type\": \"string\",\n \"description\": \"Present when there is another page.\"\n }\n];\n\nexport const googleMeetParticipantListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_PARTICIPANT_LIST_META, {\n name: GOOGLE_MEET_PARTICIPANT_LIST_KIND,\n aliases: [\"google_meet_participant_list\"],\n label: \"List participants\",\n description: \"List who attended a conference.\",\n icon: \"🎥\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_MEET_PARTICIPANT_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"conferenceRecordId\",\n \"label\": \"Conference record ID\",\n \"required\": true,\n \"description\": \"The id from conference_record_list's data.conferenceRecords[].name (conferenceRecords/{id} -- give the id after the slash) or from space_get's data.activeConference.conferenceRecord.\"\n },\n {\n \"type\": \"text\",\n \"key\": \"pageToken\",\n \"label\": \"Page token\",\n \"description\": \"From a previous call's data.nextPageToken.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_PARTICIPANT_LIST_META, config as Record<string, unknown>, \"a conference's participants\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/space-create.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/space-create.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * Create meeting space — Create a new Google Meet space and get its join link.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/create\n *\n * `unsafe-to-replay`.\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_SPACE_CREATE_KIND = \"@particle-academy/google_meet_space_create\";\nexport const GOOGLE_MEET_SPACE_CREATE_OPERATION = \"space_create\";\n\nexport const GOOGLE_MEET_SPACE_CREATE_META = googleMeetMeta(\"action\", \"a Meet space\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/create\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_SPACE_CREATE_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.name\",\n \"type\": \"string\",\n \"description\": \"The space's resource name, spaces/{id}.\"\n },\n {\n \"path\": \"data.meetingUri\",\n \"type\": \"string\",\n \"description\": \"The join link.\"\n },\n {\n \"path\": \"data.meetingCode\",\n \"type\": \"string\",\n \"description\": \"The short, human-typeable code shown in the Meet UI (part of meetingUri).\"\n },\n {\n \"path\": \"data.config.accessType\",\n \"type\": \"string\",\n \"description\": \"Echoes what was requested, or Google's default when omitted.\"\n },\n {\n \"path\": \"data.config.entryPointAccess\",\n \"type\": \"string\",\n \"description\": \"Echoes what was requested, or Google's default (ALL) when omitted.\"\n }\n];\n\nexport const googleMeetSpaceCreateKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_SPACE_CREATE_META, {\n name: GOOGLE_MEET_SPACE_CREATE_KIND,\n aliases: [\"google_meet_space_create\"],\n label: \"Create meeting space\",\n description: \"Create a new Google Meet space and get its join link.\",\n icon: \"🎥\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"unsafe-to-replay\",\n outputShape: GOOGLE_MEET_SPACE_CREATE_OUTPUT,\n configSchema: [\n {\n \"type\": \"select\",\n \"key\": \"accessType\",\n \"label\": \"Who can join\",\n \"description\": \"OPEN: anyone with the link, no knock. TRUSTED: anyone in your organization, no knock; others knock. RESTRICTED: only people and groups explicitly invited. Leave blank for Google's account default.\",\n \"options\": [\n {\n \"value\": \"OPEN\",\n \"label\": \"Open — anyone with the link\"\n },\n {\n \"value\": \"TRUSTED\",\n \"label\": \"Trusted — your organization joins directly\"\n },\n {\n \"value\": \"RESTRICTED\",\n \"label\": \"Restricted — invited people and groups only\"\n }\n ]\n },\n {\n \"type\": \"select\",\n \"key\": \"entryPointAccess\",\n \"label\": \"Entry points\",\n \"description\": \"ALL: any Meet client (web, mobile, phone dial-in, the calling API). CREATOR_APP_ONLY: only the app that created the space, and only through the Meet REST API and SIP — no phone dial-in and no other Meet client. Leave blank for Google's default (ALL).\",\n \"options\": [\n {\n \"value\": \"ALL\",\n \"label\": \"All entry points\"\n },\n {\n \"value\": \"CREATOR_APP_ONLY\",\n \"label\": \"This app only\"\n }\n ]\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_SPACE_CREATE_META, config as Record<string, unknown>, \"a Meet space\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/space-get.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/space-get.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * Get meeting space — Read a Meet space's current state, including whether a\n * conference is active right now.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/get\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_SPACE_GET_KIND = \"@particle-academy/google_meet_space_get\";\nexport const GOOGLE_MEET_SPACE_GET_OPERATION = \"space_get\";\n\nexport const GOOGLE_MEET_SPACE_GET_META = googleMeetMeta(\"action\", \"a Meet space\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/spaces/get\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_SPACE_GET_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.name\",\n \"type\": \"string\",\n \"description\": \"The space's resource name, spaces/{id}.\"\n },\n {\n \"path\": \"data.meetingUri\",\n \"type\": \"string\",\n \"description\": \"The join link.\"\n },\n {\n \"path\": \"data.meetingCode\",\n \"type\": \"string\",\n \"description\": \"The short, human-typeable code.\"\n },\n {\n \"path\": \"data.config.accessType\",\n \"type\": \"string\",\n \"description\": \"OPEN, TRUSTED or RESTRICTED.\"\n },\n {\n \"path\": \"data.config.entryPointAccess\",\n \"type\": \"string\",\n \"description\": \"ALL or CREATOR_APP_ONLY.\"\n },\n {\n \"path\": \"data.activeConference.conferenceRecord\",\n \"type\": \"string\",\n \"description\": \"Present only while a conference is LIVE right now — the conferenceRecords/{id} resource name to read once it ends. Absent between meetings.\"\n }\n];\n\nexport const googleMeetSpaceGetKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_SPACE_GET_META, {\n name: GOOGLE_MEET_SPACE_GET_KIND,\n aliases: [\"google_meet_space_get\"],\n label: \"Get meeting space\",\n description: \"Read a Meet space's current state, including whether a conference is active right now.\",\n icon: \"🎥\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_MEET_SPACE_GET_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"spaceId\",\n \"label\": \"Space ID\",\n \"required\": true,\n \"description\": \"The id from space_create's data.name (spaces/{id} -- give the id after the slash), or the meeting code shown in Meet's own UI. NOT independently spot-checked that the meeting-code form resolves through this exact endpoint; verify with a live call before relying on it.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_SPACE_GET_META, config as Record<string, unknown>, \"a Meet space\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/transcript-entry-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/transcript-entry-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * List transcript entries — Read a finished conference's transcript, one\n * utterance per entry.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND = \"@particle-academy/google_meet_transcript_entry_list\";\nexport const GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OPERATION = \"transcript_entry_list\";\n\nexport const GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META = googleMeetMeta(\"action\", \"transcript entries\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.transcriptEntries\",\n \"type\": \"array\",\n \"description\": \"This page's entries, in order. Each has name, participant (participants/{id} -- join against participant_list to get a display name), text (the spoken words), languageCode, startTime and endTime.\"\n },\n {\n \"path\": \"data.nextPageToken\",\n \"type\": \"string\",\n \"description\": \"Present when there is another page.\"\n }\n];\n\nexport const googleMeetTranscriptEntryListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META, {\n name: GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_KIND,\n aliases: [\"google_meet_transcript_entry_list\"],\n label: \"List transcript entries\",\n description: \"Read a finished conference's transcript, one utterance per entry.\",\n icon: \"📝\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"conferenceRecordId\",\n \"label\": \"Conference record ID\",\n \"required\": true,\n \"description\": \"The id from conference_record_list's data.conferenceRecords[].name (give the id after conferenceRecords/).\"\n },\n {\n \"type\": \"text\",\n \"key\": \"transcriptId\",\n \"label\": \"Transcript ID\",\n \"required\": true,\n \"description\": \"The id from transcript_list's data.transcripts[].name (give the id after transcripts/).\"\n },\n {\n \"type\": \"text\",\n \"key\": \"pageToken\",\n \"label\": \"Page token\",\n \"description\": \"From a previous call's data.nextPageToken.\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_TRANSCRIPT_ENTRY_LIST_META, config as Record<string, unknown>, \"transcript entries\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/actions/transcript-list.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/actions/transcript-list.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * List transcripts — List a finished conference's transcripts, when\n * transcription was on.\n *\n * https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list\n */\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { defineConnectorKind, summarize, type OutputField } from \"@particle-academy/fancy-flow/connectors\";\nimport { googleMeetMeta } from \"../service.js\";\n\nexport const GOOGLE_MEET_TRANSCRIPT_LIST_KIND = \"@particle-academy/google_meet_transcript_list\";\nexport const GOOGLE_MEET_TRANSCRIPT_LIST_OPERATION = \"transcript_list\";\n\nexport const GOOGLE_MEET_TRANSCRIPT_LIST_META = googleMeetMeta(\"action\", \"a conference's transcripts\", \"https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list\");\n\n/**\n * What this node emits — the \"ingredients\" a downstream node can reference.\n *\n * fancy-flow reads `outputShape` off the kind and offers it in the variable\n * picker, so declaring it is the whole of the work: an author configuring the\n * next node picks `{{ $json.data.id }}` off a list instead of typing a path\n * and hoping.\n */\nexport const GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT: OutputField[] = [\n {\n \"path\": \"data.transcripts\",\n \"type\": \"array\",\n \"description\": \"Usually one, unless the meeting was recorded in segments. Each has name (…/transcripts/{id} -- what transcript_entry_list needs), state, startTime, endTime, and docsDestination.exportUri (a Google Docs link, when export finished).\"\n }\n];\n\nexport const googleMeetTranscriptListKind: NodeKindDefinition = defineConnectorKind(GOOGLE_MEET_TRANSCRIPT_LIST_META, {\n name: GOOGLE_MEET_TRANSCRIPT_LIST_KIND,\n aliases: [\"google_meet_transcript_list\"],\n label: \"List transcripts\",\n description: \"List a finished conference's transcripts, when transcription was on.\",\n icon: \"📝\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\" }],\n sideEffects: \"none\",\n outputShape: GOOGLE_MEET_TRANSCRIPT_LIST_OUTPUT,\n configSchema: [\n {\n \"type\": \"text\",\n \"key\": \"conferenceRecordId\",\n \"label\": \"Conference record ID\",\n \"required\": true,\n \"description\": \"The id from conference_record_list's data.conferenceRecords[].name (conferenceRecords/{id} -- give the id after the slash).\"\n }\n ],\n defaultConfig: {\n \"mode\": \"auto\"\n },\n renderBody: ({ config }) =>\n summarize(GOOGLE_MEET_TRANSCRIPT_LIST_META, config as Record<string, unknown>, \"a conference's transcripts\"),\n});\n","/**\n * GENERATED FILE — do not edit.\n *\n * Emitted from provider/manifest.json by weaver's generator.\n * A hand-edit here is destroyed by the next protocol sync, which is worse than\n * being rejected, because it works until it silently does not. Fix\n * provider/manifest.json (or weaver's template/) and regenerate:\n *\n * npm run provider -- google_meet\n */\n\n/**\n * Google Meet's node kinds for fancy-flow.\n *\n * Install this on every host. The TypeScript executors live in the js\n * package's `./flow` subpath; PHP and Python hosts run their own and need only\n * this.\n */\n\nexport * from \"./service.js\";\nexport * from \"./kinds/conference-record-list.js\";\nexport * from \"./kinds/participant-list.js\";\nexport * from \"./kinds/space-create.js\";\nexport * from \"./kinds/space-get.js\";\nexport * from \"./kinds/transcript-entry-list.js\";\nexport * from \"./kinds/transcript-list.js\";\n\nimport type { NodeKindDefinition } from \"@particle-academy/fancy-flow/engine\";\nimport { googleMeetConferenceRecordListKind } from \"./kinds/conference-record-list.js\";\nimport { googleMeetParticipantListKind } from \"./kinds/participant-list.js\";\nimport { googleMeetSpaceCreateKind } from \"./kinds/space-create.js\";\nimport { googleMeetSpaceGetKind } from \"./kinds/space-get.js\";\nimport { googleMeetTranscriptEntryListKind } from \"./kinds/transcript-entry-list.js\";\nimport { googleMeetTranscriptListKind } from \"./kinds/transcript-list.js\";\n\n/** Every Google Meet kind, for a host that registers the lot. */\nexport const GOOGLE_MEET_KINDS: NodeKindDefinition[] = [\n googleMeetConferenceRecordListKind,\n googleMeetParticipantListKind,\n googleMeetSpaceCreateKind,\n googleMeetSpaceGetKind,\n googleMeetTranscriptEntryListKind,\n googleMeetTranscriptListKind,\n];\n"]}
|