gogcli-mcp 2.29.0 → 2.29.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.
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.29.0",
6
+ "version": "2.29.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/mint.yaml CHANGED
@@ -86,7 +86,7 @@ dependencies:
86
86
  # nine pins too.
87
87
  - kind: github-release
88
88
  repo: openclaw/gogcli
89
- tag: v0.39.0
89
+ tag: v0.39.1
90
90
  asset: "gogcli_*_linux_amd64.tar.gz"
91
91
  bin: [gog]
92
92
  state:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gogcli-mcp",
3
- "version": "2.29.0",
3
+ "version": "2.29.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>",
@@ -43,10 +43,10 @@
43
43
  "dependencies": {
44
44
  "@chrischall/mcp-utils": "^0.23.0",
45
45
  "@modelcontextprotocol/sdk": "^1.30.0",
46
- "zod": "^4.4.3"
46
+ "zod": "^4.5.4"
47
47
  },
48
48
  "devDependencies": {
49
- "@types/node": "^26.4.0",
49
+ "@types/node": "^26.4.1",
50
50
  "@vitest/coverage-v8": "^4.1.8",
51
51
  "esbuild": "^0.28.2",
52
52
  "typescript": "^7.0.2",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "source": "github",
8
8
  "subfolder": "packages/gogcli-mcp"
9
9
  },
10
- "version": "2.29.0",
10
+ "version": "2.29.1",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "gogcli-mcp",
15
- "version": "2.29.0",
15
+ "version": "2.29.1",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
package/src/runner.ts CHANGED
@@ -217,7 +217,7 @@ const TIMEOUT_MS = 30_000;
217
217
  // so the requirement change is surfaced in the release notes (see
218
218
  // .github/release.yml). This is the single source of truth for the required
219
219
  // version; keep the README/CLAUDE.md mention in sync.
220
- export const MIN_GOG_VERSION = '0.39.0';
220
+ export const MIN_GOG_VERSION = '0.39.1';
221
221
 
222
222
  // Interpret the GOG_READONLY kill-switch. `readEnvVar` already treats blank
223
223
  // values, 'undefined'/'null' sentinels, and unresolved .mcpb placeholders
package/src/worker.ts CHANGED
@@ -38,7 +38,7 @@ import { gogAuth, CONNECTOR_INSTRUCTIONS, type GogProps } from './connector-auth
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.29.0'; // x-release-please-version
41
+ const VERSION = '2.29.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.
@@ -0,0 +1,56 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { createRequire } from 'node:module';
3
+ import { realpathSync } from 'node:fs';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ // The zod counterpart of sdk-single-copy.test.ts, guarding the invariant that
7
+ // broke dependabot #333: the whole monorepo must resolve ONE copy of zod.
8
+ //
9
+ // Same shape of failure, a different package. `@cloudflare/vitest-pool-workers`
10
+ // (a root devDependency) declares zod as an **exact** pin, so it takes the
11
+ // hoisted root slot that `@chrischall/mcp-utils` and the MCP SDK resolve their
12
+ // zod peer from. The moment our workspaces ask for a newer zod than that pin,
13
+ // each nests its own copy — and because a `ZodType` carries brand-bearing
14
+ // internals, TypeScript compares the two NOMINALLY: every schema our tools hand
15
+ // `registerTool` fails with `TS2322: Type 'ZodString' is not assignable to type
16
+ // 'AnySchema'`, with no API change and nothing to fix in the source. #333 split
17
+ // the tree exactly that way and produced 11,024 type errors from a bump of one
18
+ // patch-level dependency.
19
+ //
20
+ // Read the resolved paths in such an error, not the signature.
21
+ //
22
+ // This asserts resolution identity rather than a version string: the failure is
23
+ // "two copies", not "the wrong version", and pinning a version here would just
24
+ // have to be edited on every future bump.
25
+ describe('zod is installed exactly once', () => {
26
+ const here = createRequire(import.meta.url);
27
+
28
+ // `import.meta.resolve`, not `require.resolve`, to reach the dependency's own
29
+ // entry: these packages are ESM-only, so their `exports` maps carry no
30
+ // `require` condition and CJS resolution of the bare specifier throws.
31
+ const resolveFrom = (specifier: string): string =>
32
+ realpathSync(createRequire(fileURLToPath(import.meta.resolve(specifier))).resolve('zod'));
33
+
34
+ it('resolves to the same file for this package and for @chrischall/mcp-utils', () => {
35
+ // mcp-utils declares zod as a peer, and its `accountParam` / `viewParam` /
36
+ // `paginationParams` helpers build the very schemas our registrars pass to
37
+ // `registerTool`, so its copy is the one they must be typed against.
38
+ expect(resolveFrom('@chrischall/mcp-utils')).toBe(realpathSync(here.resolve('zod')));
39
+ });
40
+
41
+ it('resolves to the same file for the MCP SDK, which types every tool schema', () => {
42
+ // `registerTool` accepts the raw shape and infers the handler's argument
43
+ // types from it; a second copy makes every one of those schemas foreign.
44
+ expect(resolveFrom('@modelcontextprotocol/sdk/server/mcp.js')).toBe(
45
+ realpathSync(here.resolve('zod')),
46
+ );
47
+ });
48
+
49
+ it('resolves to the same file for @cloudflare/vitest-pool-workers, which exact-pins zod', () => {
50
+ // The exact pin here is what captured the root hoist slot in #333, and it
51
+ // is why the root `overrides` block carries a zod entry.
52
+ expect(resolveFrom('@cloudflare/vitest-pool-workers')).toBe(
53
+ realpathSync(here.resolve('zod')),
54
+ );
55
+ });
56
+ });