@aaronsb/google-workspace-mcp 3.0.0 → 4.0.1

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 (146) hide show
  1. package/LICENSE +201 -21
  2. package/LICENSE-MIT +21 -0
  3. package/NOTICE +24 -0
  4. package/README.md +90 -52
  5. package/build/accounts/auth.d.ts +1 -1
  6. package/build/accounts/auth.js +1 -1
  7. package/build/accounts/oauth.js +3 -3
  8. package/build/accounts/oauth.js.map +1 -1
  9. package/build/accounts/token-service.js +1 -1
  10. package/build/accounts/token-service.js.map +1 -1
  11. package/build/coverage/analyze.d.ts +1 -1
  12. package/build/coverage/analyze.js +6 -4
  13. package/build/coverage/analyze.js.map +1 -1
  14. package/build/coverage/baseline.js +37 -20
  15. package/build/coverage/baseline.js.map +1 -1
  16. package/build/coverage/compare.d.ts +1 -1
  17. package/build/coverage/compare.js +19 -10
  18. package/build/coverage/compare.js.map +1 -1
  19. package/build/coverage/discover.d.ts +5 -5
  20. package/build/coverage/discover.js +71 -155
  21. package/build/coverage/discover.js.map +1 -1
  22. package/build/coverage/report.js +3 -3
  23. package/build/coverage/report.js.map +1 -1
  24. package/build/coverage/types.d.ts +19 -4
  25. package/build/executor/index.d.ts +0 -3
  26. package/build/executor/index.js +1 -2
  27. package/build/executor/index.js.map +1 -1
  28. package/build/factory/defaults.js +30 -4
  29. package/build/factory/defaults.js.map +1 -1
  30. package/build/factory/generator.d.ts +10 -2
  31. package/build/factory/generator.js +54 -69
  32. package/build/factory/generator.js.map +1 -1
  33. package/build/factory/manifest/README.md +4 -3
  34. package/build/factory/manifest/calendar.yaml +1 -11
  35. package/build/factory/manifest/docs.yaml +15 -6
  36. package/build/factory/manifest/drive.yaml +1 -5
  37. package/build/factory/manifest/gmail.yaml +9 -24
  38. package/build/factory/manifest/meet.yaml +1 -1
  39. package/build/factory/manifest/sheets.yaml +2 -5
  40. package/build/factory/manifest/tasks.yaml +40 -2
  41. package/build/factory/patches.js +2 -0
  42. package/build/factory/patches.js.map +1 -1
  43. package/build/factory/safety.js +4 -4
  44. package/build/factory/safety.js.map +1 -1
  45. package/build/factory/types.d.ts +16 -15
  46. package/build/google/client.d.ts +45 -0
  47. package/build/google/client.js +283 -0
  48. package/build/google/client.js.map +1 -0
  49. package/build/google/descriptor.d.ts +40 -0
  50. package/build/google/descriptor.js +37 -0
  51. package/build/google/descriptor.js.map +1 -0
  52. package/build/google/descriptor.json +5271 -0
  53. package/build/google/errors.d.ts +45 -0
  54. package/build/google/errors.js +44 -0
  55. package/build/google/errors.js.map +1 -0
  56. package/build/google/methods.d.ts +37 -0
  57. package/build/google/methods.js +13 -0
  58. package/build/google/methods.js.map +1 -0
  59. package/build/index.js +3 -3
  60. package/build/index.js.map +1 -1
  61. package/build/node-floor.js +1 -1
  62. package/build/node-floor.js.map +1 -1
  63. package/build/server/formatting/markdown.d.ts +10 -1
  64. package/build/server/formatting/markdown.js +24 -1
  65. package/build/server/formatting/markdown.js.map +1 -1
  66. package/build/server/formatting/next-steps.js +1 -1
  67. package/build/server/formatting/next-steps.js.map +1 -1
  68. package/build/server/handlers/accounts.js +2 -2
  69. package/build/server/handlers/accounts.js.map +1 -1
  70. package/build/server/scratchpad/adapters/import-doc.js +15 -13
  71. package/build/server/scratchpad/adapters/import-doc.js.map +1 -1
  72. package/build/server/scratchpad/adapters/import-drive.js +16 -11
  73. package/build/server/scratchpad/adapters/import-drive.js.map +1 -1
  74. package/build/server/scratchpad/adapters/import-email.js +3 -15
  75. package/build/server/scratchpad/adapters/import-email.js.map +1 -1
  76. package/build/server/scratchpad/adapters/import-meet.js +5 -17
  77. package/build/server/scratchpad/adapters/import-meet.js.map +1 -1
  78. package/build/server/scratchpad/adapters/import-sheet.js +5 -6
  79. package/build/server/scratchpad/adapters/import-sheet.js.map +1 -1
  80. package/build/server/scratchpad/adapters/send-calendar.js +18 -13
  81. package/build/server/scratchpad/adapters/send-calendar.js.map +1 -1
  82. package/build/server/scratchpad/adapters/send-doc.js +22 -17
  83. package/build/server/scratchpad/adapters/send-doc.js.map +1 -1
  84. package/build/server/scratchpad/adapters/send-email-draft.d.ts +1 -1
  85. package/build/server/scratchpad/adapters/send-email-draft.js +17 -25
  86. package/build/server/scratchpad/adapters/send-email-draft.js.map +1 -1
  87. package/build/server/scratchpad/adapters/send-email.d.ts +2 -2
  88. package/build/server/scratchpad/adapters/send-email.js +21 -25
  89. package/build/server/scratchpad/adapters/send-email.js.map +1 -1
  90. package/build/server/scratchpad/adapters/send-sheet.js +10 -10
  91. package/build/server/scratchpad/adapters/send-sheet.js.map +1 -1
  92. package/build/server/scratchpad/adapters/send-task.js +9 -8
  93. package/build/server/scratchpad/adapters/send-task.js.map +1 -1
  94. package/build/server/scratchpad/handler.js +22 -28
  95. package/build/server/scratchpad/handler.js.map +1 -1
  96. package/build/server/scratchpad/manager.d.ts +1 -1
  97. package/build/server/server.js +13 -10
  98. package/build/server/server.js.map +1 -1
  99. package/build/server/session/tracker.js +44 -27
  100. package/build/server/session/tracker.js.map +1 -1
  101. package/build/server/tools.d.ts +1 -1
  102. package/build/server/tools.js +3 -3
  103. package/build/server/tools.js.map +1 -1
  104. package/build/services/calendar/patch.js +178 -68
  105. package/build/services/calendar/patch.js.map +1 -1
  106. package/build/services/docs/patch.d.ts +5 -3
  107. package/build/services/docs/patch.js +89 -19
  108. package/build/services/docs/patch.js.map +1 -1
  109. package/build/services/drive/patch.d.ts +1 -1
  110. package/build/services/drive/patch.js +115 -143
  111. package/build/services/drive/patch.js.map +1 -1
  112. package/build/services/gmail/attachments.js +10 -15
  113. package/build/services/gmail/attachments.js.map +1 -1
  114. package/build/services/gmail/mail.d.ts +34 -0
  115. package/build/services/gmail/mail.js +245 -0
  116. package/build/services/gmail/mail.js.map +1 -0
  117. package/build/services/gmail/mime.d.ts +45 -4
  118. package/build/services/gmail/mime.js +138 -4
  119. package/build/services/gmail/mime.js.map +1 -1
  120. package/build/services/gmail/patch.js +109 -90
  121. package/build/services/gmail/patch.js.map +1 -1
  122. package/build/services/meet/patch.js +24 -31
  123. package/build/services/meet/patch.js.map +1 -1
  124. package/build/services/sheets/patch.js +30 -35
  125. package/build/services/sheets/patch.js.map +1 -1
  126. package/build/services/tasks/patch.d.ts +18 -0
  127. package/build/services/tasks/patch.js +37 -0
  128. package/build/services/tasks/patch.js.map +1 -0
  129. package/build/version.d.ts +1 -1
  130. package/build/version.js +1 -1
  131. package/package.json +12 -6
  132. package/build/executor/errors.d.ts +0 -15
  133. package/build/executor/errors.js +0 -37
  134. package/build/executor/errors.js.map +0 -1
  135. package/build/executor/gws.d.ts +0 -26
  136. package/build/executor/gws.js +0 -197
  137. package/build/executor/gws.js.map +0 -1
  138. package/build/server/handlers/calendar.d.ts +0 -2
  139. package/build/server/handlers/calendar.js +0 -97
  140. package/build/server/handlers/calendar.js.map +0 -1
  141. package/build/server/handlers/drive.d.ts +0 -2
  142. package/build/server/handlers/drive.js +0 -58
  143. package/build/server/handlers/drive.js.map +0 -1
  144. package/build/server/handlers/email.d.ts +0 -2
  145. package/build/server/handlers/email.js +0 -119
  146. package/build/server/handlers/email.js.map +0 -1
