@aaronsb/google-workspace-mcp 2.6.0 → 2.7.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.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/build/__tests__/factory/calendar-patch.test.js +79 -0
  3. package/build/__tests__/factory/calendar-patch.test.js.map +1 -1
  4. package/build/__tests__/factory/drive-patch.test.js +224 -0
  5. package/build/__tests__/factory/drive-patch.test.js.map +1 -1
  6. package/build/__tests__/factory/sheets-patch.test.js +71 -6
  7. package/build/__tests__/factory/sheets-patch.test.js.map +1 -1
  8. package/build/__tests__/server/formatting/html-sanitize.test.d.ts +7 -0
  9. package/build/__tests__/server/formatting/html-sanitize.test.js +174 -0
  10. package/build/__tests__/server/formatting/html-sanitize.test.js.map +1 -0
  11. package/build/__tests__/server/formatting/markdown.test.js +55 -0
  12. package/build/__tests__/server/formatting/markdown.test.js.map +1 -1
  13. package/build/__tests__/server/handlers/calendar.test.js +2 -1
  14. package/build/__tests__/server/handlers/calendar.test.js.map +1 -1
  15. package/build/executor/gws.js +41 -20
  16. package/build/executor/gws.js.map +1 -1
  17. package/build/factory/generator.d.ts +11 -3
  18. package/build/factory/generator.js +41 -16
  19. package/build/factory/generator.js.map +1 -1
  20. package/build/factory/manifest/README.md +12 -0
  21. package/build/factory/manifest/calendar.yaml +204 -0
  22. package/build/factory/manifest/docs.yaml +77 -0
  23. package/build/factory/manifest/drive.yaml +314 -0
  24. package/build/factory/manifest/gmail.yaml +272 -0
  25. package/build/factory/manifest/meet.yaml +159 -0
  26. package/build/factory/manifest/sheets.yaml +225 -0
  27. package/build/factory/manifest/tasks.yaml +137 -0
  28. package/build/factory/registry.d.ts +3 -3
  29. package/build/factory/registry.js +5 -5
  30. package/build/factory/registry.js.map +1 -1
  31. package/build/factory/types.d.ts +6 -0
  32. package/build/server/formatting/html-sanitize.d.ts +40 -0
  33. package/build/server/formatting/html-sanitize.js +146 -0
  34. package/build/server/formatting/html-sanitize.js.map +1 -0
  35. package/build/server/formatting/markdown.d.ts +13 -3
  36. package/build/server/formatting/markdown.js +33 -6
  37. package/build/server/formatting/markdown.js.map +1 -1
  38. package/build/server/handlers/calendar.js +1 -1
  39. package/build/server/handlers/calendar.js.map +1 -1
  40. package/build/server/scratchpad/__tests__/docs-sync-integration.test.d.ts +11 -0
  41. package/build/server/scratchpad/__tests__/docs-sync-integration.test.js +187 -0
  42. package/build/server/scratchpad/__tests__/docs-sync-integration.test.js.map +1 -0
  43. package/build/server/scratchpad/__tests__/docs-sync.test.d.ts +16 -0
  44. package/build/server/scratchpad/__tests__/docs-sync.test.js +213 -0
  45. package/build/server/scratchpad/__tests__/docs-sync.test.js.map +1 -0
  46. package/build/server/scratchpad/adapters/import-doc.js +6 -3
  47. package/build/server/scratchpad/adapters/import-doc.js.map +1 -1
  48. package/build/server/scratchpad/adapters/send-calendar.js +1 -1
  49. package/build/server/scratchpad/adapters/send-calendar.js.map +1 -1
  50. package/build/server/scratchpad/docs-sync.d.ts +65 -0
  51. package/build/server/scratchpad/docs-sync.js +191 -0
  52. package/build/server/scratchpad/docs-sync.js.map +1 -0
  53. package/build/server/scratchpad/handler.js +95 -14
  54. package/build/server/scratchpad/handler.js.map +1 -1
  55. package/build/server/scratchpad/manager.d.ts +7 -0
  56. package/build/server/scratchpad/manager.js.map +1 -1
  57. package/build/services/calendar/patch.js +72 -1
  58. package/build/services/calendar/patch.js.map +1 -1
  59. package/build/services/drive/patch.js +170 -0
  60. package/build/services/drive/patch.js.map +1 -1
  61. package/build/services/gmail/patch.js +7 -2
  62. package/build/services/gmail/patch.js.map +1 -1
  63. package/build/services/sheets/patch.js +57 -6
  64. package/build/services/sheets/patch.js.map +1 -1
  65. package/build/version.d.ts +1 -1
  66. package/build/version.js +1 -1
  67. package/package.json +4 -2
  68. package/build/factory/manifest.yaml +0 -1383
