@aaronsb/google-workspace-mcp 2.0.0-alpha.4 → 2.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/accounts/credentials.test.js +28 -30
- package/build/__tests__/accounts/credentials.test.js.map +1 -1
- package/build/__tests__/accounts/oauth.test.d.ts +1 -0
- package/build/__tests__/accounts/oauth.test.js +71 -0
- package/build/__tests__/accounts/oauth.test.js.map +1 -0
- package/build/__tests__/accounts/token-service.test.d.ts +1 -0
- package/build/__tests__/accounts/token-service.test.js +126 -0
- package/build/__tests__/accounts/token-service.test.js.map +1 -0
- package/build/__tests__/executor/gws.test.js +15 -6
- package/build/__tests__/executor/gws.test.js.map +1 -1
- package/build/__tests__/factory/generator.test.js +2 -1
- package/build/__tests__/factory/generator.test.js.map +1 -1
- package/build/__tests__/factory/patch-coverage.test.js +14 -0
- package/build/__tests__/factory/patch-coverage.test.js.map +1 -1
- package/build/__tests__/integration/executor.test.js +4 -12
- package/build/__tests__/integration/executor.test.js.map +1 -1
- package/build/__tests__/server/formatting/markdown.test.js +59 -4
- package/build/__tests__/server/formatting/markdown.test.js.map +1 -1
- package/build/__tests__/server/handlers/accounts.test.js +9 -7
- package/build/__tests__/server/handlers/accounts.test.js.map +1 -1
- package/build/__tests__/server/handlers/email.test.js +1 -1
- package/build/__tests__/server/handlers/email.test.js.map +1 -1
- package/build/__tests__/services/gmail/mime.test.d.ts +1 -0
- package/build/__tests__/services/gmail/mime.test.js +183 -0
- package/build/__tests__/services/gmail/mime.test.js.map +1 -0
- package/build/__tests__/services/meet/patch.test.d.ts +4 -0
- package/build/__tests__/services/meet/patch.test.js +374 -0
- package/build/__tests__/services/meet/patch.test.js.map +1 -0
- package/build/accounts/auth.d.ts +13 -7
- package/build/accounts/auth.js +48 -84
- package/build/accounts/auth.js.map +1 -1
- package/build/accounts/credentials.d.ts +2 -1
- package/build/accounts/credentials.js +13 -7
- package/build/accounts/credentials.js.map +1 -1
- package/build/accounts/index.d.ts +3 -1
- package/build/accounts/index.js +3 -1
- package/build/accounts/index.js.map +1 -1
- package/build/accounts/oauth.d.ts +26 -0
- package/build/accounts/oauth.js +175 -0
- package/build/accounts/oauth.js.map +1 -0
- package/build/accounts/registry.js.map +1 -1
- package/build/accounts/token-service.d.ts +18 -0
- package/build/accounts/token-service.js +90 -0
- package/build/accounts/token-service.js.map +1 -0
- package/build/executor/gws.js +4 -3
- package/build/executor/gws.js.map +1 -1
- package/build/executor/paths.js +3 -2
- package/build/executor/paths.js.map +1 -1
- package/build/executor/workspace.js +1 -0
- package/build/executor/workspace.js.map +1 -1
- package/build/factory/generator.js.map +1 -1
- package/build/factory/manifest.yaml +176 -6
- package/build/factory/patches.js +2 -0
- package/build/factory/patches.js.map +1 -1
- package/build/index.js +0 -0
- package/build/server/formatting/markdown.d.ts +5 -0
- package/build/server/formatting/markdown.js +102 -3
- package/build/server/formatting/markdown.js.map +1 -1
- package/build/server/formatting/next-steps.js +30 -0
- package/build/server/formatting/next-steps.js.map +1 -1
- package/build/server/handlers/accounts.js +5 -4
- package/build/server/handlers/accounts.js.map +1 -1
- package/build/server/handlers/email.js +5 -1
- package/build/server/handlers/email.js.map +1 -1
- package/build/server/server.js +13 -15
- package/build/server/server.js.map +1 -1
- package/build/services/gmail/mime.d.ts +29 -0
- package/build/services/gmail/mime.js +138 -0
- package/build/services/gmail/mime.js.map +1 -0
- package/build/services/gmail/patch.js +66 -13
- package/build/services/gmail/patch.js.map +1 -1
- package/build/services/meet/patch.d.ts +12 -0
- package/build/services/meet/patch.js +461 -0
- package/build/services/meet/patch.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meet patch — domain-specific hooks for the Meet service.
|
|
3
|
+
*
|
|
4
|
+
* Key customizations:
|
|
5
|
+
* - Conference list: show meeting codes, start/end times, space names
|
|
6
|
+
* - Participant list: display names with join/leave times
|
|
7
|
+
* - Transcript entries: inline text with participant display names
|
|
8
|
+
* - Custom handler: getFullTranscript chains transcripts.list → entries.list
|
|
9
|
+
* → participant resolution into a single agent-friendly response
|
|
10
|
+
*/
|
|
11
|
+
import { execute } from '../../executor/gws.js';
|
|
12
|
+
import { nextSteps } from '../../server/formatting/next-steps.js';
|
|
13
|
+
// --- Formatting helpers ---
|
|
14
|
+
/** Extract meeting code from a space name like "spaces/abc-mnop-xyz". */
|
|
15
|
+
function meetingCode(space) {
|
|
16
|
+
if (!space || typeof space !== 'object')
|
|
17
|
+
return '';
|
|
18
|
+
const name = space.meetingCode;
|
|
19
|
+
return name ? String(name) : '';
|
|
20
|
+
}
|
|
21
|
+
/** Format an ISO timestamp to a short readable form. */
|
|
22
|
+
function shortTime(iso) {
|
|
23
|
+
if (!iso || typeof iso !== 'string')
|
|
24
|
+
return '';
|
|
25
|
+
try {
|
|
26
|
+
const d = new Date(iso);
|
|
27
|
+
return d.toLocaleString('en-US', {
|
|
28
|
+
month: 'short', day: 'numeric',
|
|
29
|
+
hour: 'numeric', minute: '2-digit',
|
|
30
|
+
hour12: true,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return String(iso);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Format duration between two ISO timestamps. */
|
|
38
|
+
function duration(startIso, endIso) {
|
|
39
|
+
if (!startIso || !endIso || typeof startIso !== 'string' || typeof endIso !== 'string')
|
|
40
|
+
return '';
|
|
41
|
+
try {
|
|
42
|
+
const ms = new Date(endIso).getTime() - new Date(startIso).getTime();
|
|
43
|
+
const mins = Math.round(ms / 60000);
|
|
44
|
+
if (mins < 60)
|
|
45
|
+
return `${mins}m`;
|
|
46
|
+
const hrs = Math.floor(mins / 60);
|
|
47
|
+
const rem = mins % 60;
|
|
48
|
+
return rem > 0 ? `${hrs}h ${rem}m` : `${hrs}h`;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Extract conference ID from resource name like "conferenceRecords/abc123". */
|
|
55
|
+
function conferenceId(name) {
|
|
56
|
+
return name.replace('conferenceRecords/', '');
|
|
57
|
+
}
|
|
58
|
+
// --- List formatters ---
|
|
59
|
+
function formatConferenceList(data) {
|
|
60
|
+
const raw = data;
|
|
61
|
+
const items = (raw?.conferenceRecords ?? []);
|
|
62
|
+
if (items.length === 0) {
|
|
63
|
+
return { text: 'No conferences found.', refs: { count: 0 } };
|
|
64
|
+
}
|
|
65
|
+
const lines = items.map(conf => {
|
|
66
|
+
const name = String(conf.name ?? '');
|
|
67
|
+
const id = conferenceId(name);
|
|
68
|
+
const code = meetingCode(conf.space);
|
|
69
|
+
const start = shortTime(conf.startTime);
|
|
70
|
+
const end = shortTime(conf.endTime);
|
|
71
|
+
const dur = duration(conf.startTime, conf.endTime);
|
|
72
|
+
const codePart = code ? ` (${code})` : '';
|
|
73
|
+
const durPart = dur ? ` [${dur}]` : '';
|
|
74
|
+
return `${id}${codePart} | ${start} - ${end}${durPart}`;
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
text: `## Conferences (${items.length})\n\n${lines.join('\n')}`,
|
|
78
|
+
refs: {
|
|
79
|
+
count: items.length,
|
|
80
|
+
conferenceId: conferenceId(String(items[0]?.name ?? '')),
|
|
81
|
+
conferences: items.map(c => ({
|
|
82
|
+
id: conferenceId(String(c.name ?? '')),
|
|
83
|
+
meetingCode: meetingCode(c.space),
|
|
84
|
+
startTime: c.startTime,
|
|
85
|
+
})),
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function formatParticipantList(data) {
|
|
90
|
+
const raw = data;
|
|
91
|
+
const items = (raw?.participants ?? []);
|
|
92
|
+
if (items.length === 0) {
|
|
93
|
+
return { text: 'No participants found.', refs: { count: 0 } };
|
|
94
|
+
}
|
|
95
|
+
const lines = items.map(p => {
|
|
96
|
+
const signedin = p.signedinUser;
|
|
97
|
+
const anon = p.anonymousUser;
|
|
98
|
+
const phone = p.phoneUser;
|
|
99
|
+
const displayName = signedin?.displayName ?? anon?.displayName ?? phone?.displayName ?? '(unknown)';
|
|
100
|
+
const joinTime = shortTime(p.earliestStartTime);
|
|
101
|
+
const leaveTime = shortTime(p.latestEndTime);
|
|
102
|
+
return `${displayName} | ${joinTime} - ${leaveTime}`;
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
text: `## Participants (${items.length})\n\n${lines.join('\n')}`,
|
|
106
|
+
refs: {
|
|
107
|
+
count: items.length,
|
|
108
|
+
participants: items.map(p => {
|
|
109
|
+
const signedin = p.signedinUser;
|
|
110
|
+
return {
|
|
111
|
+
name: String(signedin?.displayName ?? '(unknown)'),
|
|
112
|
+
user: signedin?.user ? String(signedin.user) : undefined,
|
|
113
|
+
};
|
|
114
|
+
}),
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function formatTranscriptList(data) {
|
|
119
|
+
const raw = data;
|
|
120
|
+
const items = (raw?.transcripts ?? []);
|
|
121
|
+
if (items.length === 0) {
|
|
122
|
+
return { text: 'No transcripts found.', refs: { count: 0 } };
|
|
123
|
+
}
|
|
124
|
+
const lines = items.map(t => {
|
|
125
|
+
const name = String(t.name ?? '');
|
|
126
|
+
const state = String(t.state ?? '');
|
|
127
|
+
const startTime = shortTime(t.startTime);
|
|
128
|
+
const endTime = shortTime(t.endTime);
|
|
129
|
+
const docsUri = t.docsDestination?.exportUri;
|
|
130
|
+
const docsPart = docsUri ? ` | [Docs](${docsUri})` : '';
|
|
131
|
+
return `${name} | ${state} | ${startTime} - ${endTime}${docsPart}`;
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
text: `## Transcripts (${items.length})\n\n${lines.join('\n')}`,
|
|
135
|
+
refs: {
|
|
136
|
+
count: items.length,
|
|
137
|
+
transcriptName: String(items[0]?.name ?? ''),
|
|
138
|
+
transcripts: items.map(t => ({
|
|
139
|
+
name: t.name,
|
|
140
|
+
state: t.state,
|
|
141
|
+
docsUri: t.docsDestination?.exportUri,
|
|
142
|
+
})),
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function formatRecordingList(data) {
|
|
147
|
+
const raw = data;
|
|
148
|
+
const items = (raw?.recordings ?? []);
|
|
149
|
+
if (items.length === 0) {
|
|
150
|
+
return { text: 'No recordings found.', refs: { count: 0 } };
|
|
151
|
+
}
|
|
152
|
+
const lines = items.map(r => {
|
|
153
|
+
const name = String(r.name ?? '');
|
|
154
|
+
const state = String(r.state ?? '');
|
|
155
|
+
const startTime = shortTime(r.startTime);
|
|
156
|
+
const endTime = shortTime(r.endTime);
|
|
157
|
+
const driveUri = r.driveDestination?.exportUri;
|
|
158
|
+
const drivePart = driveUri ? ` | [Drive](${driveUri})` : '';
|
|
159
|
+
return `${name} | ${state} | ${startTime} - ${endTime}${drivePart}`;
|
|
160
|
+
});
|
|
161
|
+
return {
|
|
162
|
+
text: `## Recordings (${items.length})\n\n${lines.join('\n')}`,
|
|
163
|
+
refs: {
|
|
164
|
+
count: items.length,
|
|
165
|
+
recordingName: String(items[0]?.name ?? ''),
|
|
166
|
+
recordings: items.map(r => ({
|
|
167
|
+
name: r.name,
|
|
168
|
+
state: r.state,
|
|
169
|
+
driveUri: r.driveDestination?.exportUri,
|
|
170
|
+
})),
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function formatSmartNoteList(data) {
|
|
175
|
+
const raw = data;
|
|
176
|
+
const items = (raw?.smartNotes ?? []);
|
|
177
|
+
if (items.length === 0) {
|
|
178
|
+
return { text: 'No smart notes found.', refs: { count: 0 } };
|
|
179
|
+
}
|
|
180
|
+
const lines = items.map(n => {
|
|
181
|
+
const name = String(n.name ?? '');
|
|
182
|
+
const state = String(n.state ?? '');
|
|
183
|
+
const docsUri = n.docsDestination?.exportUri;
|
|
184
|
+
const docsPart = docsUri ? ` | [Docs](${docsUri})` : '';
|
|
185
|
+
return `${name} | ${state}${docsPart}`;
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
text: `## Smart Notes (${items.length})\n\n${lines.join('\n')}`,
|
|
189
|
+
refs: {
|
|
190
|
+
count: items.length,
|
|
191
|
+
smartNoteName: String(items[0]?.name ?? ''),
|
|
192
|
+
smartNotes: items.map(n => ({
|
|
193
|
+
name: n.name,
|
|
194
|
+
state: n.state,
|
|
195
|
+
docsUri: n.docsDestination?.exportUri,
|
|
196
|
+
})),
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Collapse consecutive entries by the same speaker into blocks.
|
|
202
|
+
* "Alice: Hello" + "Alice: world" → "**Alice** (time):\nHello\nworld"
|
|
203
|
+
*/
|
|
204
|
+
function collapseEntries(entries) {
|
|
205
|
+
const blocks = [];
|
|
206
|
+
let currentSpeaker = '';
|
|
207
|
+
let currentLines = [];
|
|
208
|
+
let currentTime = '';
|
|
209
|
+
for (const e of entries) {
|
|
210
|
+
if (e.participant !== currentSpeaker) {
|
|
211
|
+
if (currentSpeaker) {
|
|
212
|
+
blocks.push(`**${currentSpeaker}** (${currentTime}):\n${currentLines.join('\n')}`);
|
|
213
|
+
}
|
|
214
|
+
currentSpeaker = e.participant;
|
|
215
|
+
currentLines = [e.text];
|
|
216
|
+
currentTime = e.time;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
currentLines.push(e.text);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (currentSpeaker) {
|
|
223
|
+
blocks.push(`**${currentSpeaker}** (${currentTime}):\n${currentLines.join('\n')}`);
|
|
224
|
+
}
|
|
225
|
+
return blocks;
|
|
226
|
+
}
|
|
227
|
+
// --- Detail formatters ---
|
|
228
|
+
function formatTranscriptEntries(data) {
|
|
229
|
+
const raw = data;
|
|
230
|
+
const entries = (raw?.transcriptEntries ?? []);
|
|
231
|
+
if (entries.length === 0) {
|
|
232
|
+
return { text: 'No transcript entries found.', refs: { count: 0 } };
|
|
233
|
+
}
|
|
234
|
+
const resolved = entries.map(e => ({
|
|
235
|
+
participant: String(e.participantDisplayName ?? e.participant ?? ''),
|
|
236
|
+
text: String(e.text ?? ''),
|
|
237
|
+
time: shortTime(e.startTime),
|
|
238
|
+
}));
|
|
239
|
+
const blocks = collapseEntries(resolved);
|
|
240
|
+
return {
|
|
241
|
+
text: `## Transcript (${entries.length} entries)\n\n${blocks.join('\n\n')}`,
|
|
242
|
+
refs: {
|
|
243
|
+
count: entries.length,
|
|
244
|
+
entries: entries.map(e => ({
|
|
245
|
+
participant: e.participantDisplayName ?? e.participant,
|
|
246
|
+
text: e.text,
|
|
247
|
+
startTime: e.startTime,
|
|
248
|
+
})),
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function formatConferenceDetail(data) {
|
|
253
|
+
const raw = data;
|
|
254
|
+
const name = String(raw.name ?? '');
|
|
255
|
+
const id = conferenceId(name);
|
|
256
|
+
const code = meetingCode(raw.space);
|
|
257
|
+
const start = shortTime(raw.startTime);
|
|
258
|
+
const end = shortTime(raw.endTime);
|
|
259
|
+
const dur = duration(raw.startTime, raw.endTime);
|
|
260
|
+
const parts = [`## Conference ${id}`];
|
|
261
|
+
if (code)
|
|
262
|
+
parts.push(`**Meeting code:** ${code}`);
|
|
263
|
+
parts.push(`**Time:** ${start} - ${end}`);
|
|
264
|
+
if (dur)
|
|
265
|
+
parts.push(`**Duration:** ${dur}`);
|
|
266
|
+
if (raw.expireTime)
|
|
267
|
+
parts.push(`**Expires:** ${shortTime(raw.expireTime)}`);
|
|
268
|
+
return {
|
|
269
|
+
text: parts.join('\n'),
|
|
270
|
+
refs: {
|
|
271
|
+
conferenceId: id,
|
|
272
|
+
meetingCode: code,
|
|
273
|
+
startTime: raw.startTime,
|
|
274
|
+
endTime: raw.endTime,
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// --- Custom handlers ---
|
|
279
|
+
/**
|
|
280
|
+
* getFullTranscript — chains transcripts.list → entries.list → format.
|
|
281
|
+
* Accepts a conferenceId and returns the full who-said-what transcript
|
|
282
|
+
* without requiring the agent to know resource name conventions.
|
|
283
|
+
*/
|
|
284
|
+
async function getFullTranscript(params, account) {
|
|
285
|
+
const confId = String(params.conferenceId ?? '');
|
|
286
|
+
if (!confId)
|
|
287
|
+
throw new Error('conferenceId is required for getFullTranscript');
|
|
288
|
+
const parent = confId.startsWith('conferenceRecords/') ? confId : `conferenceRecords/${confId}`;
|
|
289
|
+
// Step 1: List transcripts for this conference
|
|
290
|
+
const transcriptsResult = await execute([
|
|
291
|
+
'meet', 'conferenceRecords', 'transcripts', 'list',
|
|
292
|
+
'--params', JSON.stringify({ parent }),
|
|
293
|
+
], { account, format: 'json' });
|
|
294
|
+
const transcriptsData = transcriptsResult.data;
|
|
295
|
+
const transcripts = (transcriptsData?.transcripts ?? []);
|
|
296
|
+
if (transcripts.length === 0) {
|
|
297
|
+
return {
|
|
298
|
+
text: 'No transcripts found for this conference. Transcripts require Workspace Business Standard+ and must be enabled before the meeting.',
|
|
299
|
+
refs: { conferenceId: confId, count: 0 },
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
// Step 2: Fetch transcript entries and participants in parallel
|
|
303
|
+
const transcriptName = String(transcripts[0].name ?? '');
|
|
304
|
+
const pageToken = params.pageToken ? String(params.pageToken) : undefined;
|
|
305
|
+
const entriesParams = { parent: transcriptName, pageSize: 100 };
|
|
306
|
+
if (pageToken)
|
|
307
|
+
entriesParams.pageToken = pageToken;
|
|
308
|
+
const [entriesResult, participantsResult] = await Promise.all([
|
|
309
|
+
execute([
|
|
310
|
+
'meet', 'conferenceRecords', 'transcripts', 'entries', 'list',
|
|
311
|
+
'--params', JSON.stringify(entriesParams),
|
|
312
|
+
], { account, format: 'json' }),
|
|
313
|
+
execute([
|
|
314
|
+
'meet', 'conferenceRecords', 'participants', 'list',
|
|
315
|
+
'--params', JSON.stringify({ parent, pageSize: 100 }),
|
|
316
|
+
], { account, format: 'json' }),
|
|
317
|
+
]);
|
|
318
|
+
const entriesData = entriesResult.data;
|
|
319
|
+
const entries = (entriesData?.transcriptEntries ?? []);
|
|
320
|
+
if (entries.length === 0) {
|
|
321
|
+
return {
|
|
322
|
+
text: `Transcript found (${transcriptName}) but no entries available yet. The transcript may still be processing.`,
|
|
323
|
+
refs: { conferenceId: confId, transcriptName, count: 0 },
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
// Step 3: Build participant ID → display name map
|
|
327
|
+
const participantsData = participantsResult.data;
|
|
328
|
+
const participants = (participantsData?.participants ?? []);
|
|
329
|
+
const nameMap = new Map();
|
|
330
|
+
for (const p of participants) {
|
|
331
|
+
const name = String(p.name ?? '');
|
|
332
|
+
const signedin = p.signedinUser;
|
|
333
|
+
const anon = p.anonymousUser;
|
|
334
|
+
const phone = p.phoneUser;
|
|
335
|
+
const displayName = String(signedin?.displayName ?? anon?.displayName ?? phone?.displayName ?? '');
|
|
336
|
+
if (name && displayName)
|
|
337
|
+
nameMap.set(name, displayName);
|
|
338
|
+
}
|
|
339
|
+
// Step 4: Format who-said-what with resolved names, collapsed by speaker
|
|
340
|
+
const resolved = entries.map(e => {
|
|
341
|
+
const rawParticipant = String(e.participant ?? '');
|
|
342
|
+
return {
|
|
343
|
+
participant: e.participantDisplayName
|
|
344
|
+
? String(e.participantDisplayName)
|
|
345
|
+
: nameMap.get(rawParticipant) ?? rawParticipant.split('/').pop() ?? rawParticipant,
|
|
346
|
+
text: String(e.text ?? ''),
|
|
347
|
+
time: shortTime(e.startTime),
|
|
348
|
+
};
|
|
349
|
+
});
|
|
350
|
+
const blocks = collapseEntries(resolved);
|
|
351
|
+
const nextPageToken = entriesData.nextPageToken ? String(entriesData.nextPageToken) : null;
|
|
352
|
+
const docsUri = transcripts[0].docsDestination?.exportUri;
|
|
353
|
+
const isFirstPage = !pageToken;
|
|
354
|
+
const isLastPage = !nextPageToken;
|
|
355
|
+
const footer = [];
|
|
356
|
+
if (docsUri && (isFirstPage || isLastPage)) {
|
|
357
|
+
footer.push(`\n\n[Full transcript in Google Docs](${docsUri})`);
|
|
358
|
+
}
|
|
359
|
+
if (nextPageToken) {
|
|
360
|
+
footer.push(`\n\n**More entries available.** Continue with: \`manage_meet\` — \`{"operation":"getFullTranscript","email":"${account}","conferenceId":"${confId}","pageToken":"${nextPageToken}"}\``);
|
|
361
|
+
}
|
|
362
|
+
return {
|
|
363
|
+
text: `## Transcript (${entries.length} entries)\n\n${blocks.join('\n\n')}${footer.join('')}` +
|
|
364
|
+
nextSteps('meet', 'getFullTranscript', { email: account, conferenceId: confId }),
|
|
365
|
+
refs: {
|
|
366
|
+
conferenceId: confId,
|
|
367
|
+
transcriptName,
|
|
368
|
+
count: entries.length,
|
|
369
|
+
nextPageToken,
|
|
370
|
+
docsUri: docsUri ?? null,
|
|
371
|
+
entries: entries.map(e => {
|
|
372
|
+
const raw = String(e.participant ?? '');
|
|
373
|
+
return {
|
|
374
|
+
participant: e.participantDisplayName ?? nameMap.get(raw) ?? raw,
|
|
375
|
+
text: e.text,
|
|
376
|
+
startTime: e.startTime,
|
|
377
|
+
};
|
|
378
|
+
}),
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Prefix a bare conference ID with "conferenceRecords/" in the --params JSON.
|
|
384
|
+
* The Meet API requires full resource names but agents pass bare IDs.
|
|
385
|
+
*/
|
|
386
|
+
function prefixResourceName(args, paramKey, prefix) {
|
|
387
|
+
const idx = args.indexOf('--params');
|
|
388
|
+
if (idx === -1 || idx + 1 >= args.length)
|
|
389
|
+
return args;
|
|
390
|
+
const gwsParams = JSON.parse(args[idx + 1]);
|
|
391
|
+
if (gwsParams[paramKey] && !String(gwsParams[paramKey]).startsWith(prefix)) {
|
|
392
|
+
gwsParams[paramKey] = `${prefix}${gwsParams[paramKey]}`;
|
|
393
|
+
args[idx + 1] = JSON.stringify(gwsParams);
|
|
394
|
+
}
|
|
395
|
+
return args;
|
|
396
|
+
}
|
|
397
|
+
const prefixConferenceParent = async (args) => prefixResourceName(args, 'parent', 'conferenceRecords/');
|
|
398
|
+
const prefixConferenceName = async (args) => prefixResourceName(args, 'name', 'conferenceRecords/');
|
|
399
|
+
export const meetPatch = {
|
|
400
|
+
beforeExecute: {
|
|
401
|
+
listParticipants: prefixConferenceParent,
|
|
402
|
+
listTranscripts: prefixConferenceParent,
|
|
403
|
+
listRecordings: prefixConferenceParent,
|
|
404
|
+
listSmartNotes: prefixConferenceParent,
|
|
405
|
+
getConference: prefixConferenceName,
|
|
406
|
+
},
|
|
407
|
+
formatList: (data, ctx) => {
|
|
408
|
+
switch (ctx.operation) {
|
|
409
|
+
case 'listConferences':
|
|
410
|
+
return formatConferenceList(data);
|
|
411
|
+
case 'listParticipants':
|
|
412
|
+
return formatParticipantList(data);
|
|
413
|
+
case 'listTranscripts':
|
|
414
|
+
return formatTranscriptList(data);
|
|
415
|
+
case 'listTranscriptEntries':
|
|
416
|
+
return formatTranscriptEntries(data);
|
|
417
|
+
case 'listRecordings':
|
|
418
|
+
return formatRecordingList(data);
|
|
419
|
+
case 'listSmartNotes':
|
|
420
|
+
return formatSmartNoteList(data);
|
|
421
|
+
default: {
|
|
422
|
+
// Unknown list operation — return generic format rather than
|
|
423
|
+
// silently misformatting as a conference list
|
|
424
|
+
const raw = data;
|
|
425
|
+
const items = Object.values(raw).find(Array.isArray) ?? [];
|
|
426
|
+
return {
|
|
427
|
+
text: items.length > 0
|
|
428
|
+
? `## Results (${items.length})\n\n${JSON.stringify(items, null, 2)}`
|
|
429
|
+
: 'No results found.',
|
|
430
|
+
refs: { count: items.length },
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
},
|
|
435
|
+
formatDetail: (data, ctx) => {
|
|
436
|
+
switch (ctx.operation) {
|
|
437
|
+
case 'getConference':
|
|
438
|
+
return formatConferenceDetail(data);
|
|
439
|
+
default: {
|
|
440
|
+
// For getTranscript, getRecording, getSmartNote — default detail is fine
|
|
441
|
+
// but enrich refs with the resource name for chaining
|
|
442
|
+
const raw = data;
|
|
443
|
+
const name = String(raw.name ?? '');
|
|
444
|
+
const parts = [`## ${ctx.operation.replace('get', '')}`];
|
|
445
|
+
for (const [key, val] of Object.entries(raw)) {
|
|
446
|
+
if (val === null || val === undefined || typeof val === 'object')
|
|
447
|
+
continue;
|
|
448
|
+
parts.push(`**${key}:** ${val}`);
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
text: parts.join('\n'),
|
|
452
|
+
refs: { name, ...raw },
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
customHandlers: {
|
|
458
|
+
getFullTranscript,
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
//# sourceMappingURL=patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/meet/patch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aaronsb/google-workspace-mcp",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.6",
|
|
4
4
|
"description": "MCP server for Google Workspace with progressive context disclosure and multi-account orchestration",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/aaronsb/google-workspace-mcp"
|
|
8
|
+
},
|
|
5
9
|
"type": "module",
|
|
6
10
|
"bin": {
|
|
7
11
|
"google-workspace-mcp": "./build/index.js"
|