gogcli-mcp-slides 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.
package/manifest.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifest_version": "0.3",
4
4
  "name": "gogcli-mcp-slides",
5
5
  "display_name": "gogcli (Slides)",
6
- "version": "3.0.0",
6
+ "version": "4.0.1",
7
7
  "description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
8
8
  "author": {
9
9
  "name": "Chris Hall",
package/mint.yaml CHANGED
@@ -11,25 +11,29 @@ env:
11
11
  - name: GOG_CLIENT_ID
12
12
  required: false
13
13
  help: >-
14
- Google OAuth client id. NOTE: on the local-spawn path the child `gog`
15
- receives a sanitized env — runner.ts drops GOG_ACCESS_TOKEN and every
16
- *_TOKEN / *_SECRET / *_KEY / *_CREDENTIALS variable — so the CLI
17
- authenticates from its own stored credentials under $HOME (see
18
- state.dataDir), not from these variables being passed through.
14
+ Google OAuth client id. Read by the Node wrapper at startup
15
+ (bootstrap-auth.ts), which imports it into gog's keyring via a temp file
16
+ together with GOG_CLIENT_SECRET, GOG_REFRESH_TOKEN and GOG_ACCOUNT — set
17
+ all four or none. Not a secret, so unlike GOG_CLIENT_SECRET and
18
+ GOG_REFRESH_TOKEN it is not stripped from the spawned `gog`'s
19
+ environment; gog authenticates from its keyring under $HOME (see
20
+ state.dataDir).
19
21
  - name: GOG_CLIENT_SECRET
20
22
  secret: true
21
23
  required: false
22
24
  help: >-
23
- Google OAuth client secret. Stripped from the spawned CLI's environment
24
- by runner.ts's *_SECRET rule — see GOG_CLIENT_ID.
25
+ Google OAuth client secret. Imported into gog's keyring at startup with
26
+ GOG_CLIENT_ID; stripped from the spawned CLI's environment by runner.ts's
27
+ *_SECRET rule.
25
28
  - name: GOG_REFRESH_TOKEN
26
29
  secret: true
27
30
  required: false
28
31
  help: >-
29
- Google OAuth refresh token. Stripped from the spawned CLI's environment
30
- by runner.ts's *_TOKEN rule — see GOG_CLIENT_ID. A hosted deployment must
31
- therefore carry gog's authorised-account state in its persisted data dir,
32
- or drive a remote runner via GOG_RUNNER_URL.
32
+ Google OAuth refresh token (`gog auth tokens export` prints one). Imported
33
+ into gog's keyring at startup with GOG_CLIENT_ID; stripped from the
34
+ spawned CLI's environment by runner.ts's *_TOKEN rule. Changing it
35
+ re-imports on the next start; an in-connector re-auth
36
+ (gog_auth_add_url/complete) stays in effect until it changes.
33
37
  - name: GOG_ACCESS_TOKEN
34
38
  secret: true
35
39
  required: false
@@ -40,8 +44,21 @@ env:
40
44
  - name: GOG_ACCOUNT
41
45
  required: false
42
46
  help: >-
43
- Which configured Google account to act as, when more than one is
44
- authorised. Defaults to the single/most recent account.
47
+ The Google account to act as. Required for the startup auth bootstrap
48
+ (the refresh token is imported under this email); otherwise defaults to
49
+ gog's single/most recent account.
50
+ - name: GOG_KEYRING_BACKEND
51
+ required: false
52
+ help: >-
53
+ gog's credential store. Set to "file" on a headless host — there is no OS
54
+ keychain — so the keyring lives on the persistent data dir.
55
+ - name: GOG_KEYRING_PASSWORD
56
+ secret: true
57
+ required: false
58
+ help: >-
59
+ Encrypts gog's file keyring on the data dir. Required with
60
+ GOG_KEYRING_BACKEND=file. Deliberately not stripped from the spawned
61
+ CLI's environment — it is the one credential gog itself reads.
45
62
  - name: GOG_READONLY
46
63
  required: false
47
64
  help: >-
@@ -52,24 +69,13 @@ env:
52
69
  help: >-
53
70
  Path to the `gog` binary. Leave unset when the dependency below supplies
54
71
  it; set it only to point at a binary you manage yourself.
55
- - name: GOG_RUNNER_URL
56
- required: false
57
- help: >-
58
- URL of a remote gog runner to execute against instead of spawning the
59
- local binary. If you set this, add its host to egress.allow.
60
- - name: GOG_RUNNER_KEY
61
- secret: true
62
- required: false
63
- help: >-
64
- Shared key authenticating calls to GOG_RUNNER_URL. Required whenever that
65
- is set.
66
72
  - name: GOG_TIMEZONE
67
73
  required: false
68
74
  help: >-
69
- The IANA zone gog itself formats its naive timestamps in. The wrapper
70
- reads it (naiveSourceTimeZone) to re-attach the correct offset, so it
71
- should match gog's own configuration. Falls back to DISPLAY_TZ, then to
72
- America/New_York.
75
+ The IANA zone gog formats its naive timestamps in. The wrapper passes
76
+ it to every spawned gog and reads it back (naiveSourceTimeZone) to
77
+ re-attach the offset, so the two always agree. Unset or invalid, both
78
+ use DISPLAY_TZ, then America/New_York — never the host's local zone.
73
79
  - name: DISPLAY_TZ
74
80
  required: false
75
81
  help: >-
@@ -81,9 +87,8 @@ dependencies:
81
87
  # Every tool shells out to the `gog` CLI; without it the server starts and
82
88
  # then fails on the first call. This tag must track
83
89
  # packages/gogcli-mcp/src/runner.ts's MIN_GOG_VERSION (the floor the tools
84
- # assume) and the fly-gog-runner/Dockerfile GOG_VERSION build arg. See
85
- # CLAUDE.md "Required gog version" — bumping the floor means bumping these
86
- # nine pins too.
90
+ # assume). See CLAUDE.md "Required gog version" — bumping the floor means
91
+ # bumping these nine pins, and the pin stored on each mcp-host registration.
87
92
  - kind: github-release
88
93
  repo: openclaw/gogcli
89
94
  tag: v0.40.0
@@ -92,15 +97,14 @@ dependencies:
92
97
  state:
93
98
  dataDir: true
94
99
  reason: >-
95
- `gog` keeps its authorised-account state and token cache under $HOME.
96
- Without a persistent data dir every cold start has no account configured and
97
- every tool call fails until the credentials are re-supplied.
100
+ `gog` keeps its authorised-account state and file keyring under $HOME, and
101
+ the wrapper keeps its auth-bootstrap marker (~/.gogcli-mcp) there, so a
102
+ restart neither re-imports an unchanged secret nor discards an
103
+ in-connector re-auth. Without a persistent data dir every cold start has
104
+ only what the env secrets can re-seed.
98
105
  egress:
99
106
  allow:
100
107
  # Google OAuth token exchange and the Google REST APIs the CLI calls.
101
108
  - oauth2.googleapis.com
102
109
  - www.googleapis.com
103
110
  - googleapis.com
104
- #
105
- # NOTE: if you set GOG_RUNNER_URL to run against a remote gog runner, add
106
- # that host here too — it is supplied at runtime and cannot be declared.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gogcli-mcp-slides",
3
- "version": "3.0.0",
3
+ "version": "4.0.1",
4
4
  "mcpName": "io.github.chrischall/gogcli-mcp-slides",
5
5
  "description": "Extended Google Slides MCP server via gogcli — auth + full Slides support",
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-slides"
9
9
  },
