@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
@@ -3,8 +3,8 @@
3
3
  * Only supports text-based files. Binary files return an error with guidance.
4
4
  */
5
5
  import * as fs from 'node:fs/promises';
6
- import { execute } from '../../../executor/gws.js';
7
- import { ensureWorkspaceDir, resolveWorkspacePath } from '../../../executor/workspace.js';
6
+ import { call, download } from '../../../google/client.js';
7
+ import { ensureWorkspaceDir, resolveWorkspacePath, verifyPathSafety } from '../../../executor/workspace.js';
8
8
  const TEXT_MIME_PREFIXES = ['text/', 'application/json', 'application/xml', 'application/x-yaml'];
9
9
  export async function importDriveFile(scratchpads, scratchpadId, sourceParams) {
10
10
  const { email, fileId } = sourceParams;
@@ -13,11 +13,11 @@ export async function importDriveFile(scratchpads, scratchpadId, sourceParams) {
13
13
  }
14
14
  try {
15
15
  // Get file metadata to check type
16
- const metaResult = await execute([
17
- 'drive', 'files', 'get',
18
- '--params', JSON.stringify({ fileId, fields: 'id,name,mimeType,size' }),
19
- ], { account: email });
20
- const meta = metaResult.data;
16
+ const meta = await call('drive', 'files.get', {
17
+ fileId,
18
+ fields: 'id,name,mimeType,size',
19
+ supportsAllDrives: true,
20
+ }, { account: email });
21
21
  const mimeType = String(meta.mimeType ?? '');
22
22
  const name = String(meta.name ?? fileId);
23
23
  const isText = TEXT_MIME_PREFIXES.some(p => mimeType.startsWith(p));
@@ -27,12 +27,17 @@ export async function importDriveFile(scratchpads, scratchpadId, sourceParams) {
27
27
  refs: { error: true, scratchpadId, fileId, mimeType },
28
28
  };
29
29
  }
30
- // Download to workspace, then read
30
+ // Download to workspace, then read. `alt: 'media'` is what turns files.get from
31
+ // a metadata read into a byte stream. Without it this is a metadata read, and the
32
+ // feature silently returns no bytes.
31
33
  await ensureWorkspaceDir();
32
- await execute([
33
- 'drive', '+download', '--file-id', fileId,
34
- ], { account: email });
35
34
  const filePath = resolveWorkspacePath(name);
35
+ await verifyPathSafety(filePath);
36
+ await download('drive', 'files.get', {
37
+ fileId,
38
+ alt: 'media',
39
+ supportsAllDrives: true,
40
+ }, filePath, { account: email });
36
41
  const content = await fs.readFile(filePath, 'utf-8');
37
42
  const lines = content.split('\n');
38
43
  scratchpads.appendRawLines(scratchpadId, lines);
@@ -1 +1 @@
1
- {"version":3,"file":"import-drive.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-drive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAI1F,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;AAOlG,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAA8B,EAC9B,YAAoB,EACpB,YAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,sDAAsD,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IACjG,CAAC;IAED,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;YAC/B,OAAO,EAAE,OAAO,EAAE,KAAK;YACvB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;SACxE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,UAAU,CAAC,IAA+B,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS,IAAI,QAAQ,QAAQ,6GAA6G;gBAChJ,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;aACtD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,kBAAkB,EAAE,CAAC;QAC3B,MAAM,OAAO,CAAC;YACZ,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM;SAC1C,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEhD,OAAO;YACL,IAAI,EAAE,aAAa,IAAI,MAAM,KAAK,CAAC,MAAM,2BAA2B,YAAY,GAAG;YACnF,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE;SAC5E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,kBAAkB,OAAO,EAAE;YACjC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"import-drive.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-drive.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Extracts plain text body and registers file attachments in the side-table.
4
4
  */
5
5
  import * as fs from 'node:fs/promises';
6
- import { execute } from '../../../executor/gws.js';
6
+ import { call } from '../../../google/client.js';
7
7
  import { ensureWorkspaceDir, resolveWorkspacePath } from '../../../executor/workspace.js';
8
8
  import { extractBodyFromPayload, extractAttachments } from '../../formatting/markdown.js';
9
9
  export async function importEmail(scratchpads, scratchpadId, sourceParams) {
@@ -12,11 +12,7 @@ export async function importEmail(scratchpads, scratchpadId, sourceParams) {
12
12
  return { text: 'email and messageId are required for email import.', refs: { error: true } };
13
13
  }
14
14
  try {
15
- const result = await execute([
16
- 'gmail', 'users', 'messages', 'get',
17
- '--params', JSON.stringify({ userId: 'me', id: messageId }),
18
- ], { account: email });
19
- const msg = result.data;
15
+ const msg = await call('gmail', 'users.messages.get', { userId: 'me', id: messageId }, { account: email });
20
16
  const payload = msg.payload;
21
17
  const body = extractBodyFromPayload(payload);
22
18
  if (!body.trim()) {
@@ -36,15 +32,7 @@ export async function importEmail(scratchpads, scratchpadId, sourceParams) {
36
32
  for (const att of emailAttachments) {
37
33
  try {
38
34
  // Download attachment data
39
- const attResult = await execute([
40
- 'gmail', 'users', 'messages', 'attachments', 'get',
41
- '--params', JSON.stringify({
42
- userId: 'me',
43
- messageId,
44
- id: att.attachmentId,
45
- }),
46
- ], { account: email });
47
- const attData = attResult.data;
35
+ const attData = await call('gmail', 'users.messages.attachments.get', { userId: 'me', messageId, id: att.attachmentId }, { account: email });
48
36
  const base64Data = String(attData.data ?? '');
49
37
  if (!base64Data)
50
38
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"import-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAU1F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAA8B,EAC9B,YAAoB,EACpB,YAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;IACrE,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,oDAAoD,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAC/F,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAClD,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAA4B,CAAC;QAElF,MAAM,OAAO,GAAG,GAAG,CAAC,OAA8C,CAAC;QACnE,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,SAAS,SAAS,4CAA4C,YAAY,aAAa;gBAC7F,IAAI,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEhD,2DAA2D;QAC3D,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,kBAAkB,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACzC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAkB,CAAC,CAAC;YACxE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,kBAAkB,EAAE,CAAC;gBAE3B,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACnC,IAAI,CAAC;wBACH,2BAA2B;wBAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,gCAAgC,EAClE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,EACjD,EAAE,OAAO,EAAE,KAAK,EAAE,CAA4B,CAAC;wBAEjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC9C,IAAI,CAAC,UAAU;4BAAE,SAAS;wBAE1B,8DAA8D;wBAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;wBACpD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAChD,MAAM,YAAY,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAClD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;wBACpD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAErC,yBAAyB;wBACzB,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE;4BAC/B,MAAM,EAAE,QAAQ;4BAChB,QAAQ,EAAE,YAAY;4BACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,IAAI,EAAE,MAAM,CAAC,MAAM;4BACnB,QAAQ,EAAE,QAAQ;yBACnB,CAAC,CAAC;wBACH,QAAQ,EAAE,CAAC;oBACb,CAAC;oBAAC,MAAM,CAAC;wBACP,iDAAiD;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,wBAAwB,KAAK,CAAC,MAAM,UAAU,OAAO,oBAAoB,YAAY,GAAG;YAC9F,IAAI,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE;SAC9F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,kBAAkB,OAAO,EAAE;YACjC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Import adapter: meet — loads a Meet conference transcript into a scratchpad.
3
3
  * Imports as markdown with speaker attribution. No live binding (transcripts are read-only).
4
4
  */
5
- import { execute } from '../../../executor/gws.js';
5
+ import { call } from '../../../google/client.js';
6
6
  export async function importMeet(scratchpads, scratchpadId, sourceParams) {
7
7
  const { email, conferenceId } = sourceParams;
8
8
  if (!email || !conferenceId) {
@@ -13,11 +13,7 @@ export async function importMeet(scratchpads, scratchpadId, sourceParams) {
13
13
  ? conferenceId
14
14
  : `conferenceRecords/${conferenceId}`;
15
15
  // Step 1: List transcripts
16
- const transcriptsResult = await execute([
17
- 'meet', 'conferenceRecords', 'transcripts', 'list',
18
- '--params', JSON.stringify({ parent }),
19
- ], { account: email, format: 'json' });
20
- const transcriptsData = transcriptsResult.data;
16
+ const transcriptsData = await call('meet', 'conferenceRecords.transcripts.list', { parent }, { account: email });
21
17
  const transcripts = (transcriptsData?.transcripts ?? []);
22
18
  if (transcripts.length === 0) {
23
19
  return {
@@ -27,17 +23,10 @@ export async function importMeet(scratchpads, scratchpadId, sourceParams) {
27
23
  }
28
24
  // Step 2: Fetch entries and participants in parallel
29
25
  const transcriptName = String(transcripts[0].name ?? '');
30
- const [entriesResult, participantsResult] = await Promise.all([
31
- execute([
32
- 'meet', 'conferenceRecords', 'transcripts', 'entries', 'list',
33
- '--params', JSON.stringify({ parent: transcriptName, pageSize: 100 }),
34
- ], { account: email, format: 'json' }),
35
- execute([
36
- 'meet', 'conferenceRecords', 'participants', 'list',
37
- '--params', JSON.stringify({ parent, pageSize: 100 }),
38
- ], { account: email, format: 'json' }),
26
+ const [entriesData, participantsData] = await Promise.all([
27
+ call('meet', 'conferenceRecords.transcripts.entries.list', { parent: transcriptName, pageSize: 100 }, { account: email }),
28
+ call('meet', 'conferenceRecords.participants.list', { parent, pageSize: 100 }, { account: email }),
39
29
  ]);
40
- const entriesData = entriesResult.data;
41
30
  const entries = (entriesData?.transcriptEntries ?? []);
42
31
  if (entries.length === 0) {
43
32
  return {
@@ -46,7 +35,6 @@ export async function importMeet(scratchpads, scratchpadId, sourceParams) {
46
35
  };
47
36
  }
48
37
  // Step 3: Build participant lookup
49
- const participantsData = participantsResult.data;
50
38
  const participants = (participantsData?.participants ?? []);
51
39
  const nameMap = new Map();
52
40
  for (const p of participants) {
@@ -1 +1 @@
1
- {"version":3,"file":"import-meet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-meet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAA8B,EAC9B,YAAoB,EACpB,YAA8B;IAE9B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;IAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,sDAAsD,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IACjG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAC1D,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,qBAAqB,YAAY,EAAE,CAAC;QAExC,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;YACtC,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM;YAClD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACvC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvC,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAA+B,CAAC;QAC1E,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,WAAW,IAAI,EAAE,CAAmC,CAAC;QAE3F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,uCAAuC,YAAY,iBAAiB,YAAY,aAAa;gBACnG,IAAI,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE;aACrC,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5D,OAAO,CAAC;gBACN,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;gBAC7D,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;aACtE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC;gBACN,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM;gBACnD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;aACtD,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,aAAa,CAAC,IAA+B,CAAC;QAClE,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,iBAAiB,IAAI,EAAE,CAAmC,CAAC;QAEzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,wFAAwF,YAAY,aAAa;gBACvH,IAAI,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE;aACrD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAA+B,CAAC;QAC5E,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,YAAY,IAAI,EAAE,CAAmC,CAAC;QAC9F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAClC,MAAM,YAAY,GAAG,CAAC,CAAC,YAAmD,CAAC;YAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAC7E,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,wCAAwC;QACxC,MAAM,KAAK,GAAa;YACtB,sBAAsB;YACtB,EAAE;YACF,mBAAmB,YAAY,EAAE;YACjC,gBAAgB,OAAO,CAAC,MAAM,EAAE;YAChC,EAAE;SACH,CAAC;QAEF,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,eAAe,CAAC,CAAC;YACxG,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,IAAI,cAAc;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC;gBACxC,cAAc,GAAG,OAAO,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAChD,8CAA8C;QAE9C,OAAO;YACL,IAAI,EAAE,wBAAwB,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,2BAA2B,YAAY,GAAG;YAC/G,IAAI,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE;SAC3F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,kBAAkB,OAAO,EAAE;YACjC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"import-meet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-meet.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Import adapter: sheet — loads a Google Sheet as CSV lines into a scratchpad.
3
3
  */
4
- import { execute } from '../../../executor/gws.js';
4
+ import { call } from '../../../google/client.js';
5
5
  export async function importSheet(scratchpads, scratchpadId, sourceParams) {
6
6
  const { email, spreadsheetId, range } = sourceParams;
7
7
  if (!email || !spreadsheetId) {
@@ -13,11 +13,10 @@ export async function importSheet(scratchpads, scratchpadId, sourceParams) {
13
13
  params.range = range;
14
14
  // Default to first sheet if no range specified
15
15
  const rangeArg = range ?? 'Sheet1';
16
- const result = await execute([
17
- 'sheets', 'spreadsheets', 'values', 'get',
18
- '--params', JSON.stringify({ spreadsheetId, range: rangeArg }),
19
- ], { account: email });
20
- const data = result.data;
16
+ const data = await call('sheets', 'spreadsheets.values.get', {
17
+ spreadsheetId,
18
+ range: rangeArg,
19
+ }, { account: email });
21
20
  const values = (data.values ?? []);
22
21
  if (values.length === 0) {
23
22
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"import-sheet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-sheet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAUnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAA8B,EAC9B,YAAoB,EACpB,YAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IACrD,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,wDAAwD,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IACnG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,aAAa,EAAE,CAAC;QAC1D,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAEhC,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK;YACzC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SAC/D,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAe,CAAC;QAEjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,IAAI,EAAE,SAAS,aAAa,KAAK,QAAQ,8BAA8B,YAAY,aAAa;gBAChG,IAAI,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;aACtC,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,0BAA0B,QAAQ,CAAC,MAAM,0BAA0B,YAAY,GAAG;YACxF,IAAI,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE;SACtF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,kBAAkB,OAAO,EAAE;YACjC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"import-sheet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/import-sheet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAUjD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAA8B,EAC9B,YAAoB,EACpB,YAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IACrD,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,wDAAwD,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IACnG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,aAAa,EAAE,CAAC;QAC1D,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAEhC,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;QAEnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,yBAAyB,EAAE;YAC3D,aAAa;YACb,KAAK,EAAE,QAAQ;SAChB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAA4B,CAAC;QAElD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAe,CAAC;QAEjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,IAAI,EAAE,SAAS,aAAa,KAAK,QAAQ,8BAA8B,YAAY,aAAa;gBAChG,IAAI,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;aACtC,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,0BAA0B,QAAQ,CAAC,MAAM,0BAA0B,YAAY,GAAG;YACxF,IAAI,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE;SACtF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,kBAAkB,OAAO,EAAE;YACjC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Send adapter: calendar_event — creates a calendar event with scratchpad content as description.
3
3
  */
4
- import { execute } from '../../../executor/gws.js';
4
+ import { call } from '../../../google/client.js';
5
5
  import { nextSteps } from '../../formatting/next-steps.js';
6
6
  export async function sendCalendarEvent(scratchpads, scratchpadId, targetParams) {
7
7
  const content = scratchpads.getContent(scratchpadId);
@@ -15,20 +15,25 @@ export async function sendCalendarEvent(scratchpads, scratchpadId, targetParams)
15
15
  refs: { error: true, scratchpadId },
16
16
  };
17
17
  }
18
- const args = [
19
- 'calendar', '+insert',
20
- '--summary', summary,
21
- '--start', start,
22
- '--end', end,
23
- '--description', content,
24
- ];
18
+ // `calendarId` is the one PATH param the descriptor declares; everything else
19
+ // here is the Event resource and lands in the body. Same shape as
20
+ // services/calendar/patch.ts `create`.
21
+ const body = {
22
+ calendarId: 'primary',
23
+ summary,
24
+ start: { dateTime: start },
25
+ end: { dateTime: end },
26
+ description: content,
27
+ };
25
28
  if (location)
26
- args.push('--location', location);
27
- if (attendees)
28
- args.push('--attendee', attendees);
29
+ body.location = location;
30
+ if (attendees) {
31
+ body.attendees = attendees
32
+ .split(',').map((e) => e.trim()).filter(Boolean)
33
+ .map((address) => ({ email: address }));
34
+ }
29
35
  try {
30
- const result = await execute(args, { account: email });
31
- const data = result.data;
36
+ const data = await call('calendar', 'events.insert', body, { account: email });
32
37
  return {
33
38
  text: `Event created: **${summary}**\n\n` +
34
39
  `**When:** ${start} – ${end}\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"send-calendar.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-calendar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAW3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAA8B,EAC9B,YAAoB,EACpB,YAAiC;IAEjC,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,cAAc,YAAY,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IACzE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,4FAA4F,YAAY,mBAAmB;YACjI,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,GAAG;QACZ,eAAe,EAAE,OAAO;KACzB,CAAC;IACF,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B,CAAC;QAEpD,OAAO;YACL,IAAI,EAAE,oBAAoB,OAAO,QAAQ;gBACvC,aAAa,KAAK,MAAM,GAAG,IAAI;gBAC/B,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,wCAAwC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW;gBAC7E,iBAAiB,IAAI,CAAC,EAAE,IAAI,SAAS,EAAE;gBACvC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;YAC5C,IAAI,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;SAC9D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB,OAAO,gBAAgB,YAAY,mBAAmB;YAC5E,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"send-calendar.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-calendar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAW3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAA8B,EAC9B,YAAoB,EACpB,YAAiC;IAEjC,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,cAAc,YAAY,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IACzE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,4FAA4F,YAAY,mBAAmB;YACjI,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,kEAAkE;IAClE,uCAAuC;IACvC,MAAM,IAAI,GAA4B;QACpC,UAAU,EAAE,SAAS;QACrB,OAAO;QACP,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC1B,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;QACtB,WAAW,EAAE,OAAO;KACrB,CAAC;IACF,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,SAAS;aACvB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;aAC/C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAA4B,CAAC;QAE1G,OAAO;YACL,IAAI,EAAE,oBAAoB,OAAO,QAAQ;gBACvC,aAAa,KAAK,MAAM,GAAG,IAAI;gBAC/B,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,wCAAwC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW;gBAC7E,iBAAiB,IAAI,CAAC,EAAE,IAAI,SAAS,EAAE;gBACvC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;YAC5C,IAAI,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;SAC9D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB,OAAO,gBAAgB,YAAY,mBAAmB;YAC5E,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -3,7 +3,23 @@
3
3
  * doc_create: creates a new Google Doc and writes scratchpad content.
4
4
  * doc_write: appends scratchpad content to an existing Google Doc.
5
5
  */
6
- import { execute } from '../../../executor/gws.js';
6
+ import { call } from '../../../google/client.js';
7
+ /**
8
+ * Append text to the end of a document's body.
9
+ *
10
+ * `documentId` is the only declared path param;
11
+ * `requests` is the batchUpdate body. `endOfSegmentLocation` with an empty
12
+ * `segmentId` means "the end of the document body" — the append semantics the
13
+ * adapter has always claimed.
14
+ */
15
+ async function appendText(account, documentId, text) {
16
+ await call('docs', 'documents.batchUpdate', {
17
+ documentId,
18
+ requests: [
19
+ { insertText: { text, endOfSegmentLocation: { segmentId: '' } } },
20
+ ],
21
+ }, { account });
22
+ }
7
23
  export async function sendDocCreate(scratchpads, scratchpadId, targetParams) {
8
24
  const content = scratchpads.getContent(scratchpadId);
9
25
  if (content === null) {
@@ -17,19 +33,12 @@ export async function sendDocCreate(scratchpads, scratchpadId, targetParams) {
17
33
  };
18
34
  }
19
35
  try {
20
- // Step 1: Create empty doc (title goes in --json request body)
21
- const createResult = await execute([
22
- 'docs', 'documents', 'create',
23
- '--json', JSON.stringify({ title }),
24
- ], { account: email });
25
- const doc = createResult.data;
36
+ // Step 1: Create empty doc (title is the request body — documents.create
37
+ // declares no path/query params, so it lands in the body).
38
+ const doc = await call('docs', 'documents.create', { title }, { account: email });
26
39
  const documentId = doc.documentId;
27
40
  // Step 2: Write content
28
- await execute([
29
- 'docs', '+write',
30
- '--document', documentId,
31
- '--text', content,
32
- ], { account: email });
41
+ await appendText(email, documentId, content);
33
42
  return {
34
43
  text: `Document created from scratchpad.\n\n**Title:** ${title}\n**Document ID:** ${documentId}`,
35
44
  refs: { scratchpadId, documentId, title },
@@ -56,11 +65,7 @@ export async function sendDocWrite(scratchpads, scratchpadId, targetParams) {
56
65
  };
57
66
  }
58
67
  try {
59
- await execute([
60
- 'docs', '+write',
61
- '--document', documentId,
62
- '--text', content,
63
- ], { account: email });
68
+ await appendText(email, documentId, content);
64
69
  return {
65
70
  text: `Content appended to document ${documentId}.`,
66
71
  refs: { scratchpadId, documentId },
@@ -1 +1 @@
1
- {"version":3,"file":"send-doc.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-doc.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-doc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAcjD;;;;;;;GAOG;AACH,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,UAAkB,EAAE,IAAY;IACzE,MAAM,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE;QAC1C,UAAU;QACV,QAAQ,EAAE;YACR,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE;SAClE;KACF,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAA8B,EAC9B,YAAoB,EACpB,YAA6B;IAE7B,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,cAAc,YAAY,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,yEAAyE,YAAY,mBAAmB;YAC9G,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAA4B,CAAC;QAC7G,MAAM,UAAU,GAAG,GAAG,CAAC,UAAoB,CAAC;QAE5C,wBAAwB;QACxB,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,mDAAmD,KAAK,sBAAsB,UAAU,EAAE;YAChG,IAAI,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;SAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB,OAAO,gBAAgB,YAAY,mBAAmB;YAC5E,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAA8B,EAC9B,YAAoB,EACpB,YAA4B;IAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,cAAc,YAAY,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,6EAA6E,YAAY,mBAAmB;YAClH,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,gCAAgC,UAAU,GAAG;YACnD,IAAI,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;SACnC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB,OAAO,gBAAgB,YAAY,mBAAmB;YAC5E,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Send adapter: email_draft — creates a Gmail draft from scratchpad content.
3
- * Uses gws +send --draft for proper MIME construction and attachment support.
3
+ * sendMail(..., { draft: true }) builds the MIME message and uploads it.
4
4
  */
5
5
  import type { HandlerResponse } from '../../handler.js';
6
6
  import type { ScratchpadManager } from '../manager.js';
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Send adapter: email_draft — creates a Gmail draft from scratchpad content.
3
- * Uses gws +send --draft for proper MIME construction and attachment support.
3
+ * sendMail(..., { draft: true }) builds the MIME message and uploads it.
4
4
  */
5
5
  import * as path from 'node:path';
6
- import { execute } from '../../../executor/gws.js';
6
+ import { sendMail } from '../../../services/gmail/mail.js';
7
7
  import { getWorkspaceDir } from '../../../executor/workspace.js';
8
8
  export async function sendEmailDraft(scratchpads, scratchpadId, targetParams) {
9
9
  const content = scratchpads.getContent(scratchpadId);
@@ -17,33 +17,25 @@ export async function sendEmailDraft(scratchpads, scratchpadId, targetParams) {
17
17
  refs: { error: true, scratchpadId },
18
18
  };
19
19
  }
20
- // gws +send requires --to and --subject even for drafts
21
- const args = [
22
- 'gmail', '+send', '--draft',
23
- '--to', to || email,
24
- '--subject', subject || '(draft)',
25
- '--body', content,
26
- ];
27
- // Attach workspace files if scratchpad has attachments
20
+ // Attach workspace files if the scratchpad has attachments. sendMail() takes
21
+ // workspace-relative names and resolves + path-checks them itself.
28
22
  const attachments = scratchpads.getAttachments(scratchpadId);
29
- const attachmentPaths = attachments
30
- ? [...attachments.values()].filter(a => a.location).map(a => a.location)
23
+ const wsDir = getWorkspaceDir();
24
+ const attachmentNames = attachments
25
+ ? [...attachments.values()].filter(a => a.location).map(a => path.relative(wsDir, a.location))
31
26
  : [];
32
- // gws validates --attach paths are within cwd, so set cwd to workspace dir
33
- let execOptions = { account: email };
34
- if (attachmentPaths.length > 0) {
35
- const wsDir = getWorkspaceDir();
36
- for (const p of attachmentPaths) {
37
- args.push('--attach', path.relative(wsDir, p));
38
- }
39
- execOptions = { account: email, cwd: wsDir };
40
- }
41
27
  try {
42
- const result = await execute(args, execOptions);
43
- const data = result.data;
28
+ // A draft still needs To and Subject headers; fall back to the account itself.
29
+ const data = await sendMail(email, {
30
+ to: to || email,
31
+ subject: subject || '(draft)',
32
+ body: content,
33
+ draft: true,
34
+ ...(attachmentNames.length > 0 ? { attachments: attachmentNames } : {}),
35
+ });
44
36
  const draftId = data.id ?? 'unknown';
45
- const attNote = attachmentPaths.length > 0
46
- ? `\n**Attachments:** ${attachmentPaths.length}`
37
+ const attNote = attachmentNames.length > 0
38
+ ? `\n**Attachments:** ${attachmentNames.length}`
47
39
  : '';
48
40
  return {
49
41
  text: `Draft created.\n\n**Draft ID:** ${draftId}${to ? `\n**To:** ${to}` : ''}${subject ? `\n**Subject:** ${subject}` : ''}${attNote}`,
@@ -1 +1 @@
1
- {"version":3,"file":"send-email-draft.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email-draft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-email-draft.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email-draft.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAUjE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAA8B,EAC9B,YAAoB,EACpB,YAAoC;IAEpC,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,cAAc,YAAY,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,yDAAyD,YAAY,mBAAmB;YAC9F,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,mEAAmE;IACnE,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,eAAe,GAAG,WAAW;QACjC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9F,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,CAAC;QACH,+EAA+E;QAC/E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE;YACjC,EAAE,EAAE,EAAE,IAAI,KAAK;YACf,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC;QACrC,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,sBAAsB,eAAe,CAAC,MAAM,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,IAAI,EAAE,mCAAmC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE;YACvI,IAAI,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB,OAAO,gBAAgB,YAAY,mBAAmB;YAC5E,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Send adapter: email — delivers scratchpad content as an email.
3
- * When attachments are present, creates a draft (with --attach and --draft flags)
4
- * so the agent can review before sending. Without attachments, sends directly.
3
+ * When attachments are present, creates a draft so the agent can review before
4
+ * sending. Without attachments, sends directly.
5
5
  */
6
6
  import type { HandlerResponse } from '../../handler.js';
7
7
  import type { ScratchpadManager } from '../manager.js';
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Send adapter: email — delivers scratchpad content as an email.
3
- * When attachments are present, creates a draft (with --attach and --draft flags)
4
- * so the agent can review before sending. Without attachments, sends directly.
3
+ * When attachments are present, creates a draft so the agent can review before
4
+ * sending. Without attachments, sends directly.
5
5
  */
6
6
  import * as path from 'node:path';
7
- import { execute } from '../../../executor/gws.js';
7
+ import { sendMail } from '../../../services/gmail/mail.js';
8
8
  import { getWorkspaceDir } from '../../../executor/workspace.js';
9
9
  import { nextSteps } from '../../formatting/next-steps.js';
10
10
  export async function sendEmail(scratchpads, scratchpadId, targetParams) {
@@ -19,30 +19,26 @@ export async function sendEmail(scratchpads, scratchpadId, targetParams) {
19
19
  refs: { error: true, scratchpadId },
20
20
  };
21
21
  }
22
+ // sendMail() takes WORKSPACE-RELATIVE names — it resolves and path-safety-checks
23
+ // them itself. The side-table stores absolute locations, so relativise them here.
22
24
  const attachments = scratchpads.getAttachments(scratchpadId);
23
- const attachmentRefs = attachments ? [...attachments.values()] : [];
24
- const attachmentPaths = attachmentRefs.filter(a => a.location).map(a => a.location);
25
+ const wsDir = getWorkspaceDir();
26
+ const attachmentNames = attachments
27
+ ? [...attachments.values()].filter(a => a.location).map(a => path.relative(wsDir, a.location))
28
+ : [];
25
29
  try {
26
- const args = ['gmail', '+send', '--to', to, '--subject', subject, '--body', content];
27
- if (cc)
28
- args.push('--cc', cc);
29
- if (bcc)
30
- args.push('--bcc', bcc);
31
- // Attachments present → create draft (gws handles MIME + upload endpoint, 35MB limit)
32
- // gws validates --attach paths are within cwd, so set cwd to workspace dir
33
- let execOptions = { account: email };
34
- if (attachmentPaths.length > 0) {
35
- const wsDir = getWorkspaceDir();
36
- args.push('--draft');
37
- for (const p of attachmentPaths) {
38
- args.push('--attach', path.relative(wsDir, p));
39
- }
40
- execOptions = { account: email, cwd: wsDir };
41
- }
42
- const result = await execute(args, execOptions);
43
- const data = result.data;
44
- if (attachmentPaths.length > 0) {
45
- const attNote = ` (${attachmentPaths.length} attachment(s))`;
30
+ // Attachments present → draft, so the agent can review before it goes out.
31
+ const isDraft = attachmentNames.length > 0;
32
+ const data = await sendMail(email, {
33
+ to,
34
+ subject,
35
+ body: content,
36
+ cc,
37
+ bcc,
38
+ ...(isDraft ? { draft: true, attachments: attachmentNames } : {}),
39
+ });
40
+ if (isDraft) {
41
+ const attNote = ` (${attachmentNames.length} attachment(s))`;
46
42
  return {
47
43
  text: `Draft created for ${to}${attNote}.\n\n**Subject:** ${subject}\n**Draft ID:** ${data.id ?? 'unknown'}\n\n` +
48
44
  `_Draft with attachments saved to Gmail. Review and send from Gmail or use manage_email to send the draft._` +
@@ -1 +1 @@
1
- {"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Send adapter: sheet_write — writes scratchpad CSV content to a Google Sheet.
3
3
  * Parses CSV lines back into a values array for spreadsheets.values.update.
4
4
  */
5
- import { execute } from '../../../executor/gws.js';
5
+ import { call } from '../../../google/client.js';
6
6
  export async function sendSheetWrite(scratchpads, scratchpadId, targetParams) {
7
7
  const content = scratchpads.getContent(scratchpadId);
8
8
  if (content === null) {
@@ -19,15 +19,15 @@ export async function sendSheetWrite(scratchpads, scratchpadId, targetParams) {
19
19
  const lines = content.split('\n').filter(l => l.trim());
20
20
  const values = lines.map(parseCsvLine);
21
21
  try {
22
- await execute([
23
- 'sheets', 'spreadsheets', 'values', 'update',
24
- '--params', JSON.stringify({
25
- spreadsheetId,
26
- range,
27
- valueInputOption: 'USER_ENTERED',
28
- requestBody: { values },
29
- }),
30
- ], { account: email });
22
+ // `values` is the request BODY; the descriptor declares only
23
+ // spreadsheetId/range/valueInputOption, so it goes at the top level
24
+ // rather than nested under a `requestBody` key.
25
+ await call('sheets', 'spreadsheets.values.update', {
26
+ spreadsheetId,
27
+ range,
28
+ valueInputOption: 'USER_ENTERED',
29
+ values,
30
+ }, { account: email });
31
31
  return {
32
32
  text: `Written ${values.length} rows to sheet ${spreadsheetId} (${range}).`,
33
33
  refs: { scratchpadId, spreadsheetId, range, rows: values.length },
@@ -1 +1 @@
1
- {"version":3,"file":"send-sheet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-sheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-sheet.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-sheet.ts"],"names":[],"mappings":"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"}