@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
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Build-time coverage analysis tool (ADR-100).
4
4
  *
5
- * Compares the curated manifest against the gws CLI's actual surface
5
+ * Compares the curated manifest against Google's actual published API surface
6
6
  * to produce a structured coverage report.
7
7
  *
8
8
  * Usage:
@@ -23,9 +23,11 @@ async function main() {
23
23
  const manifest = loadManifest();
24
24
  // Load existing baseline (if any)
25
25
  const baseline = loadBaseline();
26
- // Discover the gws CLI surface
27
- process.stderr.write('[coverage] Discovering gws CLI surface...\n');
28
- const discovered = discoverSurface();
26
+ // Read Google's real surface from Discovery. Never derive it from help text: a
27
+ // regex over prose once invented the method `calendars.The`, and measured us
28
+ // against the wrong denominator. See ADR-103 item 11.
29
+ process.stderr.write("[coverage] Reading Google's API surface...\n");
30
+ const discovered = await discoverSurface();
29
31
  // Compare
30
32
  const report = compareSurfaces(manifest, discovered, baseline);
31
33
  // Output
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/coverage/analyze.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,sDAAsD;IACtD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,kCAAkC;IAClC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IAErC,UAAU;IACV,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE/D,SAAS;IACT,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/coverage/analyze.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,sDAAsD;IACtD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,kCAAkC;IAClC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,+EAA+E;IAC/E,6EAA6E;IAC7E,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAC;IAE3C,UAAU;IACV,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE/D,SAAS;IACT,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -18,12 +18,24 @@ export function loadBaseline(filePath) {
18
18
  return null;
19
19
  }
20
20
  }
