@aaronsb/google-workspace-mcp 2.2.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.
Files changed (74) hide show
  1. package/build/__tests__/server/handlers/drive.test.js +2 -15
  2. package/build/__tests__/server/handlers/drive.test.js.map +1 -1
  3. package/build/__tests__/server/session/context.test.d.ts +1 -0
  4. package/build/__tests__/server/session/context.test.js +101 -0
  5. package/build/__tests__/server/session/context.test.js.map +1 -0
  6. package/build/__tests__/server/session/tracker.test.d.ts +1 -0
  7. package/build/__tests__/server/session/tracker.test.js +146 -0
  8. package/build/__tests__/server/session/tracker.test.js.map +1 -0
  9. package/build/__tests__/services/gmail/mime.test.js +1 -161
  10. package/build/__tests__/services/gmail/mime.test.js.map +1 -1
  11. package/build/accounts/oauth.js +17 -8
  12. package/build/accounts/oauth.js.map +1 -1
  13. package/build/coverage/analyze.d.ts +13 -0
  14. package/build/coverage/analyze.js +49 -0
  15. package/build/coverage/analyze.js.map +1 -0
  16. package/build/coverage/baseline.d.ts +8 -0
  17. package/build/coverage/baseline.js +91 -0
  18. package/build/coverage/baseline.js.map +1 -0
  19. package/build/coverage/compare.d.ts +6 -0
  20. package/build/coverage/compare.js +129 -0
  21. package/build/coverage/compare.js.map +1 -0
  22. package/build/coverage/discover.d.ts +7 -0
  23. package/build/coverage/discover.js +168 -0
  24. package/build/coverage/discover.js.map +1 -0
  25. package/build/coverage/report.d.ts +6 -0
  26. package/build/coverage/report.js +93 -0
  27. package/build/coverage/report.js.map +1 -0
  28. package/build/coverage/types.d.ts +70 -0
  29. package/build/coverage/types.js +14 -0
  30. package/build/coverage/types.js.map +1 -0
  31. package/build/executor/gws.d.ts +2 -0
  32. package/build/executor/gws.js +2 -2
  33. package/build/executor/gws.js.map +1 -1
  34. package/build/factory/manifest.yaml +183 -6
  35. package/build/factory/patches.js +2 -0
  36. package/build/factory/patches.js.map +1 -1
  37. package/build/server/handler.js +36 -3
  38. package/build/server/handler.js.map +1 -1
  39. package/build/server/handlers/calendar.js +8 -4
  40. package/build/server/handlers/calendar.js.map +1 -1
  41. package/build/server/handlers/drive.js +0 -16
  42. package/build/server/handlers/drive.js.map +1 -1
  43. package/build/server/handlers/workspace.js +63 -0
  44. package/build/server/handlers/workspace.js.map +1 -1
  45. package/build/server/scratchpad/adapters/send-email-draft.d.ts +1 -0
  46. package/build/server/scratchpad/adapters/send-email-draft.js +29 -20
  47. package/build/server/scratchpad/adapters/send-email-draft.js.map +1 -1
  48. package/build/server/scratchpad/adapters/send-email.d.ts +2 -1
  49. package/build/server/scratchpad/adapters/send-email.js +31 -37
  50. package/build/server/scratchpad/adapters/send-email.js.map +1 -1
  51. package/build/server/session/context.d.ts +7 -0
  52. package/build/server/session/context.js +56 -0
  53. package/build/server/session/context.js.map +1 -0
  54. package/build/server/session/index.d.ts +9 -0
  55. package/build/server/session/index.js +14 -0
  56. package/build/server/session/index.js.map +1 -0
  57. package/build/server/session/tracker.d.ts +36 -0
  58. package/build/server/session/tracker.js +135 -0
  59. package/build/server/session/tracker.js.map +1 -0
  60. package/build/server/tools.js +4 -4
  61. package/build/server/tools.js.map +1 -1
  62. package/build/services/calendar/patch.js +4 -2
  63. package/build/services/calendar/patch.js.map +1 -1
  64. package/build/services/docs/patch.d.ts +8 -0
  65. package/build/services/docs/patch.js +72 -0
  66. package/build/services/docs/patch.js.map +1 -0
  67. package/build/services/drive/patch.js +165 -10
  68. package/build/services/drive/patch.js.map +1 -1
  69. package/build/services/gmail/mime.d.ts +4 -24
  70. package/build/services/gmail/mime.js +4 -93
  71. package/build/services/gmail/mime.js.map +1 -1
  72. package/build/services/gmail/patch.js +35 -38
  73. package/build/services/gmail/patch.js.map +1 -1
  74. package/package.json +2 -2
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Types for the build-time coverage analysis tool (ADR-100).
3
+ */
4
+ /** Services eligible for the factory model. */
5
+ export declare const ELIGIBLE_SERVICES: readonly ["drive", "sheets", "gmail", "calendar", "docs", "slides", "tasks", "people", "chat", "keep", "meet", "events"];
6
+ /** Internal/path params to skip when comparing parameters. */
7
+ export declare const SKIP_PARAMS: Set<string>;
8
+ export interface DiscoveredParam {
9
+ type: string;
10
+ description: string;
11
+ required: boolean;
12
+ default?: unknown;
13
+ enum?: string[];
14
+ deprecated?: boolean;
15
+ }
16
+ export interface DiscoveredOperation {
17
+ resourcePath: string;
18
+ description: string;
19
+ httpMethod?: string;
20
+ params: Record<string, DiscoveredParam>;
21
+ }
22
+ export interface DiscoveredHelper {
23
+ name: string;
24
+ description: string;
25
+ }
26
+ export interface DiscoveredService {
27
+ operations: Record<string, DiscoveredOperation>;
28
+ helpers: Record<string, DiscoveredHelper>;
29
+ }
30
+ export interface DiscoveredSurface {
31
+ gwsVersion: string;
32
+ services: Record<string, DiscoveredService>;
33
+ }
34
+ export type BaselineStatus = 'covered' | 'gap' | 'excluded';
35
+ export interface BaselineEntry {
36
+ status: BaselineStatus;
37
+ reason?: string;
38
+ params?: Record<string, 'covered' | 'gap'>;
39
+ }
40
+ export interface CoverageBaseline {
41
+ gwsVersion: string;
42
+ generatedAt: string;
43
+ services: Record<string, {
44
+ operations: Record<string, BaselineEntry>;
45
+ }>;
46
+ }
47
+ export interface ParamGap {
48
+ paramName: string;
49
+ inGws: boolean;
50
+ inManifest: boolean;
51
+ details?: string;
52
+ }
53
+ export interface ServiceCoverage {
54
+ service: string;
55
+ totalOps: number;
56
+ coveredOps: number;
57
+ excludedOps: number;
58
+ gapOps: number;
59
+ newOps: string[];
60
+ removedOps: string[];
61
+ paramGaps: Record<string, ParamGap[]>;
62
+ }
63
+ export interface CoverageReport {
64
+ gwsVersion: string;
65
+ timestamp: string;
66
+ totalOps: number;
67
+ coveredOps: number;
68
+ coveragePercent: number;
69
+ services: ServiceCoverage[];
70
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Types for the build-time coverage analysis tool (ADR-100).
3
+ */
4
+ /** Services eligible for the factory model. */
5
+ export const ELIGIBLE_SERVICES = [
6
+ 'drive', 'sheets', 'gmail', 'calendar', 'docs',
7
+ 'slides', 'tasks', 'people', 'chat', 'keep', 'meet', 'events',
8
+ ];
9
+ /** Internal/path params to skip when comparing parameters. */
10
+ export const SKIP_PARAMS = new Set([
11
+ 'userId', 'key', 'oauth_token', 'prettyPrint', 'quotaUser', 'alt',
12
+ 'uploadType', 'upload_protocol', 'fields', 'callback', 'access_token',
13
+ ]);
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/coverage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;IAC9C,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;CACrD,CAAC;AAEX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK;IACjE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc;CACtE,CAAC,CAAC"}
@@ -7,6 +7,8 @@ export interface GwsOptions {
7
7
  account?: string;
8
8
  timeout?: number;
9
9
  format?: 'json' | 'table' | 'yaml' | 'csv';
10
+ /** Override the working directory for the gws process. */
11
+ cwd?: string;
10
12
  }
11
13
  /**
12
14
  * Resolve gws binary location.
@@ -74,7 +74,7 @@ function filterStderr(stderr) {
74
74
  .trim();
75
75
  }
76
76
  export async function execute(args, options = {}) {
77
- const { account, timeout = DEFAULT_TIMEOUT, format = 'json' } = options;
77
+ const { account, timeout = DEFAULT_TIMEOUT, format = 'json', cwd } = options;
78
78
  const env = { ...process.env };
79
79
  if (account) {
80
80
  const accessToken = await getAccessToken(account);
@@ -95,7 +95,7 @@ export async function execute(args, options = {}) {
95
95
  settled = true;
96
96
  fn();
97
97
  } };
98
- const proc = spawn(gwsBinary, fullArgs, { env, stdio: ['ignore', 'pipe', 'pipe'] });
98
+ const proc = spawn(gwsBinary, fullArgs, { env, cwd, stdio: ['ignore', 'pipe', 'pipe'] });
99
99
  let stdout = '';
100
100
  let stderr = '';
101
101
  // Activity-based stall detection: kill if process goes silent
@@ -1 +1 @@
1
- {"version":3,"file":"gws.js","sourceRoot":"","sources":["../../src/executor/gws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gws.js","sourceRoot":"","sources":["../../src/executor/gws.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ services:
53
53
 
54
54
  send:
55
55
  type: action
56
- description: "compose and send a new email"
56
+ description: "compose and send a new email (creates draft when attachments present, 35MB attachment limit via upload endpoint)"
57
57
  helper: "+send"
58
58
  params:
59
59
  to:
@@ -76,10 +76,13 @@ services:
76
76
  description: "BCC email(s), comma-separated"
77
77
  attachments:
78
78
  type: string
79
- description: "Workspace filenames to attach, comma-separated (files must exist in workspace via manage_workspace)"
79
+ description: "Workspace filenames to attach, comma-separated (files must exist in workspace via manage_workspace). Creates draft when present."
80
80
  html:
81
81
  type: boolean
82
82
  description: "Treat body as HTML content (default: plain text)"
83
+ draft:
84
+ type: boolean
85
+ description: "Save as draft instead of sending (default: false, forced true when attachments present)"
83
86
  cli_args:
84
87
  to: "--to"
85
88
  subject: "--subject"
@@ -127,7 +130,7 @@ services:
127
130
 
128
131
  forward:
129
132
  type: action
130
- description: "forward a message to new recipients"
133
+ description: "forward a message to new recipients (includes original attachments by default)"
131
134
  helper: "+forward"
132
135
  params:
133
136
  messageId:
@@ -284,9 +287,12 @@ services:
284
287
 
285
288
  list:
286
289
  type: list
287
- description: "upcoming events on primary calendar"
290
+ description: "upcoming events defaults to primary calendar, use calendarId to target a specific calendar (use 'calendars' operation to discover IDs)"
288
291
  resource: events.list
289
292
  params:
293
+ calendarId:
294
+ type: string
295
+ description: "Calendar ID to query (default: 'primary'). Use 'calendars' operation to list available IDs."
290
296
  timeMin:
291
297
  type: string
292
298
  description: "Start of range (ISO 8601) — defaults to today"
@@ -317,6 +323,9 @@ services:
317
323
  description: "full event details by ID"
318
324
  resource: events.get
319
325
  params:
326
+ calendarId:
327
+ type: string
328
+ description: "Calendar ID (default: 'primary')"
320
329
  eventId:
321
330
  type: string
322
331
  description: "Event ID"
@@ -331,6 +340,9 @@ services:
331
340
  description: "create a new calendar event"
332
341
  helper: "+insert"
333
342
  params:
343
+ calendarId:
344
+ type: string
345
+ description: "Calendar ID (default: 'primary')"
334
346
  summary:
335
347
  type: string
336
348
  description: "Event title"
@@ -353,6 +365,7 @@ services:
353
365
  type: string
354
366
  description: "Comma-separated attendee emails"
355
367
  cli_args:
368
+ calendarId: "--calendar"
356
369
  summary: "--summary"
357
370
  start: "--start"
358
371
  end: "--end"
@@ -365,6 +378,9 @@ services:
365
378
  description: "create event from natural language (e.g. 'Lunch with Alice tomorrow at noon')"
366
379
  resource: events.quickAdd
367
380
  params:
381
+ calendarId:
382
+ type: string
383
+ description: "Calendar ID (default: 'primary')"
368
384
  text:
369
385
  type: string
370
386
  description: "Natural language event description"
@@ -377,6 +393,9 @@ services:
377
393
  description: "update an existing event (patch semantics — only changed fields needed)"
378
394
  resource: events.patch
379
395
  params:
396
+ calendarId:
397
+ type: string
398
+ description: "Calendar ID (default: 'primary')"
380
399
  eventId:
381
400
  type: string
382
401
  description: "Event ID to update"
@@ -404,6 +423,9 @@ services:
404
423
  description: "delete an event"
405
424
  resource: events.delete
406
425
  params:
426
+ calendarId:
427
+ type: string
428
+ description: "Calendar ID (default: 'primary')"
407
429
  eventId:
408
430
  type: string
409
431
  description: "Event ID to delete"
@@ -434,7 +456,7 @@ services:
434
456
 
435
457
  drive:
436
458
  tool_name: manage_drive
437
- 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."
438
460
  requires_email: true
439
461
  gws_service: drive
440
462
  operations:
@@ -458,6 +480,8 @@ services:
458
480
  maps_to: pageSize
459
481
  defaults:
460
482
  fields: "files(id, name, mimeType, modifiedTime, size, webViewLink)"
483
+ supportsAllDrives: true
484
+ includeItemsFromAllDrives: true
461
485
 
462
486
  get:
463
487
  type: detail
@@ -470,6 +494,7 @@ services:
470
494
  required: true
471
495
  defaults:
472
496
  fields: "id, name, mimeType, modifiedTime, size, webViewLink, owners, shared, parents"
497
+ supportsAllDrives: true
473
498
 
474
499
  # --- File operations ---
475
500
 
@@ -501,6 +526,8 @@ services:
501
526
  type: string
502
527
  description: "File ID of the image to view"
503
528
  required: true
529
+ defaults:
530
+ supportsAllDrives: true
504
531
 
505
532
  download:
506
533
  type: detail
@@ -516,6 +543,7 @@ services:
516
543
  description: "Local path to save the file"
517
544
  defaults:
518
545
  alt: media
546
+ supportsAllDrives: true
519
547
 
520
548
  copy:
521
549
  type: action
@@ -529,6 +557,8 @@ services:
529
557
  name:
530
558
  type: string
531
559
  description: "Name for the copy"
560
+ defaults:
561
+ supportsAllDrives: true
532
562
 
533
563
  delete:
534
564
  type: action
@@ -539,6 +569,8 @@ services:
539
569
  type: string
540
570
  description: "File ID to delete"
541
571
  required: true
572
+ defaults:
573
+ supportsAllDrives: true
542
574
 
543
575
  export:
544
576
  type: action
@@ -556,6 +588,8 @@ services:
556
588
  outputPath:
557
589
  type: string
558
590
  description: "Local path to save exported file"
591
+ defaults:
592
+ supportsAllDrives: true
559
593
 
560
594
  # --- Sharing ---
561
595
 
@@ -568,6 +602,8 @@ services:
568
602
  type: string
569
603
  description: "File ID"
570
604
  required: true
605
+ defaults:
606
+ supportsAllDrives: true
571
607
 
572
608
  share:
573
609
  type: action
@@ -587,6 +623,8 @@ services:
587
623
  description: "Permission level"
588
624
  enum: [reader, commenter, writer, organizer]
589
625
  default: reader
626
+ defaults:
627
+ supportsAllDrives: true
590
628
 
591
629
  unshare:
592
630
  type: action
@@ -601,6 +639,105 @@ services:
601
639
  type: string
602
640
  description: "Permission ID to remove (from listPermissions)"
603
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
604
741
 
605
742
  # ========================================================================
606
743
  # Sheets
@@ -699,7 +836,7 @@ services:
699
836
 
700
837
  docs:
701
838
  tool_name: manage_docs
702
- description: "Read and write Google Docs documents."
839
+ description: "Read, write, insert, and find-replace text in Google Docs documents."
703
840
  requires_email: true
704
841
  gws_service: docs
705
842
  operations:
@@ -736,6 +873,46 @@ services:
736
873
  documentId: "--document"
737
874
  text: "--text"
738
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
+
739
916
  # ========================================================================
740
917
  # Tasks
741
918
  # ========================================================================
@@ -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"}
@@ -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
- return handleQueue(params, domainHandlers);
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
- return handler(params);
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;AAOxD,6DAA6D;AAC7D,gEAAgE;AAChE,mEAAmE;AAEnE,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,2BAA2B;AAC3B,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,KAAK,CAAC;AACjB,CAAC;AAED,6DAA6D;AAE7D,MAAM,cAAc,GAAgC;IAClD,eAAe,EAAE,cAAc;IAC/B,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;CACpC,CAAC;AAEF,sCAAsC;AACtC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;IAClC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,MAA+B;IAE/B,YAAY,EAAE,CAAC;IAEf,2EAA2E;IAC3E,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,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: 'primary',
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 args = ['calendar', '+insert', '--summary', summary, '--start', start, '--end', end];
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: 'primary', eventId }),
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: 'primary', eventId }),
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":"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"}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/server/handlers/calendar.ts"],"names":[],"mappings":"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"}