@@ -8,7 +8,8 @@
8
8
  * - Create: custom response formatting with event details + --meet flag
9
9
  * - Delete: custom confirmation message
10
10
  */
11
- import { execute } from '../../executor/gws.js';
11
+ import { createHash } from 'node:crypto';
12
+ import { call } from '../../google/client.js';
12
13
  import { formatEventList, formatEventDetail } from '../../server/formatting/markdown.js';
13
14
  import { requireString } from '../../server/handlers/validate.js';
14
15
  /** Format calendar list — name, access role, primary flag. */
@@ -83,41 +84,82 @@ function formatFreeBusy(data, ctx) {
83
84
  },
84
85
  };
85
86
  }
86
- /** Format agenda events with calendarId per event. */
87
- function formatAgenda(data, account) {
88
- const raw = data;
89
- const events = (raw?.events ?? []);
90
- const text = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
87
+ /**
88
+ * Compute the agenda window.
89
+ *
90
+ * Every window starts at the START OF A DAY, which is what a person means when they
91
+ * ask for their agenda. A rolling `[now, now+7d]` window is NOT a week: it silently
92
+ * excludes everything earlier today. Do not reintroduce one.
93
+ */
94
+ function agendaWindow(params) {
95
+ const startOfDay = (offsetDays) => {
96
+ const d = new Date();
97
+ d.setDate(d.getDate() + offsetDays);
98
+ d.setHours(0, 0, 0, 0);
99
+ return d;
100
+ };
101
+ if (params.tomorrow === true || params.tomorrow === 'true') {
102
+ return { timeMin: startOfDay(1).toISOString(), timeMax: startOfDay(2).toISOString() };
103
+ }
104
+ const days = params.week === true || params.week === 'true'
105
+ ? 7
106
+ : Number(params.days ?? 1) || 1;
107
+ return { timeMin: startOfDay(0).toISOString(), timeMax: startOfDay(days).toISOString() };
108
+ }
109
+ /** Render the merged agenda. Grouped by day, because that is how a day is read. */
110
+ function formatAgenda(events, window) {
111
+ if (events.length === 0) {
112
+ return {
113
+ text: 'No events scheduled.',
114
+ refs: { count: 0, timeMin: window.timeMin, timeMax: window.timeMax },
115
+ };
116
+ }
117
+ const dayOf = (e) => e.start.slice(0, 10);
118
+ const time = (e) => e.allDay
119
+ ? 'all day'
120
+ : new Date(e.start).toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true });
121
+ const lines = [];
122
+ let currentDay = '';
123
+ for (const e of events) {
124
+ const day = dayOf(e);
125
+ if (day !== currentDay) {
126
+ currentDay = day;
127
+ const label = new Date(`${day}T12:00:00`).toLocaleDateString('en-US', {
128
+ weekday: 'long', month: 'short', day: 'numeric',
129
+ });
130
+ lines.push(`${lines.length ? '\n' : ''}### ${label}`);
131
+ }
132
+ const where = e.location ? ` — ${e.location}` : '';
133
+ const whose = e.calendarName ? ` _(${e.calendarName})_` : '';
134
+ lines.push(`- **${time(e)}** ${e.summary}${where}${whose}`);
135
+ }
91
136
  return {
92
- text,
137
+ text: `## Agenda (${events.length} event${events.length === 1 ? '' : 's'})\n\n${lines.join('\n')}`,
93
138
  refs: {
94
139
  count: events.length,
140
+ timeMin: window.timeMin,
141
+ timeMax: window.timeMax,
95
142
  eventId: events[0]?.id,
96
- events: events.map((e) => ({
97
- id: e.id,
98
- calendarId: e.calendarId ?? (e.organizer && e.organizer.email),
99
- })),
143
+ // calendarId per event: a follow-up `get` on a shared calendar needs it,
144
+ // and it is the whole reason this operation exists rather than `list`.
145
+ events: events.map((e) => ({ id: e.id, calendarId: e.calendarId, summary: e.summary })),
100
146
  },
101
147
  };
