gogcli-mcp 2.19.0 → 2.19.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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
10
- "version": "2.19.0"
10
+ "version": "2.19.1"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "gogcli",
16
16
  "source": "./",
17
17
  "description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
18
- "version": "2.19.0",
18
+ "version": "2.19.1",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gogcli-mcp",
3
3
  "displayName": "gogcli",
4
- "version": "2.19.0",
4
+ "version": "2.19.1",
5
5
  "description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/index.js CHANGED
@@ -33072,7 +33072,7 @@ function registerTasksTools(server) {
33072
33072
  }
33073
33073
 
33074
33074
  // src/server.ts
33075
- var VERSION = true ? "2.19.0" : "0.0.0";
33075
+ var VERSION = true ? "2.19.1" : "0.0.0";
33076
33076
  var BASE_TOOL_REGISTRARS = [
33077
33077
  registerApiTools,
33078
33078
  registerAuthTools,
package/dist/lib.js CHANGED
@@ -24978,7 +24978,7 @@ function registerTasksTools(server) {
24978
24978
  }
24979
24979
 
24980
24980
  // src/server.ts
24981
- var VERSION = true ? "2.19.0" : "0.0.0";
24981
+ var VERSION = true ? "2.19.1" : "0.0.0";
24982
24982
  var BASE_TOOL_REGISTRARS = [
24983
24983
  registerApiTools,
24984
24984
  registerAuthTools,
package/manifest.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifest_version": "0.3",
4
4
  "name": "gogcli-mcp",
5
5
  "display_name": "gogcli",
6
- "version": "2.19.0",
6
+ "version": "2.19.1",
7
7
  "description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
8
8
  "author": {
9
9
  "name": "Chris Hall",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gogcli-mcp",
3
- "version": "2.19.0",
3
+ "version": "2.19.1",
4
4
  "mcpName": "io.github.chrischall/gogcli-mcp",
5
5
  "description": "MCP server wrapping gogcli for Google service access",
6
6
  "author": "Claude Code (AI) <https://www.anthropic.com/claude>",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "source": "github",
8
8
  "subfolder": "packages/gogcli-mcp"
9
9
  },
10
- "version": "2.19.0",
10
+ "version": "2.19.1",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "gogcli-mcp",
15
- "version": "2.19.0",
15
+ "version": "2.19.1",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
package/src/worker.ts CHANGED
@@ -38,7 +38,7 @@ import { gogAuth, type GogProps } from './connector-auth.js';
38
38
  // connector with all ~360 tools at once. Add whichever paths you want as separate
39
39
  // connectors in claude.ai (each authorizes with the same connector key).
40
40
 
41
- const VERSION = '2.19.0'; // x-release-please-version
41
+ const VERSION = '2.19.1'; // x-release-please-version
42
42
 
43
43
  // Build an McpAgent subclass whose init() registers `registrars` onto its server,
44
44
  // each handler wrapped in the ALS scope carrying the per-session Fly executor.
@@ -1,3 +1,6 @@
1
+ import { readdirSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
1
4
  import { describe, it, expect, vi, afterEach } from 'vitest';
2
5
  import { useRemoteGogRunner } from '../src/remote-runner.js';
3
6
  import { runExecutor } from '../src/runner.js';
@@ -51,3 +54,37 @@ describe('useRemoteGogRunner', () => {
51
54
  expect((init.headers as Record<string, string>).Authorization).toBe('Bearer secret');
52
55
  });
53
56
  });
57
+
58
+ /**
59
+ * The seam is opt-in PER BIN — `useRemoteGogRunner()` is a call in each
60
+ * package's `index.ts`, and a package that omits it spawns the binary no
61
+ * matter what the host sets. That shipped: 2.19.0 wired base, sheets, docs,
62
+ * drive and gmail, and left calendar, classroom, contacts and slides behind,
63
+ * so those four answered every tool call on mcp-host with "gog executable not
64
+ * found" — a host with no binary and no way to ask for the backend.
65
+ *
66
+ * Nothing caught it because each package's suite covers its TOOLS, and
67
+ * `src/index.ts` is excluded from the coverage gate in every package (it is
68
+ * the bin: it boots a server and cannot be imported under test). So this
69
+ * asserts on the source text instead, across the whole workspace — the one
70
+ * check that scales to the next sub-package, which will otherwise be added by
71
+ * copying an index.ts that predates the seam.
72
+ */
73
+ describe('every package bin', () => {
74
+ const packagesDir = fileURLToPath(new URL('../../', import.meta.url));
75
+ const bins = readdirSync(packagesDir)
76
+ .filter((name) => name.startsWith('gogcli-mcp'))
77
+ .map((name) => [name, join(packagesDir, name, 'src', 'index.ts')] as const);
78
+
79
+ it('finds every package (guards the glob itself against silently matching nothing)', () => {
80
+ expect(bins.length).toBeGreaterThanOrEqual(9);
81
+ });
82
+
83
+ it.each(bins)('%s installs the remote executor before starting the server', (_name, path) => {
84
+ const source = readFileSync(path, 'utf8');
85
+ expect(source).toContain('useRemoteGogRunner()');
86
+ // Order matters as much as presence: `runMcp` starts serving, so a call
87
+ // placed after it could be beaten by a tool call and fall back to spawning.
88
+ expect(source.indexOf('useRemoteGogRunner()')).toBeLessThan(source.indexOf('runMcp({'));
89
+ });
90
+ });