@aaronsb/google-workspace-mcp 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/server/handlers/drive.test.js +2 -15
- package/build/__tests__/server/handlers/drive.test.js.map +1 -1
- package/build/__tests__/server/session/context.test.d.ts +1 -0
- package/build/__tests__/server/session/context.test.js +101 -0
- package/build/__tests__/server/session/context.test.js.map +1 -0
- package/build/__tests__/server/session/tracker.test.d.ts +1 -0
- package/build/__tests__/server/session/tracker.test.js +146 -0
- package/build/__tests__/server/session/tracker.test.js.map +1 -0
- package/build/accounts/oauth.js +17 -8
- package/build/accounts/oauth.js.map +1 -1
- package/build/coverage/analyze.d.ts +13 -0
- package/build/coverage/analyze.js +49 -0
- package/build/coverage/analyze.js.map +1 -0
- package/build/coverage/baseline.d.ts +8 -0
- package/build/coverage/baseline.js +91 -0
- package/build/coverage/baseline.js.map +1 -0
- package/build/coverage/compare.d.ts +6 -0
- package/build/coverage/compare.js +129 -0
- package/build/coverage/compare.js.map +1 -0
- package/build/coverage/discover.d.ts +7 -0
- package/build/coverage/discover.js +168 -0
- package/build/coverage/discover.js.map +1 -0
- package/build/coverage/report.d.ts +6 -0
- package/build/coverage/report.js +93 -0
- package/build/coverage/report.js.map +1 -0
- package/build/coverage/types.d.ts +70 -0
- package/build/coverage/types.js +14 -0
- package/build/coverage/types.js.map +1 -0
- package/build/executor/gws.d.ts +2 -0
- package/build/executor/gws.js +2 -2
- package/build/executor/gws.js.map +1 -1
- package/build/factory/manifest.yaml +177 -3
- package/build/factory/patches.js +2 -0
- package/build/factory/patches.js.map +1 -1
- package/build/server/handler.js +36 -3
- package/build/server/handler.js.map +1 -1
- package/build/server/handlers/calendar.js +8 -4
- package/build/server/handlers/calendar.js.map +1 -1
- package/build/server/handlers/drive.js +0 -16
- package/build/server/handlers/drive.js.map +1 -1
- package/build/server/scratchpad/adapters/send-email-draft.js +11 -3
- package/build/server/scratchpad/adapters/send-email-draft.js.map +1 -1
- package/build/server/scratchpad/adapters/send-email.js +8 -2
- package/build/server/scratchpad/adapters/send-email.js.map +1 -1
- package/build/server/session/context.d.ts +7 -0
- package/build/server/session/context.js +56 -0
- package/build/server/session/context.js.map +1 -0
- package/build/server/session/index.d.ts +9 -0
- package/build/server/session/index.js +14 -0
- package/build/server/session/index.js.map +1 -0
- package/build/server/session/tracker.d.ts +36 -0
- package/build/server/session/tracker.js +135 -0
- package/build/server/session/tracker.js.map +1 -0
- package/build/services/calendar/patch.js +4 -2
- package/build/services/calendar/patch.js.map +1 -1
- package/build/services/docs/patch.d.ts +8 -0
- package/build/services/docs/patch.js +72 -0
- package/build/services/docs/patch.js.map +1 -0
- package/build/services/drive/patch.js +165 -10
- package/build/services/drive/patch.js.map +1 -1
- package/build/services/gmail/patch.js +12 -7
- package/build/services/gmail/patch.js.map +1 -1
- package/package.json +2 -2
|
@@ -287,9 +287,12 @@ services:
|
|
|
287
287
|
|
|
288
288
|
list:
|
|
289
289
|
type: list
|
|
290
|
-
description: "upcoming events
|
|
290
|
+
description: "upcoming events — defaults to primary calendar, use calendarId to target a specific calendar (use 'calendars' operation to discover IDs)"
|
|
291
291
|
resource: events.list
|
|
292
292
|
params:
|
|
293
|
+
calendarId:
|
|
294
|
+
type: string
|
|
295
|
+
description: "Calendar ID to query (default: 'primary'). Use 'calendars' operation to list available IDs."
|
|
293
296
|
timeMin:
|
|
294
297
|
type: string
|
|
295
298
|
description: "Start of range (ISO 8601) — defaults to today"
|
|
@@ -320,6 +323,9 @@ services:
|
|
|
320
323
|
description: "full event details by ID"
|
|
321
324
|
resource: events.get
|
|
322
325
|
params:
|
|
326
|
+
calendarId:
|
|
327
|
+
type: string
|
|
328
|
+
description: "Calendar ID (default: 'primary')"
|
|
323
329
|
eventId:
|
|
324
330
|
type: string
|
|
325
331
|
description: "Event ID"
|
|
@@ -334,6 +340,9 @@ services:
|
|
|
334
340
|
description: "create a new calendar event"
|
|
335
341
|
helper: "+insert"
|
|
336
342
|
params:
|
|
343
|
+
calendarId:
|
|
344
|
+
type: string
|
|
345
|
+
description: "Calendar ID (default: 'primary')"
|
|
337
346
|
summary:
|
|
338
347
|
type: string
|
|
339
348
|
description: "Event title"
|
|
@@ -356,6 +365,7 @@ services:
|
|
|
356
365
|
type: string
|
|
357
366
|
description: "Comma-separated attendee emails"
|
|
358
367
|
cli_args:
|
|
368
|
+
calendarId: "--calendar"
|
|
359
369
|
summary: "--summary"
|
|
360
370
|
start: "--start"
|
|
361
371
|
end: "--end"
|
|
@@ -368,6 +378,9 @@ services:
|
|
|
368
378
|
description: "create event from natural language (e.g. 'Lunch with Alice tomorrow at noon')"
|
|
369
379
|
resource: events.quickAdd
|
|
370
380
|
params:
|
|
381
|
+
calendarId:
|
|
382
|
+
type: string
|
|
383
|
+
description: "Calendar ID (default: 'primary')"
|
|
371
384
|
text:
|
|
372
385
|
type: string
|
|
373
386
|
description: "Natural language event description"
|
|
@@ -380,6 +393,9 @@ services:
|
|
|
380
393
|
description: "update an existing event (patch semantics — only changed fields needed)"
|
|
381
394
|
resource: events.patch
|
|
382
395
|
params:
|
|
396
|
+
calendarId:
|
|
397
|
+
type: string
|
|
398
|
+
description: "Calendar ID (default: 'primary')"
|
|
383
399
|
eventId:
|
|
384
400
|
type: string
|
|
385
401
|
description: "Event ID to update"
|
|
@@ -407,6 +423,9 @@ services:
|
|
|
407
423
|
description: "delete an event"
|
|
408
424
|
resource: events.delete
|
|
409
425
|
params:
|
|
426
|
+
calendarId:
|
|
427
|
+
type: string
|
|
428
|
+
description: "Calendar ID (default: 'primary')"
|
|
410
429
|
eventId:
|
|
411
430
|
type: string
|
|
412
431
|
description: "Event ID to delete"
|
|
@@ -437,7 +456,7 @@ services:
|
|
|
437
456
|
|
|
438
457
|
drive:
|
|
439
458
|
tool_name: manage_drive
|
|
440
|
-
description: "Search, upload, download, share, or manage files in Google Drive."
|
|
459
|
+
description: "Search, upload, download, share, comment on, or manage files in Google Drive."
|
|
441
460
|
requires_email: true
|
|
442
461
|
gws_service: drive
|
|
443
462
|
operations:
|
|
@@ -461,6 +480,8 @@ services:
|
|
|
461
480
|
maps_to: pageSize
|
|
462
481
|
defaults:
|
|
463
482
|
fields: "files(id, name, mimeType, modifiedTime, size, webViewLink)"
|
|
483
|
+
supportsAllDrives: true
|
|
484
|
+
includeItemsFromAllDrives: true
|
|
464
485
|
|
|
465
486
|
get:
|
|
466
487
|
type: detail
|
|
@@ -473,6 +494,7 @@ services:
|
|
|
473
494
|
required: true
|
|
474
495
|
defaults:
|
|
475
496
|
fields: "id, name, mimeType, modifiedTime, size, webViewLink, owners, shared, parents"
|
|
497
|
+
supportsAllDrives: true
|
|
476
498
|
|
|
477
499
|
# --- File operations ---
|
|
478
500
|
|
|
@@ -504,6 +526,8 @@ services:
|
|
|
504
526
|
type: string
|
|
505
527
|
description: "File ID of the image to view"
|
|
506
528
|
required: true
|
|
529
|
+
defaults:
|
|
530
|
+
supportsAllDrives: true
|
|
507
531
|
|
|
508
532
|
download:
|
|
509
533
|
type: detail
|
|
@@ -519,6 +543,7 @@ services:
|
|
|
519
543
|
description: "Local path to save the file"
|
|
520
544
|
defaults:
|
|
521
545
|
alt: media
|
|
546
|
+
supportsAllDrives: true
|
|
522
547
|
|
|
523
548
|
copy:
|
|
524
549
|
type: action
|
|
@@ -532,6 +557,8 @@ services:
|
|
|
532
557
|
name:
|
|
533
558
|
type: string
|
|
534
559
|
description: "Name for the copy"
|
|
560
|
+
defaults:
|
|
561
|
+
supportsAllDrives: true
|
|
535
562
|
|
|
536
563
|
delete:
|
|
537
564
|
type: action
|
|
@@ -542,6 +569,8 @@ services:
|
|
|
542
569
|
type: string
|
|
543
570
|
description: "File ID to delete"
|
|
544
571
|
required: true
|
|
572
|
+
defaults:
|
|
573
|
+
supportsAllDrives: true
|
|
545
574
|
|
|
546
575
|
export:
|
|
547
576
|
type: action
|
|
@@ -559,6 +588,8 @@ services:
|
|
|
559
588
|
outputPath:
|
|
560
589
|
type: string
|
|
561
590
|
description: "Local path to save exported file"
|
|
591
|
+
defaults:
|
|
592
|
+
supportsAllDrives: true
|
|
562
593
|
|
|
563
594
|
# --- Sharing ---
|
|
564
595
|
|
|
@@ -571,6 +602,8 @@ services:
|
|
|
571
602
|
type: string
|
|
572
603
|
description: "File ID"
|
|
573
604
|
required: true
|
|
605
|
+
defaults:
|
|
606
|
+
supportsAllDrives: true
|
|
574
607
|
|
|
575
608
|
share:
|
|
576
609
|
type: action
|
|
@@ -590,6 +623,8 @@ services:
|
|
|
590
623
|
description: "Permission level"
|
|
591
624
|
enum: [reader, commenter, writer, organizer]
|
|
592
625
|
default: reader
|
|
626
|
+
defaults:
|
|
627
|
+
supportsAllDrives: true
|
|
593
628
|
|
|
594
629
|
unshare:
|
|
595
630
|
type: action
|
|
@@ -604,6 +639,105 @@ services:
|
|
|
604
639
|
type: string
|
|
605
640
|
description: "Permission ID to remove (from listPermissions)"
|
|
606
641
|
required: true
|
|
642
|
+
defaults:
|
|
643
|
+
supportsAllDrives: true
|
|
644
|
+
|
|
645
|
+
# --- Comments ---
|
|
646
|
+
|
|
647
|
+
listComments:
|
|
648
|
+
type: list
|
|
649
|
+
description: "list comments on a file"
|
|
650
|
+
resource: comments.list
|
|
651
|
+
params:
|
|
652
|
+
fileId:
|
|
653
|
+
type: string
|
|
654
|
+
description: "File ID"
|
|
655
|
+
required: true
|
|
656
|
+
includeDeleted:
|
|
657
|
+
type: boolean
|
|
658
|
+
description: "Include deleted comments (default: false)"
|
|
659
|
+
defaults:
|
|
660
|
+
fields: "comments(id, content, htmlContent, author(displayName, emailAddress), createdTime, modifiedTime, resolved, quotedFileContent, replies(id, content, htmlContent, author(displayName), createdTime)), nextPageToken"
|
|
661
|
+
supportsAllDrives: true
|
|
662
|
+
|
|
663
|
+
getComment:
|
|
664
|
+
type: detail
|
|
665
|
+
description: "get a specific comment by ID"
|
|
666
|
+
resource: comments.get
|
|
667
|
+
params:
|
|
668
|
+
fileId:
|
|
669
|
+
type: string
|
|
670
|
+
description: "File ID"
|
|
671
|
+
required: true
|
|
672
|
+
commentId:
|
|
673
|
+
type: string
|
|
674
|
+
description: "Comment ID"
|
|
675
|
+
required: true
|
|
676
|
+
defaults:
|
|
677
|
+
fields: "id, content, htmlContent, author(displayName, emailAddress), createdTime, modifiedTime, resolved, quotedFileContent, replies(id, content, htmlContent, author(displayName), createdTime)"
|
|
678
|
+
supportsAllDrives: true
|
|
679
|
+
|
|
680
|
+
addComment:
|
|
681
|
+
type: action
|
|
682
|
+
description: "add a comment to a file (optionally anchored to quoted text)"
|
|
683
|
+
resource: comments.create
|
|
684
|
+
params:
|
|
685
|
+
fileId:
|
|
686
|
+
type: string
|
|
687
|
+
description: "File ID"
|
|
688
|
+
required: true
|
|
689
|
+
content:
|
|
690
|
+
type: string
|
|
691
|
+
description: "Comment text"
|
|
692
|
+
required: true
|
|
693
|
+
quotedText:
|
|
694
|
+
type: string
|
|
695
|
+
description: "Text to anchor the comment to (optional — if provided, comment is anchored to first occurrence)"
|
|
696
|
+
defaults:
|
|
697
|
+
fields: "id, content, htmlContent, author(displayName), createdTime, quotedFileContent"
|
|
698
|
+
supportsAllDrives: true
|
|
699
|
+
|
|
700
|
+
resolveComment:
|
|
701
|
+
type: action
|
|
702
|
+
description: "resolve or reopen a comment"
|
|
703
|
+
resource: comments.update
|
|
704
|
+
params:
|
|
705
|
+
fileId:
|
|
706
|
+
type: string
|
|
707
|
+
description: "File ID"
|
|
708
|
+
required: true
|
|
709
|
+
commentId:
|
|
710
|
+
type: string
|
|
711
|
+
description: "Comment ID"
|
|
712
|
+
required: true
|
|
713
|
+
resolved:
|
|
714
|
+
type: boolean
|
|
715
|
+
description: "true to resolve, false to reopen"
|
|
716
|
+
required: true
|
|
717
|
+
defaults:
|
|
718
|
+
fields: "id, content, resolved"
|
|
719
|
+
supportsAllDrives: true
|
|
720
|
+
|
|
721
|
+
replyToComment:
|
|
722
|
+
type: action
|
|
723
|
+
description: "reply to an existing comment"
|
|
724
|
+
resource: replies.create
|
|
725
|
+
params:
|
|
726
|
+
fileId:
|
|
727
|
+
type: string
|
|
728
|
+
description: "File ID"
|
|
729
|
+
required: true
|
|
730
|
+
commentId:
|
|
731
|
+
type: string
|
|
732
|
+
description: "Comment ID to reply to"
|
|
733
|
+
required: true
|
|
734
|
+
content:
|
|
735
|
+
type: string
|
|
736
|
+
description: "Reply text"
|
|
737
|
+
required: true
|
|
738
|
+
defaults:
|
|
739
|
+
fields: "id, content, htmlContent, author(displayName), createdTime"
|
|
740
|
+
supportsAllDrives: true
|
|
607
741
|
|
|
608
742
|
# ========================================================================
|
|
609
743
|
# Sheets
|
|
@@ -702,7 +836,7 @@ services:
|
|
|
702
836
|
|
|
703
837
|
docs:
|
|
704
838
|
tool_name: manage_docs
|
|
705
|
-
description: "Read and
|
|
839
|
+
description: "Read, write, insert, and find-replace text in Google Docs documents."
|
|
706
840
|
requires_email: true
|
|
707
841
|
gws_service: docs
|
|
708
842
|
operations:
|
|
@@ -739,6 +873,46 @@ services:
|
|
|
739
873
|
documentId: "--document"
|
|
740
874
|
text: "--text"
|
|
741
875
|
|
|
876
|
+
insertText:
|
|
877
|
+
type: action
|
|
878
|
+
description: "insert text at a specific position in a document"
|
|
879
|
+
resource: documents.batchUpdate
|
|
880
|
+
params:
|
|
881
|
+
documentId:
|
|
882
|
+
type: string
|
|
883
|
+
description: "Document ID"
|
|
884
|
+
required: true
|
|
885
|
+
text:
|
|
886
|
+
type: string
|
|
887
|
+
description: "Text to insert"
|
|
888
|
+
required: true
|
|
889
|
+
index:
|
|
890
|
+
type: number
|
|
891
|
+
description: "Character index to insert at (1 = start of document body)"
|
|
892
|
+
required: true
|
|
893
|
+
|
|
894
|
+
replaceText:
|
|
895
|
+
type: action
|
|
896
|
+
description: "find and replace text in a document"
|
|
897
|
+
resource: documents.batchUpdate
|
|
898
|
+
params:
|
|
899
|
+
documentId:
|
|
900
|
+
type: string
|
|
901
|
+
description: "Document ID"
|
|
902
|
+
required: true
|
|
903
|
+
findText:
|
|
904
|
+
type: string
|
|
905
|
+
description: "Text to find"
|
|
906
|
+
required: true
|
|
907
|
+
replaceWith:
|
|
908
|
+
type: string
|
|
909
|
+
description: "Replacement text"
|
|
910
|
+
required: true
|
|
911
|
+
matchCase:
|
|
912
|
+
type: boolean
|
|
913
|
+
description: "Case-sensitive match (default: true)"
|
|
914
|
+
default: true
|
|
915
|
+
|
|
742
916
|
# ========================================================================
|
|
743
917
|
# Tasks
|
|
744
918
|
# ========================================================================
|
package/build/factory/patches.js
CHANGED
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
import { gmailPatch } from '../services/gmail/patch.js';
|
|
6
6
|
import { calendarPatch } from '../services/calendar/patch.js';
|
|
7
7
|
import { drivePatch } from '../services/drive/patch.js';
|
|
8
|
+
import { docsPatch } from '../services/docs/patch.js';
|
|
8
9
|
import { meetPatch } from '../services/meet/patch.js';
|
|
9
10
|
export const patches = {
|
|
10
11
|
gmail: gmailPatch,
|
|
11
12
|
calendar: calendarPatch,
|
|
12
13
|
drive: drivePatch,
|
|
14
|
+
docs: docsPatch,
|
|
13
15
|
meet: meetPatch,
|
|
14
16
|
};
|
|
15
17
|
//# sourceMappingURL=patches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patches.js","sourceRoot":"","sources":["../../src/factory/patches.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,MAAM,CAAC,MAAM,OAAO,GAAiC;IACnD,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,SAAS;CAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"patches.js","sourceRoot":"","sources":["../../src/factory/patches.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,MAAM,CAAC,MAAM,OAAO,GAAiC;IACnD,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CAChB,CAAC"}
|
package/build/server/handler.js
CHANGED
|
@@ -3,6 +3,7 @@ import { handleWorkspace } from './handlers/workspace.js';
|
|
|
3
3
|
import { handleScratchpad } from './scratchpad/handler.js';
|
|
4
4
|
import { handleQueue } from './queue.js';
|
|
5
5
|
import { generatedTools } from '../factory/registry.js';
|
|
6
|
+
import { getSessionTracker, sessionContext } from './session/index.js';
|
|
6
7
|
// ── Epoch counter ─────────────────────────────────────────
|
|
7
8
|
// Server-wide monotonic counter incremented on every tool call.
|
|
8
9
|
// Used by ScratchpadManager for activity-based garbage collection.
|
|
@@ -26,15 +27,47 @@ for (const tool of generatedTools) {
|
|
|
26
27
|
domainHandlers[tool.schema.name] = tool.handler;
|
|
27
28
|
}
|
|
28
29
|
export async function handleToolCall(toolName, params) {
|
|
29
|
-
advanceEpoch();
|
|
30
|
+
const currentEpoch = advanceEpoch();
|
|
31
|
+
const tracker = getSessionTracker();
|
|
30
32
|
// Queue wraps the domain handlers (each queued op also advances the epoch)
|
|
31
33
|
if (toolName === 'queue_operations') {
|
|
32
|
-
|
|
34
|
+
const result = await handleQueue(params, domainHandlers);
|
|
35
|
+
const queueEmail = extractEmailFromQueue(params);
|
|
36
|
+
if (queueEmail) {
|
|
37
|
+
await tracker.ensureBaseline(queueEmail, currentEpoch);
|
|
38
|
+
tracker.refresh(queueEmail, currentEpoch);
|
|
39
|
+
const ctx = sessionContext(toolName, queueEmail, tracker);
|
|
40
|
+
if (ctx)
|
|
41
|
+
result.text += ctx;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
33
44
|
}
|
|
34
45
|
const handler = domainHandlers[toolName];
|
|
35
46
|
if (!handler) {
|
|
36
47
|
throw new Error(`Unknown tool: ${toolName}`);
|
|
37
48
|
}
|
|
38
|
-
|
|
49
|
+
const email = typeof params.email === 'string' ? params.email : undefined;
|
|
50
|
+
if (email) {
|
|
51
|
+
await tracker.ensureBaseline(email, currentEpoch);
|
|
52
|
+
}
|
|
53
|
+
const result = await handler(params);
|
|
54
|
+
if (email) {
|
|
55
|
+
tracker.refresh(email, currentEpoch);
|
|
56
|
+
const ctx = sessionContext(toolName, email, tracker);
|
|
57
|
+
if (ctx)
|
|
58
|
+
result.text += ctx;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/** Extract email from the first queue operation that has one. */
|
|
63
|
+
function extractEmailFromQueue(params) {
|
|
64
|
+
const operations = params.operations;
|
|
65
|
+
if (!Array.isArray(operations))
|
|
66
|
+
return undefined;
|
|
67
|
+
for (const op of operations) {
|
|
68
|
+
if (typeof op.args?.email === 'string')
|
|
69
|
+
return op.args.email;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
39
72
|
}
|
|
40
73
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,11 @@ export async function handleCalendar(params) {
|
|
|
9
9
|
case 'list': {
|
|
10
10
|
const now = new Date();
|
|
11
11
|
const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).toISOString();
|
|
12
|
+
const calendarId = params.calendarId || 'primary';
|
|
12
13
|
const result = await execute([
|
|
13
14
|
'calendar', 'events', 'list',
|
|
14
15
|
'--params', JSON.stringify({
|
|
15
|
-
calendarId
|
|
16
|
+
calendarId,
|
|
16
17
|
timeMin: params.timeMin || todayStart,
|
|
17
18
|
timeMax: params.timeMax || undefined,
|
|
18
19
|
maxResults: clamp(params.maxResults, 10, 50),
|
|
@@ -45,7 +46,8 @@ export async function handleCalendar(params) {
|
|
|
45
46
|
const summary = requireString(params, 'summary');
|
|
46
47
|
const start = requireString(params, 'start');
|
|
47
48
|
const end = requireString(params, 'end');
|
|
48
|
-
const
|
|
49
|
+
const calendarId = params.calendarId || 'primary';
|
|
50
|
+
const args = ['calendar', '+insert', '--calendar', calendarId, '--summary', summary, '--start', start, '--end', end];
|
|
49
51
|
if (params.description)
|
|
50
52
|
args.push('--description', String(params.description));
|
|
51
53
|
if (params.location)
|
|
@@ -65,9 +67,10 @@ export async function handleCalendar(params) {
|
|
|
65
67
|
}
|
|
66
68
|
case 'get': {
|
|
67
69
|
const eventId = requireString(params, 'eventId');
|
|
70
|
+
const calendarId = params.calendarId || 'primary';
|
|
68
71
|
const result = await execute([
|
|
69
72
|
'calendar', 'events', 'get',
|
|
70
|
-
'--params', JSON.stringify({ calendarId
|
|
73
|
+
'--params', JSON.stringify({ calendarId, eventId }),
|
|
71
74
|
], { account: email });
|
|
72
75
|
const formatted = formatEventDetail(result.data);
|
|
73
76
|
return {
|
|
@@ -77,9 +80,10 @@ export async function handleCalendar(params) {
|
|
|
77
80
|
}
|
|
78
81
|
case 'delete': {
|
|
79
82
|
const eventId = requireString(params, 'eventId');
|
|
83
|
+
const calendarId = params.calendarId || 'primary';
|
|
80
84
|
await execute([
|
|
81
85
|
'calendar', 'events', 'delete',
|
|
82
|
-
'--params', JSON.stringify({ calendarId
|
|
86
|
+
'--params', JSON.stringify({ calendarId, eventId }),
|
|
83
87
|
], { account: email });
|
|
84
88
|
return {
|
|
85
89
|
text: `Event deleted: ${eventId}` + nextSteps('calendar', 'delete', { email }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/server/handlers/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGnE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA+B;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAmB,CAAC;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEnC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,UAAU,EAAE,QAAQ,EAAE,MAAM;gBAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzB,UAAU
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/server/handlers/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGnE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA+B;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAmB,CAAC;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEnC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5F,MAAM,UAAU,GAAI,MAAM,CAAC,UAAqB,IAAI,SAAS,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,UAAU,EAAE,QAAQ,EAAE,MAAM;gBAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzB,UAAU;oBACV,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,UAAU;oBACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;oBACpC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC5C,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,WAAW;iBACrB,CAAC;aACH,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC/D,IAAI,EAAE,SAAS,CAAC,IAAI;aACrB,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAA2C,CAAC;YAChE,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClG,uDAAuD;YACvD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACL,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;gBACvD,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD;aACF,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,UAAU,GAAI,MAAM,CAAC,UAAqB,IAAI,SAAS,CAAC;YAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACrH,IAAI,MAAM,CAAC,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/E,IAAI,MAAM,CAAC,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B,CAAC;YACpD,OAAO;gBACL,IAAI,EAAE,oBAAoB,OAAO,QAAQ;oBACvC,aAAa,KAAK,MAAM,GAAG,IAAI;oBAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,iBAAiB,IAAI,CAAC,EAAE,IAAI,SAAS,EAAE;oBACvC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC5C,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;aAC7D,CAAC;QACJ,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,UAAU,GAAI,MAAM,CAAC,UAAqB,IAAI,SAAS,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,UAAU,EAAE,QAAQ,EAAE,KAAK;gBAC3B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;aACpD,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACvE,IAAI,EAAE,SAAS,CAAC,IAAI;aACrB,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,UAAU,GAAI,MAAM,CAAC,UAAqB,IAAI,SAAS,CAAC;YAC9D,MAAM,OAAO,CAAC;gBACZ,UAAU,EAAE,QAAQ,EAAE,QAAQ;gBAC9B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;aACpD,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvB,OAAO;gBACL,IAAI,EAAE,kBAAkB,OAAO,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC9E,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;aACrC,CAAC;QACJ,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -51,22 +51,6 @@ export async function handleDrive(params) {
|
|
|
51
51
|
refs: { id: data.id, fileId: data.id, name: data.name },
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
case 'download': {
|
|
55
|
-
const fileId = requireString(params, 'fileId');
|
|
56
|
-
const args = [
|
|
57
|
-
'drive', 'files', 'get',
|
|
58
|
-
'--params', JSON.stringify({ fileId, alt: 'media' }),
|
|
59
|
-
];
|
|
60
|
-
if (params.outputPath)
|
|
61
|
-
args.push('--output', String(params.outputPath));
|
|
62
|
-
await execute(args, { account: email });
|
|
63
|
-
return {
|
|
64
|
-
text: `File downloaded: ${fileId}` +
|
|
65
|
-
(params.outputPath ? ` → ${params.outputPath}` : '') +
|
|
66
|
-
nextSteps('drive', 'download', { email }),
|
|
67
|
-
refs: { fileId, status: 'downloaded' },
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
54
|
default:
|
|
71
55
|
throw new Error(`Unknown drive operation: ${operation}`);
|
|
72
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/server/handlers/drive.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/server/handlers/drive.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Send adapter: email_draft — creates a Gmail draft from scratchpad content.
|
|
3
3
|
* Uses gws +send --draft for proper MIME construction and attachment support.
|
|
4
4
|
*/
|
|
5
|
+
import * as path from 'node:path';
|
|
5
6
|
import { execute } from '../../../executor/gws.js';
|
|
7
|
+
import { getWorkspaceDir } from '../../../executor/workspace.js';
|
|
6
8
|
export async function sendEmailDraft(scratchpads, scratchpadId, targetParams) {
|
|
7
9
|
const content = scratchpads.getContent(scratchpadId);
|
|
8
10
|
if (content === null) {
|
|
@@ -27,11 +29,17 @@ export async function sendEmailDraft(scratchpads, scratchpadId, targetParams) {
|
|
|
27
29
|
const attachmentPaths = attachments
|
|
28
30
|
? [...attachments.values()].filter(a => a.location).map(a => a.location)
|
|
29
31
|
: [];
|
|
30
|
-
|
|
31
|
-
|
|
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 };
|
|
32
40
|
}
|
|
33
41
|
try {
|
|
34
|
-
const result = await execute(args,
|
|
42
|
+
const result = await execute(args, execOptions);
|
|
35
43
|
const data = result.data;
|
|
36
44
|
const draftId = data.id ?? 'unknown';
|
|
37
45
|
const attNote = attachmentPaths.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-email-draft.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email-draft.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"send-email-draft.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email-draft.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* When attachments are present, creates a draft (with --attach and --draft flags)
|
|
4
4
|
* so the agent can review before sending. Without attachments, sends directly.
|
|
5
5
|
*/
|
|
6
|
+
import * as path from 'node:path';
|
|
6
7
|
import { execute } from '../../../executor/gws.js';
|
|
8
|
+
import { getWorkspaceDir } from '../../../executor/workspace.js';
|
|
7
9
|
import { nextSteps } from '../../formatting/next-steps.js';
|
|
8
10
|
export async function sendEmail(scratchpads, scratchpadId, targetParams) {
|
|
9
11
|
const content = scratchpads.getContent(scratchpadId);
|
|
@@ -27,13 +29,17 @@ export async function sendEmail(scratchpads, scratchpadId, targetParams) {
|
|
|
27
29
|
if (bcc)
|
|
28
30
|
args.push('--bcc', bcc);
|
|
29
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 };
|
|
30
34
|
if (attachmentPaths.length > 0) {
|
|
35
|
+
const wsDir = getWorkspaceDir();
|
|
31
36
|
args.push('--draft');
|
|
32
37
|
for (const p of attachmentPaths) {
|
|
33
|
-
args.push('--attach', p);
|
|
38
|
+
args.push('--attach', path.relative(wsDir, p));
|
|
34
39
|
}
|
|
40
|
+
execOptions = { account: email, cwd: wsDir };
|
|
35
41
|
}
|
|
36
|
-
const result = await execute(args,
|
|
42
|
+
const result = await execute(args, execOptions);
|
|
37
43
|
const data = result.data;
|
|
38
44
|
if (attachmentPaths.length > 0) {
|
|
39
45
|
const attNote = ` (${attachmentPaths.length} attachment(s))`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../../src/server/scratchpad/adapters/send-email.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session context formatter — builds a markdown footer with ambient
|
|
3
|
+
* workspace awareness (email deltas, next calendar event).
|
|
4
|
+
*/
|
|
5
|
+
import type { SessionTracker } from './tracker.js';
|
|
6
|
+
/** Format the session context footer for a tool response. */
|
|
7
|
+
export declare function sessionContext(_toolName: string, email: string | undefined, tracker: SessionTracker): string;
|