102
148
  }
103
149
  export const calendarPatch = {
104
150
  beforeExecute: {
105
- list: async (args, ctx) => {
106
- // Inject default timeMin (today start) if not provided
107
- if (!ctx.params.timeMin) {
108
- const now = new Date();
109
- const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).toISOString();
110
- // Patch the --params JSON to include timeMin
111
- const paramsIdx = args.indexOf('--params');
112
- if (paramsIdx !== -1) {
113
- const gwsParams = JSON.parse(args[paramsIdx + 1]);
114
- if (!gwsParams.timeMin) {
115
- gwsParams.timeMin = todayStart;
116
- }
117
- args[paramsIdx + 1] = JSON.stringify(gwsParams);
118
- }
119
- }
120
- return args;
151
+ // Default the range to "from the start of today" when the caller gave none.
152
+ //
153
+ // This used to reach into an argv slot and re-serialise its JSON:
154
+ // const i = args.indexOf('--params'); JSON.parse(args[i + 1]) …
155
+ // — surgery on a command line, only because the seam WAS a command line.
156
+ // The hook now receives the params themselves (ADR-103).
157
+ list: async (params) => {
158
+ if (params.timeMin)
159
+ return params;
160
+ const now = new Date();
161
+ const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).toISOString();
162
+ return { ...params, timeMin: todayStart };
121
163
  },
122
164
  },