10
- "version": "3.0.0",
10
+ "version": "4.0.1",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "gogcli-mcp-slides",
15
- "version": "3.0.0",
15
+ "version": "4.0.1",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
package/src/index.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { runMcp } from '@chrischall/mcp-utils';
3
- import { VERSION, authToolsFor, registerSlidesTools, useRemoteGogRunner } from '../../gogcli-mcp/src/lib.js';
3
+ import { VERSION, authToolsFor, registerSlidesTools, bootstrapGogAuth } from '../../gogcli-mcp/src/lib.js';
4
4
  import { registerExtraSlidesTools } from './tools/slides-extra.js';
5
5
 
6
- // Execute `gog` on the Fly backend when the host points us at one; without
7
- // it, nothing changes and we spawn the local binary as before.
8
- useRemoteGogRunner();
6
+
7
+ // Seed gog's keyring from GOG_CLIENT_ID/SECRET/REFRESH_TOKEN/ACCOUNT when the host injects them.
8
+ await bootstrapGogAuth();
9
9
 
10
10
  await runMcp({
11
11
  name: 'gogcli-slides',
package/tsconfig.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "rootDir": "../"
6
6
  },
7
7
  "include": ["src/**/*", "../gogcli-mcp/src/**/*"],
8
- "exclude": ["node_modules", "dist", "../gogcli-mcp/src/worker.ts"]
8
+ "exclude": ["node_modules", "dist"]
9
9
  }