21
- /** Build the set of manifest-covered resource/helper paths. */
21
+ /**
22
+ * Build the set of manifest-covered resource paths.
23
+ *
24
+ * This used to read `svc.paramGaps` — "ops with param gaps are covered" — which is a
25
+ * PROXY for coverage, and a backwards one. An operation with every parameter mapped has
26
+ * no param gaps, so it was absent here, fell through the checks below, and got written
27
+ * as `status: "gap"`. Coverage this good was indistinguishable from no coverage at all.
28
+ * 25 fully-covered operations were committed to coverage-baseline.json as uncovered
29
+ * work, including `docs:documents.create`, which takes no parameters and so could never
30
+ * have had a gap.
31
+ *
32
+ * Now it reads what the report actually measured, from the manifest. Same source the
33
+ * printed count uses — which is why the count was right while the artifact was wrong.
34
+ */
22
35
  function getCoveredPaths(report) {
23
36
  const covered = new Set();
24
37
  for (const svc of report.services) {
25
- // Ops with param gaps are covered
26
- for (const opPath of Object.keys(svc.paramGaps)) {
38
+ for (const opPath of svc.coveredPaths) {
27
39
  covered.add(`${svc.service}:${opPath}`);
28
40
  }
29
41
  }
@@ -32,9 +44,7 @@ function getCoveredPaths(report) {
32
44
  /** Generate a new baseline from a coverage report + discovered surface. */
33
45
  export function generateBaseline(report, discovered, existing) {
34
46
  const services = {};
35
- // Build a lookup of covered paths from the report's param gaps
36
- // (ops with param gaps are definitely covered)
37
- const paramGapPaths = getCoveredPaths(report);
47
+ const coveredPaths = getCoveredPaths(report);
38
48
  for (const svc of report.services) {
39
49
  const disc = discovered.services[svc.service];
40
50
  if (!disc)
@@ -52,9 +62,10 @@ export function generateBaseline(report, discovered, existing) {
52
62
  operations[opPath] = existingOps[opPath];
53
63
  continue;
54
64
  }
55
- // Check if covered (has param gaps recorded)
56
- const key = `${svc.service}:${opPath}`;
57
- if (paramGapPaths.has(key)) {
65
+ // Covered is covered — asked directly, not inferred from a side effect.
66
+ // A fully-mapped operation has no param gaps, and that is a sign of GOOD coverage,
67
+ // not missing coverage. `params` stays undefined when there is nothing to flag.
68
+ if (coveredPaths.has(`${svc.service}:${opPath}`)) {
58
69
  const gaps = svc.paramGaps[opPath] || [];
59
70
  operations[opPath] = {
60
71
  status: 'covered',
@@ -64,21 +75,27 @@ export function generateBaseline(report, discovered, existing) {
64
75
  };
65
76
  continue;
66
77
  }
67
- // Check if it's covered but without param gaps — need to check the report counts
68
- // We can infer from whether the op was NOT in newOps and NOT excluded
69
- const isNew = svc.newOps.includes(opPath);
70
- const wasCovered = existingOps[opPath]?.status === 'covered';
71
- if (wasCovered && !isNew) {
72
- operations[opPath] = { status: 'covered' };
73
- }
74
- else {
75
- operations[opPath] = { status: 'gap' };
76
- }
78
+ operations[opPath] = { status: 'gap' };
77
79
  }
78
80
  services[svc.service] = { operations };
79
81
  }
82
+ // The artifact must agree with the report it came from.
83
+ //
84
+ // This is the check whose absence let the bug live: `make coverage` PRINTED 60/233
85
+ // while the file it wrote recorded 35, and nothing ever compared the two. A baseline
86
+ // that silently contradicts its own report is worse than no baseline — it hands
87
+ // contributors a list of "gaps" that are already implemented.
88
+ const persisted = Object.values(services)
89
+ .flatMap(s => Object.values(s.operations))
90
+ .filter(op => op.status === 'covered').length;
91
+ const reported = report.services.reduce((n, s) => n + s.coveredOps, 0);
92
+ if (persisted !== reported) {
93
+ throw new Error(`coverage baseline disagrees with the report it was generated from: ` +
94
+ `the report counts ${reported} covered operations, the baseline recorded ${persisted}. ` +
95
+ `Refusing to write an artifact that contradicts its own measurement.`);
96
+ }
80
97
  return {
81
- gwsVersion: report.gwsVersion,
98
+ apiSurface: report.apiSurface,
82
99
  generatedAt: report.timestamp,
83
100
  services,
84
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/coverage/baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/coverage/baseline.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Compare curated manifest against discovered gws CLI surface.
2
+ * Compare the curated manifest against the API surface Google publishes.
3
3
  */
4
4
  import type { Manifest } from '../factory/types.js';
5
5
  import type { DiscoveredSurface, CoverageBaseline, CoverageReport } from './types.js';
@@ -1,13 +1,19 @@
1
1
  /**
2
- * Compare curated manifest against discovered gws CLI surface.
2
+ * Compare the curated manifest against the API surface Google publishes.
3
3
  */
4
4
  import { ELIGIBLE_SERVICES, SKIP_PARAMS } from './types.js';
5
- /** Build a set of gws resource paths and helper names covered by the manifest. */
5
+ /**
6
+ * Build the set of Google methods the manifest covers.
7
+ *
8
+ * An operation either names a Google method or is a custom handler composed of
9
+ * them. Anything that reshapes a response is built from raw Google in our own
10
+ * layer (ADR-103).
11
+ */
6
12
  function buildCoveredPaths(manifest) {
7
13
  const covered = new Map();
8
14
  for (const [_serviceName, serviceDef] of Object.entries(manifest.services)) {
9
15
  for (const [opName, opDef] of Object.entries(serviceDef.operations)) {
10
- const path = opDef.resource || opDef.helper;
16
+ const path = opDef.resource;
11
17
  if (!path)
12
18
  continue;
13
19
  const paramNames = new Set();
@@ -18,7 +24,7 @@ function buildCoveredPaths(manifest) {
18
24
  }
19
25
  }
20
26
  covered.set(path, {
21
- service: serviceDef.gws_service,
27
+ service: serviceDef.google_service,
22
28
  opName,
23
29
  params: paramNames,
24
30
  });
@@ -27,9 +33,9 @@ function buildCoveredPaths(manifest) {
27
33
  return covered;
28
34
  }
29
35
  /** Compare params for a covered operation. */
30
- function compareParams(manifestParams, gwsParams) {
36
+ function compareParams(manifestParams, googleParams) {
31
37
  const gaps = [];
32
- for (const [name, param] of Object.entries(gwsParams)) {
38
+ for (const [name, param] of Object.entries(googleParams)) {
33
39
  if (SKIP_PARAMS.has(name))
34
40
  continue;
35
41
  if (param.deprecated)
@@ -37,7 +43,7 @@ function compareParams(manifestParams, gwsParams) {
37
43
  if (!manifestParams.has(name)) {
38
44
  gaps.push({
39
45
  paramName: name,
40
- inGws: true,
46
+ inGoogle: true,
41
47
  inManifest: false,
42
48
  details: `${param.type}${param.required ? ', required' : ''} — ${param.description.slice(0, 80)}`,
43
49
  });
@@ -53,7 +59,7 @@ export function compareSurfaces(manifest, discovered, baseline) {
53
59
  for (const service of ELIGIBLE_SERVICES) {
54
60
  const disc = discovered.services[service];
55
61
  if (!disc) {
56
- // Service exists in eligible list but gws doesn't expose it
62
+ // Eligible, but Google publishes no Discovery document for it
57
63
  continue;
58
64
  }
59
65
  const baselineOps = baseline?.services[service]?.operations || {};
@@ -72,12 +78,14 @@ export function compareSurfaces(manifest, discovered, baseline) {
72
78
  const newOps = [];
73
79
  const removedOps = [];
74
80
  const paramGaps = {};
81
+ const coveredOpPaths = [];
75
82
  for (const opPath of allOps) {
76
83
  const isCovered = coveredPaths.has(opPath);
77
84
  const baselineEntry = baselineOps[opPath];
78
85
  const wasInBaseline = !!baselineEntry;
79
86
  if (isCovered) {
80
87
  covered++;
88
+ coveredOpPaths.push(opPath);
81
89
  // Check param gaps for resource-based operations
82
90
  const discOp = disc.operations[opPath];
83
91
  const manifestEntry = coveredPaths.get(opPath);
@@ -98,7 +106,7 @@ export function compareSurfaces(manifest, discovered, baseline) {
98
106
  }
99
107
  }
100
108
  }
101
- // Check for removed operations (in baseline but gone from gws)
109
+ // In the baseline, but Google no longer publishes it
102
110
  for (const opPath of Object.keys(baselineOps)) {
103
111
  if (!allOps.has(opPath)) {
104
112
  removedOps.push(opPath);
@@ -115,10 +123,11 @@ export function compareSurfaces(manifest, discovered, baseline) {
115
123
  newOps,
116
124
  removedOps,
117
125
  paramGaps,
126
+ coveredPaths: coveredOpPaths,
118
127
  });
119
128
  }
120
129
  return {
121
- gwsVersion: discovered.gwsVersion,
130
+ apiSurface: discovered.apiSurface,
122
131
  timestamp: new Date().toISOString(),
123
132
  totalOps: totalOps,
124
133
  coveredOps: totalCovered,
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/coverage/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/coverage/compare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoE,CAAC;IAE5F,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5D,2DAA2D;oBAC3D,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;gBAChB,OAAO,EAAE,UAAU,CAAC,cAAc;gBAClC,MAAM;gBACN,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8CAA8C;AAC9C,SAAS,aAAa,CACpB,cAA2B,EAC3B,YAA6C;IAE7C,MAAM,IAAI,GAAe,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,IAAI,KAAK,CAAC,UAAU;YAAE,SAAS;QAE/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC;gBACR,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aAClG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAkB,EAClB,UAA6B,EAC7B,QAAkC;IAElC,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,8DAA8D;YAC9D,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;QAElE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,gCAAgC;QAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAA+B,EAAE,CAAC;QACjD,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YAEtC,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,iDAAiD;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,MAAM,IAAI,aAAa,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAChE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpB,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;gBAChD,QAAQ,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC;gBACN,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;QACxB,YAAY,IAAI,OAAO,CAAC;QAExB,gBAAgB,CAAC,IAAI,CAAC;YACpB,OAAO;YACP,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,QAAQ;YACrB,MAAM,EAAE,GAAG;YACX,MAAM;YACN,UAAU;YACV,SAAS;YACT,YAAY,EAAE,cAAc;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,YAAY;QACxB,eAAe,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
+ import type { DiscoveredSurface } from './types.js';
1
2
  /**
2
- * gws CLI surface discovery — enumerates services, resources, methods,
3
- * helpers, and parameter schemas by invoking the gws binary.
3
+ * Read Google's real surface for every service the descriptor knows about.
4
+ *
5
+ * An operation is a Google method or it does not exist.
4
6
  */
5
- import { type DiscoveredSurface } from './types.js';
6
- /** Discover the full gws CLI surface for all eligible services. */
7
- export declare function discoverSurface(): DiscoveredSurface;
7
+ export declare function discoverSurface(): Promise<DiscoveredSurface>;
@@ -1,168 +1,84 @@
1
1
  /**
2
- * gws CLI surface discovery — enumerates services, resources, methods,
3
- * helpers, and parameter schemas by invoking the gws binary.
2
+ * Discover Google's API surface — by asking Google.
3
+ *
4
+ * The descriptor records where each service's Discovery document lives (which
5
+ * cannot be templated — Calendar is served from `calendar-json.googleapis.com`),
6
+ * so we look it up and read it.
7
+ *
8
+ * NEVER DERIVE THE SURFACE FROM HUMAN-READABLE PROSE. A regex over `--help` text
9
+ * once captured `calendars.The` — a word from a wrapped description line — and
10
+ * recorded it in coverage-baseline.json as an uncovered "gap": a method that does
11
+ * not exist, offered to contributors as work they could pick up. Nothing caught
12
+ * it, because the only source of truth was typography.
13
+ *
14
+ * The denominator must be GOOGLE'S surface. Counting invented operations, or
15
+ * services we deliberately do not support, makes the headline percentage fiction.
16
+ *
17
+ * WHY FETCH RATHER THAN READ THE DESCRIPTOR: the committed descriptor is
18
+ * deliberately structure-only — no descriptions — because it ships at RUNTIME and
19
+ * descriptions would add +162 KB to every install for text no server ever reads.
20
+ * Coverage is a DEV command. It can afford the network, and it needs the prose to
21
+ * make "the frontier" actionable.
22
+ *
23
+ * See ADR-103, verification item 11.
4
24
  */
5
- import { execFileSync } from 'node:child_process';
6
- import { resolveGwsBinary } from '../executor/gws.js';
7
- import { ELIGIBLE_SERVICES, SKIP_PARAMS, } from './types.js';
8
- const TIMEOUT = 10_000;
9
- let cachedBinary;
10
- function getBinary() {
11
- if (!cachedBinary)
12
- cachedBinary = resolveGwsBinary();
13
- return cachedBinary;
14
- }
15
- function gws(args) {
16
- return execFileSync(getBinary(), args, {
17
- encoding: 'utf8',
18
- timeout: TIMEOUT,
19
- env: { ...process.env },
20
- });
21
- }
22
- function gwsSafe(args) {
23
- try {
24
- return execFileSync(getBinary(), args, {
25
- encoding: 'utf8',
26
- timeout: TIMEOUT,
27
- env: { ...process.env },
28
- stdio: ['ignore', 'pipe', 'ignore'],
29
- });
25
+ import { loadDescriptor } from '../google/descriptor.js';
26
+ /** Flatten resources -> methods into dotted keys: `users.messages.attachments.get`. */
27
+ function walkMethods(node, prefix, out) {
28
+ for (const [name, method] of Object.entries(node.methods ?? {})) {
29
+ out[prefix ? `${prefix}.${name}` : name] = method;
30
30
  }
31
- catch {
32
- return null;
31
+ for (const [name, child] of Object.entries(node.resources ?? {})) {
32
+ walkMethods(child, prefix ? `${prefix}.${name}` : name, out);
33
33
  }
34
+ return out;
34
35
  }
35
- /** Parse service --help to find resources and helpers. */
36
- function parseServiceHelp(output) {
37
- const resources = [];
38
- const helpers = [];
39
- for (const line of output.split('\n')) {
40
- const trimmed = line.trimStart();
41
- // Helpers: lines starting with +
42
- const helperMatch = trimmed.match(/^(\+\w+)\s+(?:\[Helper\]\s*)?(.*)$/);
43
- if (helperMatch) {
44
- helpers.push({ name: helperMatch[1], description: helperMatch[2].trim() });
45
- continue;
46
- }
47
- // Resources: "word Operations on the '...' resource"
48
- const resourceMatch = trimmed.match(/^(\w+)\s+Operations on the/);
49
- if (resourceMatch && resourceMatch[1] !== 'help') {
50
- resources.push(resourceMatch[1]);
51
- }
52
- }
53
- return { resources, helpers };
54
- }
55
- /** Parse resource --help to find methods and sub-resources. */
56
- function parseResourceHelp(output) {
57
- const methods = [];
58
- const subResources = [];
59
- for (const line of output.split('\n')) {
60
- const trimmed = line.trimStart();
61
- if (!trimmed || trimmed.startsWith('Usage:') || trimmed.startsWith('FLAGS:'))
62
- continue;
63
- const resourceMatch = trimmed.match(/^(\w+)\s+Operations on the/);
64
- if (resourceMatch && resourceMatch[1] !== 'help') {
65
- subResources.push(resourceMatch[1]);
66
- continue;
67
- }
68
- // Methods: "word Description text" (not "help", not "Operations on")
69
- const methodMatch = trimmed.match(/^(\w+)\s+\S/);
70
- if (methodMatch && methodMatch[1] !== 'help' && !trimmed.includes('Operations on')) {
71
- methods.push(methodMatch[1]);
72
- }
73
- }
74
- return { methods, subResources };
75
- }
76
- /** Parse gws schema JSON output into DiscoveredParam records. */
77
- function parseSchemaParams(json) {
36
+ function toParams(method) {
78
37
  const params = {};
79
- try {
80
- const schema = JSON.parse(json);
81
- const rawParams = schema.parameters || {};
82
- for (const [name, def] of Object.entries(rawParams)) {
83
- if (SKIP_PARAMS.has(name))
84
- continue;
85
- const p = def;
86
- params[name] = {
87
- type: String(p.type === 'integer' ? 'number' : (p.type || 'string')),
88
- description: String(p.description || '').replace(/\n/g, ' ').slice(0, 200),
89
- required: Boolean(p.required),
90
- ...(p.default !== undefined ? { default: p.default } : {}),
91
- ...(p.enum ? { enum: p.enum } : {}),
92
- ...(p.deprecated ? { deprecated: true } : {}),
93
- };
94
- }
95
- }
96
- catch {
97
- // Schema parse failed — return empty params
38
+ for (const [name, p] of Object.entries(method.parameters ?? {})) {
39
+ params[name] = {
40
+ type: p.type ?? 'string',
41
+ description: p.description ?? '',
42
+ required: p.required === true,
43
+ ...(p.default !== undefined ? { default: p.default } : {}),
44
+ ...(p.enum ? { enum: p.enum } : {}),
45
+ ...(p.deprecated ? { deprecated: true } : {}),
46
+ };
98
47
  }
99
48
  return params;
100
49
  }
101
- /** Recursively discover methods under a resource path. */
102
- function discoverResource(service, parentPath, parts) {
103
- const operations = {};
104
- const helpOutput = gwsSafe([service, ...parts, '--help']);
105
- if (!helpOutput)
106
- return operations;
107
- const { methods, subResources } = parseResourceHelp(helpOutput);
108
- for (const method of methods) {
109
- const resourcePath = `${parentPath}.${method}`;
110
- // gws schema uses flat resource names (e.g. drive.replies.list),
111
- // not nested CLI paths (e.g. drive.comments.replies.list).
112
- // Try the full path first, fall back to leaf resource + method.
113
- const leafResource = parts[parts.length - 1];
114
- const schemaOutput = gwsSafe(['schema', `${service}.${parentPath}.${method}`])
115
- || (parts.length > 1 ? gwsSafe(['schema', `${service}.${leafResource}.${method}`]) : null);
116
- let params = {};
117
- let description = '';
118
- let httpMethod;
119
- if (schemaOutput) {
120
- params = parseSchemaParams(schemaOutput);
121
- try {
122
- const schema = JSON.parse(schemaOutput);
123
- description = String(schema.description || '').replace(/\n/g, ' ').slice(0, 200);
124
- httpMethod = schema.httpMethod;
125
- }
126
- catch { /* ignore */ }
127
- }
128
- operations[resourcePath] = { resourcePath, description, httpMethod, params };
129
- }
130
- for (const sub of subResources) {
131
- const subOps = discoverResource(service, `${parentPath}.${sub}`, [...parts, sub]);
132
- Object.assign(operations, subOps);
133
- }
134
- return operations;
135
- }
136
- /** Discover the full surface of a single gws service. */
137
- function discoverService(service) {
138
- const helpOutput = gwsSafe([service, '--help']);
139
- if (!helpOutput)
140
- return { operations: {}, helpers: {} };
141
- const { resources, helpers } = parseServiceHelp(helpOutput);
142
- const helperMap = {};
143
- for (const h of helpers) {
144
- helperMap[h.name] = h;
145
- }
146
- let operations = {};
147
- for (const resource of resources) {
148
- const resourceOps = discoverResource(service, resource, [resource]);
149
- operations = { ...operations, ...resourceOps };
150
- }
151
- return { operations, helpers: helperMap };
152
- }
153
- /** Discover the full gws CLI surface for all eligible services. */
154
- export function discoverSurface() {
155
- // Get gws version
156
- let gwsVersion = 'unknown';
157
- try {
158
- gwsVersion = gws(['--version']).trim().split('\n')[0];
159
- }
160
- catch { /* ignore */ }
50
+ /**
51
+ * Read Google's real surface for every service the descriptor knows about.
52
+ *
53
+ * An operation is a Google method or it does not exist.
54
+ */
55
+ export async function discoverSurface() {
56
+ const descriptor = await loadDescriptor();
161
57
  const services = {};
162
- for (const service of ELIGIBLE_SERVICES) {
163
- process.stderr.write(`[coverage] discovering ${service}...\n`);
164
- services[service] = discoverService(service);
58
+ for (const [serviceName, service] of Object.entries(descriptor.services)) {
59
+ process.stderr.write(`[coverage] reading ${serviceName} from Google...\n`);
60
+ const response = await fetch(service.discoveryUrl);
61
+ if (!response.ok) {
62
+ throw new Error(`[coverage] could not read Discovery for ${serviceName} at ${service.discoveryUrl}: ${response.status}`);
63
+ }
64
+ const doc = await response.json();
65
+ const operations = {};
66
+ for (const [resourcePath, method] of Object.entries(walkMethods(doc, '', {}))) {
67
+ operations[resourcePath] = {
68
+ resourcePath,
69
+ description: method.description ?? '',
70
+ httpMethod: method.httpMethod,
71
+ params: toParams(method),
72
+ };
73
+ }
74
+ services[serviceName] = { operations, helpers: {} };
165
75
  }
166
- return { gwsVersion, services };
76
+ return {
77
+ // The surface is Google's now, so the version that matters is Google's, not a
78
+ // CLI's. Recorded per service in the descriptor.
79
+ apiSurface: `google-discovery (${Object.entries(descriptor.services)
80
+ .map(([n, s]) => `${n}/${s.version}`).join(', ')})`,
81
+ services,
82
+ };
167
83
  }
168
84
  //# sourceMappingURL=discover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/coverage/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/coverage/discover.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,8 @@ function pct(n, total) {
23
23
  export function formatTerminalReport(report) {
24
24
  const lines = [];
25
25
  lines.push('');
26
- lines.push(`${BOLD}gws CLI Coverage Analysis${RESET}`);
27
- lines.push(`${DIM}gws version: ${report.gwsVersion}${RESET}`);
26
+ lines.push(`${BOLD}Google API Coverage${RESET}`);
27
+ lines.push(`${DIM}surface: ${report.apiSurface}${RESET}`);
28
28
  lines.push(`${DIM}timestamp: ${report.timestamp}${RESET}`);
29
29
  lines.push('');
30
30
  // Summary
@@ -67,7 +67,7 @@ export function formatTerminalReport(report) {
67
67
  const removedOps = report.services.flatMap(s => s.removedOps.map(op => ({ service: s.service, op })));
68
68
  if (removedOps.length > 0) {
69
69
  lines.push('');
70
- lines.push(`${BOLD}Removed from gws:${RESET}`);
70
+ lines.push(`${BOLD}Removed from Google's surface:${RESET}`);
71
71
  for (const { service, op } of removedOps) {
72
72
  lines.push(` ${RED}-${RESET} ${CYAN}${service}${RESET} ${op}`);
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/coverage/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/coverage/report.ts"],"names":[],"mappings":"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"}