123
165
  formatList: (data, ctx) => {
@@ -130,22 +172,78 @@ export const calendarPatch = {
130
172
  },
131
173
  formatDetail: (data) => formatEventDetail(data),
132
174
  customHandlers: {
175
+ /**
176
+ * Agenda: every calendar the account can see, merged into one timeline.
177
+ *
178
+ * Built from raw Google, and reshaped here rather than anywhere below us.
179
+ *
180
+ * Two failure modes this deliberately avoids:
181
+ * - do NOT swallow per-calendar failures. A calendar you have lost access to
182
+ * must not contribute zero events in silence — surface it.
183
+ * - do NOT cap events per calendar without pagination. A busy calendar would
184
+ * silently lose the tail. Ask for the whole window we were asked for.
185
+ */
133
186
  agenda: async (params, account) => {
134
- const args = ['calendar', '+agenda'];
135
- // Day-range flags
136
- if (params.tomorrow)
137
- args.push('--tomorrow');
138
- else if (params.week)
139
- args.push('--week');
140
- else if (params.days)
141
- args.push('--days', String(params.days));
142
- else
143
- args.push('--today');
144
- // Calendar filter
145
- if (params.calendarId)
146
- args.push('--calendar', String(params.calendarId));
147
- const result = await execute(args, { account });
148
- return formatAgenda(result.data, account);
187
+ const window = agendaWindow(params);
188
+ const calList = await call('calendar', 'calendarList.list', {}, { account });
189
+ let calendars = (calList.items ?? [])
190
+ .filter((c) => c.id);
191
+ // Optional filter: match an id exactly, or a display name by substring.
192
+ if (params.calendarId) {
193
+ const needle = String(params.calendarId).toLowerCase();
194
+ calendars = calendars.filter((c) => String(c.id).toLowerCase() === needle ||
195
+ String(c.summary ?? '').toLowerCase().includes(needle));
196
+ if (calendars.length === 0) {
197
+ return {
198
+ text: `No calendar matches "${params.calendarId}". Use the \`calendars\` operation to list them.`,
199
+ refs: { count: 0 },
200
+ };
201
+ }
202
+ }
203
+ const failures = [];
204
+ const perCalendar = await Promise.all(calendars.map(async (cal) => {
205
+ const calendarId = String(cal.id);
206
+ const calendarName = String(cal.summary ?? calendarId);
207
+ try {
208
+ const res = await call('calendar', 'events.list', {
209
+ calendarId,
210
+ timeMin: window.timeMin,
211
+ timeMax: window.timeMax,
212
+ singleEvents: true, // expand recurrences into instances
213
+ orderBy: 'startTime',
214
+ }, { account });
215
+ return (res.items ?? []).map((e) => {
216
+ const start = e.start;
217
+ const end = e.end;
218
+ const allDay = !start?.dateTime;
219
+ return {
220
+ id: String(e.id ?? ''),
221
+ calendarId,
222
+ calendarName,
223
+ summary: String(e.summary ?? '(no title)'),
224
+ location: String(e.location ?? ''),
225
+ start: String(start?.dateTime ?? start?.date ?? ''),
226
+ end: String(end?.dateTime ?? end?.date ?? ''),
227
+ allDay,
228
+ };
229
+ });
230
+ }
231
+ catch (err) {
232
+ // Do NOT swallow this. A calendar that cannot be read is information.
233
+ failures.push(`${calendarName}: ${err instanceof Error ? err.message : String(err)}`);
234
+ return [];
235
+ }
236
+ }));
237
+ // Merge and sort. All-day events (a bare date) sort before timed events on
238
+ // the same day, which is what a reader expects.
239
+ const events = perCalendar.flat().sort((a, b) => a.start.localeCompare(b.start));
240
+ const response = formatAgenda(events, window);
241
+ if (failures.length > 0) {
242
+ response.text += `\n\n> ⚠ ${failures.length} calendar(s) could not be read:\n` +
243
+ failures.map((f) => `> - ${f}`).join('\n');
244
+ response.refs = { ...response.refs, unreadableCalendars: failures };
245
+ }
246
+ return response;
149
247
  },
150
248
  freebusy: async (params, account) => {
151
249
  const timeMin = requireString(params, 'timeMin');
@@ -167,30 +265,47 @@ export const calendarPatch = {
167
265
  addItem(id);
168
266
  }
169
267
  }
170
- const body = { timeMin, timeMax, items };
171
- const args = ['calendar', 'freebusy', 'query', '--json', JSON.stringify(body)];
172
- const result = await execute(args, { account });
173
- return formatFreeBusy(result.data, { operation: 'freebusy', params, account });
268
+ const data = await call('calendar', 'freebusy.query', { timeMin, timeMax, items }, { account });
269
+ return formatFreeBusy(data, { operation: 'freebusy', params, account });
174
270
  },
175
271
  create: async (params, account) => {
176
272
  const summary = requireString(params, 'summary');
177
273
  const start = requireString(params, 'start');
178
274
  const end = requireString(params, 'end');
179
275
  const calendarId = params.calendarId || 'primary';
180
- const args = ['calendar', '+insert', '--calendar', calendarId, '--summary', summary, '--start', start, '--end', end];
276
+ // Attendees are an ARRAY OF OBJECTS in the event body, not a repeated scalar.
277
+ const body = {
278
+ calendarId,
279
+ summary,
280
+ start: { dateTime: start },
281
+ end: { dateTime: end },
282
+ };
181
283
  if (params.description)
182
- args.push('--description', String(params.description));
284
+ body.description = String(params.description);
183
285
  if (params.location)
184
- args.push('--location', String(params.location));
185
- // `gws calendar +insert` expects `--attendee` (singular) — the CLI accepts the flag repeatedly,
186
- // but a single comma-separated value also works. Using `--attendees` (plural) errors out at the
187
- // CLI layer with "unexpected argument '--attendees' found; tip: a similar argument exists: '--attendee'".
188
- if (params.attendees)
189
- args.push('--attendee', String(params.attendees));
190
- if (params.meet)
191
- args.push('--meet');
192
- const result = await execute(args, { account });
193
- const data = result.data;
286
+ body.location = String(params.location);
287
+ if (params.attendees) {
288
+ body.attendees = String(params.attendees)
289
+ .split(',').map((e) => e.trim()).filter(Boolean)
290
+ .map((email) => ({ email }));
291
+ }
292
+ if (params.meet) {
293
+ // Ask Google to mint a Meet link. `requestId` is an IDEMPOTENCY KEY: reuse
294
+ // it and Google reuses the conference instead of creating a second one.
295
+ // Derive it deterministically from the event fields so a retried create
296
+ // cannot double-book.
297
+ const fingerprint = createHash('sha256')
298
+ .update(JSON.stringify({ calendarId, summary, start, end, location: params.location ?? '' }))
299
+ .digest('hex').slice(0, 32);
300
+ body.conferenceData = {
301
+ createRequest: {
302
+ requestId: fingerprint,
303
+ conferenceSolutionKey: { type: 'hangoutsMeet' },
304
+ },
305
+ };
306
+ body.conferenceDataVersion = 1; // required, or Google ignores conferenceData entirely
307
+ }
308
+ const data = await call('calendar', 'events.insert', body, { account });
194
309
  const meetLink = params.meet ? ' (with Google Meet)' : '';
195
310
  return {
196
311
  text: `Event created: **${summary}**${meetLink}\n\n` +
@@ -204,10 +319,7 @@ export const calendarPatch = {
204
319
  delete: async (params, account) => {
205
320
  const eventId = requireString(params, 'eventId');
206
321
  const calendarId = params.calendarId || 'primary';
207
- await execute([
208
- 'calendar', 'events', 'delete',
209
- '--params', JSON.stringify({ calendarId, eventId }),
210
- ], { account });
322
+ await call('calendar', 'events.delete', { calendarId, eventId }, { account });
211
323
  return {
212
324
  text: `Event deleted: ${eventId}`,
213
325
  refs: { eventId, status: 'deleted' },
@@ -258,12 +370,10 @@ export const calendarPatch = {
258
370
  if (Object.keys(body).length === 0) {
259
371
  throw new Error('update requires at least one field to change: summary, start, end, description, location, attendees, or meet');
260
372
  }
261
- const result = await execute([
262
- 'calendar', 'events', 'patch',
263
- '--params', JSON.stringify(queryParams),
264
- '--json', JSON.stringify(body),
265
- ], { account });
266
- const data = result.data;
373
+ const data = await call('calendar', 'events.patch', {
374
+ ...queryParams,
375
+ ...body,
376
+ }, { account });
267
377
  const changed = Object.keys(body);
268
378
  const meetLink = data.hangoutLink ? `\n**Meet:** ${data.hangoutLink}` : '';
269
379
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/calendar/patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/calendar/patch.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  /**
2
- * Docs patch — custom handlers for operations that use batchUpdate.
2
+ * Docs patch — custom handlers for operations Google's raw response does not serve.
3
3
  *
4
- * insertText and replaceText use documents.batchUpdate which requires
5
- * a --json request body, not --params.
4
+ * write / insertText / replaceText go through documents.batchUpdate, which needs a
5
+ * request body rather than query parameters.
6
+ *
7
+ * `get` is here for a different reason: see extractText below.
6
8
  */
7
9
  import type { ServicePatch } from '../../factory/types.js';
8
10
  export declare const docsPatch: ServicePatch;
@@ -1,13 +1,92 @@
1
1
  /**
2
- * Docs patch — custom handlers for operations that use batchUpdate.
2
+ * Docs patch — custom handlers for operations Google's raw response does not serve.
3
3
  *
4
- * insertText and replaceText use documents.batchUpdate which requires
5
- * a --json request body, not --params.
4
+ * write / insertText / replaceText go through documents.batchUpdate, which needs a
5
+ * request body rather than query parameters.
6
+ *
7
+ * `get` is here for a different reason: see extractText below.
6
8
  */
7
- import { execute } from '../../executor/gws.js';
9
+ import { call } from '../../google/client.js';
8
10
  import { requireString } from '../../server/handlers/validate.js';
11
+ /**
12
+ * Pull the readable text out of a Docs document.
13
+ *
14
+ * Google returns a document's text buried in
15
+ * `body.content[].paragraph.elements[].textRun.content`, and returns nothing at the
16
+ * top level except title/revisionId/documentId. `get` was a bare resource op, so its
17
+ * response went through the generic formatter, which renders top-level scalars — and
18
+ * dropped the entire document. The tool described itself as "get document content and
19
+ * metadata" and returned only metadata, on every document, with no error.
20
+ *
21
+ * This is the shape of regression ADR-103 predicted: we no longer inherit a CLI's
22
+ * pre-chewed response, so anywhere the raw Google shape is nested, the reshaping has
23
+ * to be ours. `get` was missed.
24
+ *
25
+ * Tables and tables-of-contents nest further `content` arrays, so this recurses rather
26
+ * than assuming a flat list of paragraphs — a doc with a table would otherwise lose
27
+ * everything inside it.
28
+ */
29
+ function extractText(node) {
30
+ if (!node || typeof node !== 'object')
31
+ return '';
32
+ if (Array.isArray(node))
33
+ return node.map(extractText).join('');
34
+ const n = node;
35
+ // A leaf: the actual characters.
36
+ const textRun = n.textRun;
37
+ if (textRun && typeof textRun.content === 'string')
38
+ return textRun.content;
39
+ let out = '';
40
+ for (const key of ['content', 'elements', 'tableRows', 'tableCells', 'paragraph', 'table', 'tableOfContents']) {
41
+ if (key in n)
42
+ out += extractText(n[key]);
43
+ }
44
+ return out;
45
+ }
9
46
  export const docsPatch = {
10
47
  customHandlers: {
48
+ /**
49
+ * Read a document: its metadata AND — the point of the operation — its text.
50
+ */
51
+ get: async (params, account) => {
52
+ const documentId = requireString(params, 'documentId');
53
+ const doc = await call('docs', 'documents.get', { documentId }, { account });
54
+ const title = typeof doc.title === 'string' ? doc.title : '(untitled)';
55
+ const text = extractText(doc.body).replace(/\n{3,}/g, '\n\n').trim();
56
+ const lines = text ? text.split('\n').length : 0;
57
+ return {
58
+ text: `## ${title}\n\n` +
59
+ `**Document ID:** ${documentId}\n` +
60
+ `**Revision:** ${String(doc.revisionId ?? '—')}\n` +
61
+ `**Length:** ${text.length} characters, ${lines} line(s)\n\n` +
62
+ (text ? `---\n\n${text}\n` : '_(the document is empty)_\n'),
63
+ refs: { documentId, title, characters: text.length, lines },
64
+ };
65
+ },
66
+ /**
67
+ * Append text to the end of the body: one documents.batchUpdate carrying a
68
+ * single insertText at `endOfSegmentLocation`. Append-only — no index
69
+ * targeting, no formatting.
70
+ */
71
+ write: async (params, account) => {
72
+ const documentId = requireString(params, 'documentId');
73
+ const text = requireString(params, 'text');
74
+ await call('docs', 'documents.batchUpdate', {
75
+ documentId,
76
+ requests: [{
77
+ insertText: {
78
+ text,
79
+ // An empty segmentId means the document BODY (as opposed to a header
80
+ // or footer), and endOfSegmentLocation means "append".
81
+ endOfSegmentLocation: { segmentId: '' },
82
+ },
83
+ }],
84
+ }, { account });
85
+ return {
86
+ text: `Appended ${text.length} character(s) to the document.\n\n**Document ID:** ${documentId}`,
87
+ refs: { documentId, appended: text.length },
88
+ };
89
+ },
11
90
  insertText: async (params, account) => {
12
91
  const documentId = requireString(params, 'documentId');
13
92
  const text = requireString(params, 'text');
@@ -15,19 +94,15 @@ export const docsPatch = {
15
94
  if (!Number.isInteger(index) || index < 1) {
16
95
  throw new Error('index must be a positive integer (1 = start of document body)');
17
96
  }
18
- const body = {
97
+ await call('docs', 'documents.batchUpdate', {
98
+ documentId,
19
99
  requests: [{
20
100
  insertText: {
21
101
  text,
22
102
  location: { index },
23
103
  },
24
104
  }],
25
- };
26
- await execute([
27
- 'docs', 'documents', 'batchUpdate',
28
- '--params', JSON.stringify({ documentId }),
29
- '--json', JSON.stringify(body),
30
- ], { account });
105
+ }, { account });
31
106
  return {
32
107
  text: `Text inserted at index ${index}.\n\n**Document:** ${documentId}\n**Inserted:** ${text.length} characters`,
33
108
  refs: { documentId, index, length: text.length },
@@ -38,7 +113,8 @@ export const docsPatch = {
38
113
  const findText = requireString(params, 'findText');
39
114
  const replaceWith = requireString(params, 'replaceWith');
40
115
  const matchCase = params.matchCase !== false;
41
- const body = {
116
+ const data = await call('docs', 'documents.batchUpdate', {
117
+ documentId,
42
118
  requests: [{
43
119
  replaceAllText: {
44
120
  containsText: {
@@ -48,14 +124,8 @@ export const docsPatch = {
48
124
  replaceText: replaceWith,
49
125
  },
50
126
  }],
51
- };
52
- const result = await execute([
53
- 'docs', 'documents', 'batchUpdate',
54
- '--params', JSON.stringify({ documentId }),
55
- '--json', JSON.stringify(body),
56
- ], { account });
127
+ }, { account });
57
128
  // Extract occurrence count from the reply
58
- const data = result.data;
59
129
  const replies = data.replies || [];
60
130
  const replaceReply = replies[0]?.replaceAllText;
61
131
  const occurrences = replaceReply?.occurrencesChanged || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/docs/patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,cAAc,EAAE;QACd,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YAC9D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,IAAI,GAAG;gBACX,QAAQ,EAAE,CAAC;wBACT,UAAU,EAAE;4BACV,IAAI;4BACJ,QAAQ,EAAE,EAAE,KAAK,EAAE;yBACpB;qBACF,CAAC;aACH,CAAC;YAEF,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE,WAAW,EAAE,aAAa;gBAClC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC/B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhB,OAAO;gBACL,IAAI,EAAE,0BAA0B,KAAK,sBAAsB,UAAU,mBAAmB,IAAI,CAAC,MAAM,aAAa;gBAChH,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACjD,CAAC;QACJ,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;YAE7C,MAAM,IAAI,GAAG;gBACX,QAAQ,EAAE,CAAC;wBACT,cAAc,EAAE;4BACd,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,SAAS;6BACV;4BACD,WAAW,EAAE,WAAW;yBACzB;qBACF,CAAC;aACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,MAAM,EAAE,WAAW,EAAE,aAAa;gBAClC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC/B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhB,0CAA0C;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B,CAAC;YACpD,MAAM,OAAO,GAAI,IAAI,CAAC,OAA0C,IAAI,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,cAAqD,CAAC;YACvF,MAAM,WAAW,GAAG,YAAY,EAAE,kBAAkB,IAAI,CAAC,CAAC;YAE1D,OAAO;gBACL,IAAI,EAAE,mCAAmC,UAAU,iBAAiB,QAAQ,0BAA0B,WAAW,uBAAuB,WAAW,EAAE;gBACrJ,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;aAClC,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/services/docs/patch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/D,MAAM,CAAC,GAAG,IAA+B,CAAC;IAE1C,iCAAiC;IACjC,MAAM,OAAO,GAAG,CAAC,CAAC,OAA4C,CAAC;IAC/D,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAE3E,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC9G,IAAI,GAAG,IAAI,CAAC;YAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,cAAc,EAAE;QACd;;WAEG;QACH,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YACvD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,eAAe,EAC5C,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAA4B,CAAC;YAE1D,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;YACvE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjD,OAAO;gBACL,IAAI,EACF,MAAM,KAAK,MAAM;oBACjB,oBAAoB,UAAU,IAAI;oBAClC,iBAAiB,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI;oBAClD,eAAe,IAAI,CAAC,MAAM,gBAAgB,KAAK,cAAc;oBAC7D,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC;gBAC7D,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;aAC5D,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YACzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAE3C,MAAM,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE;gBAC1C,UAAU;gBACV,QAAQ,EAAE,CAAC;wBACT,UAAU,EAAE;4BACV,IAAI;4BACJ,qEAAqE;4BACrE,uDAAuD;4BACvD,oBAAoB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;yBACxC;qBACF,CAAC;aACH,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhB,OAAO;gBACL,IAAI,EAAE,YAAY,IAAI,CAAC,MAAM,sDAAsD,UAAU,EAAE;gBAC/F,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;aAC5C,CAAC;QACJ,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YAC9D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE;gBAC1C,UAAU;gBACV,QAAQ,EAAE,CAAC;wBACT,UAAU,EAAE;4BACV,IAAI;4BACJ,QAAQ,EAAE,EAAE,KAAK,EAAE;yBACpB;qBACF,CAAC;aACH,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhB,OAAO;gBACL,IAAI,EAAE,0BAA0B,KAAK,sBAAsB,UAAU,mBAAmB,IAAI,CAAC,MAAM,aAAa;gBAChH,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACjD,CAAC;QACJ,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE;YAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;YAE7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE;gBACvD,UAAU;gBACV,QAAQ,EAAE,CAAC;wBACT,cAAc,EAAE;4BACd,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,SAAS;6BACV;4BACD,WAAW,EAAE,WAAW;yBACzB;qBACF,CAAC;aACH,EAAE,EAAE,OAAO,EAAE,CAA4B,CAAC;YAE3C,0CAA0C;YAC1C,MAAM,OAAO,GAAI,IAAI,CAAC,OAA0C,IAAI,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,cAAqD,CAAC;YACvF,MAAM,WAAW,GAAG,YAAY,EAAE,kBAAkB,IAAI,CAAC,CAAC;YAE1D,OAAO;gBACL,IAAI,EAAE,mCAAmC,UAAU,iBAAiB,QAAQ,0BAA0B,WAAW,uBAAuB,WAAW,EAAE;gBACrJ,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;aAClC,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Key customizations:
5
5
  * - Custom formatters for file lists and details
6
6
  * - Upload: custom handler with positional file path arg
7
- * - Download/Export: save to workspace via gws --output, return inline for text
7
+ * - Download/Export: stream to the workspace, return inline for text
8
8
  */
9
9
  import type { ServicePatch } from '../../factory/types.js';
10
10
  export declare const drivePatch: ServicePatch;