package/README.md CHANGED
@@ -30,8 +30,8 @@ Every response includes **next-steps** guidance — the agent always knows what
30
30
 
31
31
  ```
32
32
  ┌─────────────────────────┐
33
- MCP Client ──stdio──▶ │ manifest.yaml
34
- │ (52 operations declared)
33
+ MCP Client ──stdio──▶ │ manifest/*.yaml
34
+ │ (one file per service)
35
35
  └────────┬────────────────┘
36
36
 
37
37
  ┌────────▼────────────────┐
@@ -185,6 +185,85 @@ describe('calendarPatch', () => {
185
185
  const result = await calendarPatch.customHandlers.create({ summary: 'X', start: 'Y', end: 'Z' }, 'user@test.com');
186
186
  expect(result.refs.calendarId).toBe('primary');
187
187
  });
188
+ it('passes attendees via --attendee (singular) — gws rejects the plural form', async () => {
189
+ mockExecute.mockResolvedValue(mockGwsResponse(calendarInsertResponse));
190
+ await calendarPatch.customHandlers.create({ summary: 'X', start: 'Y', end: 'Z', attendees: 'a@b.com,c@d.com' }, 'user@test.com');
191
+ const args = mockExecute.mock.calls[0][0];
192
+ expect(args).toContain('--attendee');
193
+ expect(args).not.toContain('--attendees');
194
+ const idx = args.indexOf('--attendee');
195
+ expect(args[idx + 1]).toBe('a@b.com,c@d.com');
196
+ });
197
+ });
198
+ describe('update custom handler', () => {
199
+ it('requires eventId', async () => {
200
+ await expect(calendarPatch.customHandlers.update({ summary: 'X' }, 'user@test.com')).rejects.toThrow('eventId');
201
+ });
202
+ it('rejects updates with no fields to change', async () => {
203
+ await expect(calendarPatch.customHandlers.update({ eventId: 'evt-1' }, 'user@test.com')).rejects.toThrow('at least one field');
204
+ });
205
+ it('routes via events.patch with --params and --json', async () => {
206
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1', summary: 'New title' }));
207
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', summary: 'New title' }, 'user@test.com');
208
+ const args = mockExecute.mock.calls[0][0];
209
+ expect(args.slice(0, 3)).toEqual(['calendar', 'events', 'patch']);
210
+ expect(args).toContain('--params');
211
+ expect(args).toContain('--json');
212
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
213
+ expect(queryParams).toEqual({ calendarId: 'primary', eventId: 'evt-1' });
214
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
215
+ expect(body).toEqual({ summary: 'New title' });
216
+ });
217
+ it('maps start and end to dateTime objects', async () => {
218
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1' }));
219
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', start: '2026-05-01T10:00:00Z', end: '2026-05-01T11:00:00Z' }, 'user@test.com');
220
+ const args = mockExecute.mock.calls[0][0];
221
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
222
+ expect(body.start).toEqual({ dateTime: '2026-05-01T10:00:00Z' });
223
+ expect(body.end).toEqual({ dateTime: '2026-05-01T11:00:00Z' });
224
+ });
225
+ it('converts comma-separated attendees string into array of {email}', async () => {
226
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1' }));
227
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', attendees: 'a@b.com, c@d.com , e@f.com' }, 'user@test.com');
228
+ const args = mockExecute.mock.calls[0][0];
229
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
230
+ expect(body.attendees).toEqual([
231
+ { email: 'a@b.com' },
232
+ { email: 'c@d.com' },
233
+ { email: 'e@f.com' },
234
+ ]);
235
+ });
236
+ it('clears attendees when attendees is an empty string', async () => {
237
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1' }));
238
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', attendees: '' }, 'user@test.com');
239
+ const args = mockExecute.mock.calls[0][0];
240
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
241
+ expect(body.attendees).toEqual([]);
242
+ });
243
+ it('adds conferenceData + conferenceDataVersion=1 when meet: true', async () => {
244
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1', hangoutLink: 'https://meet.google.com/abc' }));
245
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', meet: true }, 'user@test.com');
246
+ const args = mockExecute.mock.calls[0][0];
247
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
248
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
249
+ expect(queryParams.conferenceDataVersion).toBe(1);
250
+ expect(body.conferenceData).toBeDefined();
251
+ expect(body.conferenceData.createRequest.conferenceSolutionKey.type).toBe('hangoutsMeet');
252
+ });
253
+ it('honors explicit calendarId', async () => {
254
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1' }));
255
+ await calendarPatch.customHandlers.update({ eventId: 'evt-1', summary: 'X', calendarId: 'shared@test.com' }, 'user@test.com');
256
+ const args = mockExecute.mock.calls[0][0];
257
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
258
+ expect(queryParams.calendarId).toBe('shared@test.com');
259
+ });
260
+ it('lists changed fields in response text and refs', async () => {
261
+ mockExecute.mockResolvedValue(mockGwsResponse({ id: 'evt-1', summary: 'New' }));
262
+ const result = await calendarPatch.customHandlers.update({ eventId: 'evt-1', summary: 'New', location: 'Room B' }, 'user@test.com');
263
+ expect(result.text).toContain('summary');
264
+ expect(result.text).toContain('location');
265
+ expect(result.refs.changed).toEqual(['summary', 'location']);
266
+ });
188
267
  });
189
268
  });
190
269
  //# sourceMappingURL=calendar-patch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-patch.test.js","sourceRoot":"","sources":["../../../src/__tests__/factory/calendar-patch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar-patch.test.js","sourceRoot":"","sources":["../../../src/__tests__/factory/calendar-patch.test.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,230 @@ describe('drivePatch custom handlers', () => {
92
92
  expect(mockExecute).toHaveBeenCalledTimes(2);
93
93
  });
94
94
  });
95
+ describe('share', () => {
96
+ it('sends type + role + emailAddress as JSON body, not via --params', async () => {
97
+ mockExecute.mockResolvedValueOnce({
98
+ success: true,
99
+ data: { id: 'perm-1', emailAddress: 'bob@test.com', role: 'reader', type: 'user' },
100
+ stderr: '',
101
+ });
102
+ const handler = drivePatch.customHandlers.share;
103
+ await handler({ fileId: 'file-1', shareEmail: 'bob@test.com', role: 'reader' }, 'user@test.com');
104
+ const args = mockExecute.mock.calls[0][0];
105
+ expect(args.slice(0, 3)).toEqual(['drive', 'permissions', 'create']);
106
+ expect(args).toContain('--json');
107
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
108
+ // type MUST be in the body — omitting it caused
109
+ // "The permission type field is required." on every share call.
110
+ expect(body.type).toBe('user');
111
+ expect(body.role).toBe('reader');
112
+ expect(body.emailAddress).toBe('bob@test.com');
113
+ // --params should only carry query params, not the permission body.
114
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
115
+ expect(queryParams.fileId).toBe('file-1');
116
+ expect(queryParams.type).toBeUndefined();
117
+ expect(queryParams.role).toBeUndefined();
118
+ });
119
+ it("defaults type to 'user' when not provided", async () => {
120
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'perm-1' }, stderr: '' });
121
+ const handler = drivePatch.customHandlers.share;
122
+ await handler({ fileId: 'file-1', shareEmail: 'bob@test.com' }, 'user@test.com');
123
+ const args = mockExecute.mock.calls[0][0];
124
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
125
+ expect(body.type).toBe('user');
126
+ expect(body.role).toBe('reader'); // default from manifest flows through
127
+ });
128
+ it('rejects user/group share without shareEmail', async () => {
129
+ const handler = drivePatch.customHandlers.share;
130
+ await expect(handler({ fileId: 'file-1' }, 'user@test.com')).rejects.toThrow('shareEmail');
131
+ await expect(handler({ fileId: 'file-1', type: 'group' }, 'user@test.com')).rejects.toThrow('shareEmail');
132
+ });
133
+ it("uses domain field when type is 'domain'", async () => {
134
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'perm-1' }, stderr: '' });
135
+ const handler = drivePatch.customHandlers.share;
136
+ await handler({ fileId: 'file-1', type: 'domain', domain: 'acme.com', role: 'writer' }, 'user@test.com');
137
+ const args = mockExecute.mock.calls[0][0];
138
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
139
+ expect(body.type).toBe('domain');
140
+ expect(body.domain).toBe('acme.com');
141
+ expect(body.emailAddress).toBeUndefined();
142
+ });
143
+ it("requires domain when type is 'domain'", async () => {
144
+ const handler = drivePatch.customHandlers.share;
145
+ await expect(handler({ fileId: 'file-1', type: 'domain' }, 'user@test.com')).rejects.toThrow('domain');
146
+ });
147
+ it("accepts type 'anyone' with no target", async () => {
148
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'perm-1' }, stderr: '' });
149
+ const handler = drivePatch.customHandlers.share;
150
+ await handler({ fileId: 'file-1', type: 'anyone', role: 'reader' }, 'user@test.com');
151
+ const args = mockExecute.mock.calls[0][0];
152
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
153
+ expect(body.type).toBe('anyone');
154
+ expect(body.emailAddress).toBeUndefined();
155
+ expect(body.domain).toBeUndefined();
156
+ });
157
+ it('suppresses email notifications by default for user/group shares', async () => {
158
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'perm-1' }, stderr: '' });
159
+ const handler = drivePatch.customHandlers.share;
160
+ await handler({ fileId: 'file-1', shareEmail: 'bob@test.com' }, 'user@test.com');
161
+ const args = mockExecute.mock.calls[0][0];
162
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
163
+ expect(queryParams.sendNotificationEmail).toBe(false);
164
+ });
165
+ });
166
+ describe('listPermissions', () => {
167
+ it('hits permissions.list and requests the fields the API omits by default', async () => {
168
+ mockExecute.mockResolvedValueOnce({
169
+ success: true,
170
+ data: {
171
+ permissions: [
172
+ { id: 'owner-perm', type: 'user', role: 'owner', emailAddress: 'me@test.com' },
173
+ { id: 'reader-perm', type: 'user', role: 'reader', emailAddress: 'bob@test.com' },
174
+ ],
175
+ },
176
+ stderr: '',
177
+ });
178
+ const handler = drivePatch.customHandlers.listPermissions;
179
+ const result = await handler({ fileId: 'file-1' }, 'me@test.com');
180
+ const args = mockExecute.mock.calls[0][0];
181
+ expect(args.slice(0, 3)).toEqual(['drive', 'permissions', 'list']);
182
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
183
+ expect(queryParams.fileId).toBe('file-1');
184
+ // Without an explicit fields mask the Drive API returns only id/type — not
185
+ // role or emailAddress — which made the listing useless.
186
+ expect(queryParams.fields).toContain('role');
187
+ expect(queryParams.fields).toContain('emailAddress');
188
+ expect(result.text).toContain('Permissions on file-1 (2)');
189
+ expect(result.text).toContain('owner-perm | owner | user | me@test.com');
190
+ expect(result.text).toContain('reader-perm | reader | user | bob@test.com');
191
+ expect(result.refs.count).toBe(2);
192
+ // A list has no canonical "the" permission — no singular permissionId ref.
193
+ expect(result.refs.permissionId).toBeUndefined();
194
+ expect(result.refs.permissions).toEqual([
195
+ { permissionId: 'owner-perm', type: 'user', role: 'owner', target: 'me@test.com' },
196
+ { permissionId: 'reader-perm', type: 'user', role: 'reader', target: 'bob@test.com' },
197
+ ]);
198
+ });
199
+ it('reports an empty permission list without claiming "No files found"', async () => {
200
+ mockExecute.mockResolvedValueOnce({ success: true, data: { permissions: [] }, stderr: '' });
201
+ const handler = drivePatch.customHandlers.listPermissions;
202
+ const result = await handler({ fileId: 'file-2' }, 'me@test.com');
203
+ expect(result.text).toContain('No sharing permissions on file file-2');
204
+ expect(result.text).not.toContain('No files found');
205
+ expect(result.refs.count).toBe(0);
206
+ expect(result.refs.permissions).toEqual([]);
207
+ });
208
+ it('labels anyone-with-link, pending-owner, deleted, and domain/displayName targets', async () => {
209
+ mockExecute.mockResolvedValueOnce({
210
+ success: true,
211
+ data: {
212
+ permissions: [
213
+ { id: 'anyone-perm', type: 'anyone', role: 'reader' },
214
+ { id: 'pending-perm', type: 'user', role: 'writer', emailAddress: 'new@test.com', pendingOwner: true },
215
+ { id: 'domain-perm', type: 'domain', role: 'reader', domain: 'acme.com' },
216
+ { id: 'group-perm', type: 'group', role: 'commenter', displayName: 'Eng Team' },
217
+ { id: 'gone-perm', type: 'user', role: 'reader', emailAddress: 'old@test.com', deleted: true },
218
+ ],
219
+ },
220
+ stderr: '',
221
+ });
222
+ const handler = drivePatch.customHandlers.listPermissions;
223
+ const result = await handler({ fileId: 'file-3' }, 'me@test.com');
224
+ expect(result.text).toContain('anyone-perm | reader | anyone | anyone with the link');
225
+ expect(result.text).toContain('[pending owner]');
226
+ expect(result.text).toContain('domain-perm | reader | domain | acme.com');
227
+ expect(result.text).toContain('group-perm | commenter | group | Eng Team');
228
+ expect(result.text).toContain('gone-perm | reader | user | old@test.com [deleted account]');
229
+ });
230
+ });
231
+ describe('copy', () => {
232
+ it('sends name as the request body, not via --params, so the copy is renamed', async () => {
233
+ mockExecute.mockResolvedValueOnce({
234
+ success: true,
235
+ data: { id: 'copy-1', name: 'My New Name', mimeType: 'application/vnd.google-apps.spreadsheet' },
236
+ stderr: '',
237
+ });
238
+ const handler = drivePatch.customHandlers.copy;
239
+ const result = await handler({ fileId: 'src-1', name: 'My New Name' }, 'user@test.com');
240
+ const args = mockExecute.mock.calls[0][0];
241
+ expect(args.slice(0, 3)).toEqual(['drive', 'files', 'copy']);
242
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
243
+ expect(body.name).toBe('My New Name');
244
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
245
+ expect(queryParams.fileId).toBe('src-1');
246
+ // name must NOT leak into the query — that's the bug being fixed.
247
+ expect(queryParams.name).toBeUndefined();
248
+ expect(result.text).toContain('File copied: **My New Name**');
249
+ expect(result.text).toContain('**File ID:** copy-1');
250
+ expect(result.refs.fileId).toBe('copy-1');
251
+ expect(result.refs.sourceFileId).toBe('src-1');
252
+ });
253
+ it('forwards parentFolderId as body.parents', async () => {
254
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'copy-2', name: 'Copy of X', parents: ['folder-9'] }, stderr: '' });
255
+ const handler = drivePatch.customHandlers.copy;
256
+ await handler({ fileId: 'src-2', parentFolderId: 'folder-9' }, 'user@test.com');
257
+ const args = mockExecute.mock.calls[0][0];
258
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
259
+ expect(body.parents).toEqual(['folder-9']);
260
+ });
261
+ it('omits --json entirely when neither name nor parentFolderId is given', async () => {
262
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'copy-3', name: 'Copy of X' }, stderr: '' });
263
+ const handler = drivePatch.customHandlers.copy;
264
+ await handler({ fileId: 'src-3' }, 'user@test.com');
265
+ const args = mockExecute.mock.calls[0][0];
266
+ expect(args).not.toContain('--json');
267
+ });
268
+ });
269
+ describe('update', () => {
270
+ it('renames via the request body and surfaces the new name', async () => {
271
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'file-1', name: 'Renamed.pdf', parents: ['root'] }, stderr: '' });
272
+ const handler = drivePatch.customHandlers.update;
273
+ const result = await handler({ fileId: 'file-1', name: 'Renamed.pdf' }, 'user@test.com');
274
+ const args = mockExecute.mock.calls[0][0];
275
+ expect(args.slice(0, 3)).toEqual(['drive', 'files', 'update']);
276
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
277
+ expect(body.name).toBe('Renamed.pdf');
278
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
279
+ expect(queryParams.name).toBeUndefined();
280
+ expect(result.text).toContain('File updated: **Renamed.pdf**');
281
+ expect(result.refs.name).toBe('Renamed.pdf');
282
+ });
283
+ it('moves between folders via addParents/removeParents query params (no body)', async () => {
284
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'file-2', name: 'doc', parents: ['new-folder'] }, stderr: '' });
285
+ const handler = drivePatch.customHandlers.update;
286
+ await handler({ fileId: 'file-2', addParents: 'new-folder', removeParents: 'old-folder' }, 'user@test.com');
287
+ const args = mockExecute.mock.calls[0][0];
288
+ expect(args).not.toContain('--json'); // nothing to put in the body
289
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
290
+ expect(queryParams.addParents).toBe('new-folder');
291
+ expect(queryParams.removeParents).toBe('old-folder');
292
+ });
293
+ it('rename + move in one call populates both --json (name) and --params (parents)', async () => {
294
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'file-4', name: 'Moved.pdf', parents: ['dest'] }, stderr: '' });
295
+ const handler = drivePatch.customHandlers.update;
296
+ const result = await handler({ fileId: 'file-4', name: 'Moved.pdf', addParents: 'dest', removeParents: 'src' }, 'user@test.com');
297
+ const args = mockExecute.mock.calls[0][0];
298
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
299
+ expect(body.name).toBe('Moved.pdf');
300
+ const queryParams = JSON.parse(args[args.indexOf('--params') + 1]);
301
+ expect(queryParams.addParents).toBe('dest');
302
+ expect(queryParams.removeParents).toBe('src');
303
+ expect(result.text).toContain('File updated: **Moved.pdf**');
304
+ expect(result.text).toContain('**Parents:** dest');
305
+ expect(result.refs.parents).toEqual(['dest']);
306
+ });
307
+ it('omits refs.parents when the API response has none', async () => {
308
+ mockExecute.mockResolvedValueOnce({ success: true, data: { id: 'file-5', name: 'R.pdf' }, stderr: '' });
309
+ const handler = drivePatch.customHandlers.update;
310
+ const result = await handler({ fileId: 'file-5', name: 'R.pdf' }, 'user@test.com');
311
+ expect('parents' in result.refs).toBe(false);
312
+ });
313
+ it('rejects a no-op update (none of name/addParents/removeParents)', async () => {
314
+ const handler = drivePatch.customHandlers.update;
315
+ await expect(handler({ fileId: 'file-3' }, 'user@test.com')).rejects.toThrow(/name.*addParents.*removeParents/);
316
+ expect(mockExecute).not.toHaveBeenCalled();
317
+ });
318
+ });
95
319
  describe('download', () => {
96
320
  it('creates parent directories before calling gws', async () => {
97
321
  const outputPath = path.join(tmpWorkspace, 'images', 'photo.png');
@@ -1 +1 @@
1
- {"version":3,"file":"drive-patch.test.js","sourceRoot":"","sources":["../../../src/__tests__/factory/drive-patch.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,uCAAuC;AACvC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,wCAAwC;AACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtE,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;IAC5C,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtF,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;CAC1C,CAAC,CAAC,CAAC;AAEJ,iDAAiD;AACjD,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/B,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACjC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;IACrD,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACpC,uBAAuB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;CAC7C,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,MAAM,WAAW,GAAG,OAA8C,CAAC;AAEnE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,WAAW,CAAC,SAAS,EAAE,CAAC;QACxB,0DAA0D;QAC1D,MAAM,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAEnE,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACvE,oBAAkC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEhE,gCAAgC;YAChC,sDAAsD;YACtD,WAAW;iBACR,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBACnF,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACjC,gEAAgE;gBAChE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,UAAU,CAAC,cAAe,CAAC,MAAO,CAAC;YACnD,MAAM,OAAO,CACX,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAC7E,eAAe,CAChB,CAAC;YAEF,mEAAmE;YACnE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAExE,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACvE,oBAAkC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEhE,iEAAiE;YACjE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhC,WAAW;iBACR,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBAC3E,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACjC,iEAAiE;gBACjE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,UAAU,CAAC,cAAe,CAAC,MAAO,CAAC;YACnD,MAAM,OAAO,CACX,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAC5C,eAAe,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAEtD,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACvE,oBAAkC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEhE,WAAW;iBACR,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBAC3E,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACjC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;gBAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,UAAU,CAAC,cAAe,CAAC,MAAO,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EACjD,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAElE,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACvE,oBAAkC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEhE,mDAAmD;YACnD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhC,WAAW;iBACR,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBACxG,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACjC,4CAA4C;gBAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,UAAU,CAAC,cAAe,CAAC,QAAS,CAAC;YACrD,MAAM,OAAO,CACX,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,EACnD,eAAe,CAChB,CAAC;YAEF,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"drive-patch.test.js","sourceRoot":"","sources":["../../../src/__tests__/factory/drive-patch.test.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ const ctx = (operation) => ({
13
13
  account: 'user@test.com',
14
14
  });
15
15
  describe('sheetsPatch formatDetail', () => {
16
- it('read renders the values array as a markdown table', () => {
16
+ it('read renders the values array with sheet row-number prefixes', () => {
17
17
  const data = {
18
18
  range: "'Clean Logs'!A1:C2",
19
19
  majorDimension: 'ROWS',
@@ -24,16 +24,42 @@ describe('sheetsPatch formatDetail', () => {
24
24
  };
25
25
  const res = sheetsPatch.formatDetail(data, ctx('read'));
26
26
  expect(res.text).toContain("'Clean Logs'!A1:C2");
27
- expect(res.text).toContain('Date | Level | Message');
28
- expect(res.text).toContain('2026-04-15 | INFO | started');
27
+ expect(res.text).toContain('R1: Date | Level | Message');
28
+ expect(res.text).toContain('R2: 2026-04-15 | INFO | started');
29
29
  expect(res.text).toContain('**Rows:** 2');
30
30
  expect(res.text).toContain('**Columns:** 3');
31
31
  expect(res.refs.values).toEqual(data.values);
32
32
  expect(res.refs.rowCount).toBe(2);
33
+ expect(res.refs.startRow).toBe(1);
33
34
  });
34
- it('getValues uses the same values renderer', () => {
35
+ it('numbers rows from the start of the requested range, not from 1', () => {
36
+ // The Sheets API omits leading-blank rows from `values`; the response
37
+ // `range` is what tells you where row 1 of the array actually sits.
38
+ const res = sheetsPatch.formatDetail({
39
+ range: "'Invoice'!G2:H4",
40
+ majorDimension: 'ROWS',
41
+ values: [['4/20/2026', ''], ['Aaron Bockelie', ''], ['', '$1,234']],
42
+ }, ctx('read'));
43
+ expect(res.text).toContain('R2: 4/20/2026 |');
44
+ expect(res.text).toContain('R3: Aaron Bockelie |');
45
+ expect(res.text).toContain('R4: | $1,234');
46
+ expect(res.refs.startRow).toBe(2);
47
+ });
48
+ it('renders a fully-blank row as a bare Rn: so it is visible', () => {
49
+ const res = sheetsPatch.formatDetail({ range: 'Sheet1!A1:B3', majorDimension: 'ROWS', values: [[], [], ['data', 'here']] }, ctx('getValues'));
50
+ expect(res.text).toContain('R1:\n');
51
+ expect(res.text).toContain('R2:\n');
52
+ expect(res.text).toContain('R3: data | here');
53
+ });
54
+ it('pads row numbers so the colons line up across digit widths', () => {
55
+ const values = Array.from({ length: 11 }, (_, i) => [`v${i + 1}`]);
56
+ const res = sheetsPatch.formatDetail({ range: 'Sheet1!A1:A11', majorDimension: 'ROWS', values }, ctx('read'));
57
+ expect(res.text).toContain('R 1: v1');
58
+ expect(res.text).toContain('R11: v11');
59
+ });
60
+ it('getValues uses the same row-prefixed renderer', () => {
35
61
  const res = sheetsPatch.formatDetail({ range: 'Sheet1!A1:B1', majorDimension: 'ROWS', values: [['a', 'b']] }, ctx('getValues'));
36
- expect(res.text).toContain('a | b');
62
+ expect(res.text).toContain('R1: a | b');
37
63
  });
38
64
  it('read handles empty range gracefully', () => {
39
65
  const res = sheetsPatch.formatDetail({ range: 'Sheet1!A1:A1', majorDimension: 'ROWS' }, ctx('read'));
@@ -42,7 +68,7 @@ describe('sheetsPatch formatDetail', () => {
42
68
  });
43
69
  it('escapes pipe characters so they do not break the table', () => {
44
70
  const res = sheetsPatch.formatDetail({ range: 'S!A1', majorDimension: 'ROWS', values: [['a|b', 'c']] }, ctx('read'));
45
- expect(res.text).toContain('a\\|b | c');
71
+ expect(res.text).toContain('R1: a\\|b | c');
46
72
  });
47
73
  it('get renders spreadsheet metadata including sheet tabs', () => {
48
74
  const data = {
@@ -99,6 +125,45 @@ describe('sheetsPatch formatAction', () => {
99
125
  expect(res.refs.updatedRange).toBe('Sheet1!A5:C5');
100
126
  });
101
127
  });
128
+ describe('sheetsPatch customHandlers.create', () => {
129
+ beforeEach(() => {
130
+ mockExecute.mockReset();
131
+ });
132
+ it('sends title in the request body so the new sheet is named', async () => {
133
+ mockExecute.mockResolvedValueOnce({
134
+ success: true,
135
+ data: {
136
+ spreadsheetId: 'new-1',
137
+ spreadsheetUrl: 'https://docs.google.com/spreadsheets/d/new-1',
138
+ properties: { title: 'Q3 Forecast' },
139
+ sheets: [{ properties: { title: 'Sheet1' } }],
140
+ },
141
+ stderr: '',
142
+ });
143
+ const handler = sheetsPatch.customHandlers.create;
144
+ const res = await handler({ title: 'Q3 Forecast' }, 'user@test.com');
145
+ const args = mockExecute.mock.calls[0][0];
146
+ expect(args.slice(0, 3)).toEqual(['sheets', 'spreadsheets', 'create']);
147
+ const body = JSON.parse(args[args.indexOf('--json') + 1]);
148
+ // title goes under properties.title in the create body — not as a query param.
149
+ expect(body).toEqual({ properties: { title: 'Q3 Forecast' } });
150
+ expect(res.text).toContain('Spreadsheet created: **Q3 Forecast**');
151
+ expect(res.text).toContain('**Spreadsheet ID:** new-1');
152
+ expect(res.refs.spreadsheetId).toBe('new-1');
153
+ expect(res.refs.title).toBe('Q3 Forecast');
154
+ });
155
+ it('omits --json entirely when no title is given (Untitled spreadsheet)', async () => {
156
+ mockExecute.mockResolvedValueOnce({
157
+ success: true,
158
+ data: { spreadsheetId: 'new-2', properties: { title: 'Untitled spreadsheet' }, sheets: [] },
159
+ stderr: '',
160
+ });
161
+ const handler = sheetsPatch.customHandlers.create;
162
+ await handler({}, 'user@test.com');
163
+ const args = mockExecute.mock.calls[0][0];
164
+ expect(args).toEqual(['sheets', 'spreadsheets', 'create']);
165
+ });
166
+ });
102
167
  describe('sheetsPatch customHandlers.updateValues', () => {
103
168
  beforeEach(() => {
104
169
  mockExecute.mockReset();