gogcli-mcp 2.7.0 → 2.8.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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/LICENSE +21 -0
- package/dist/index.js +4 -2
- package/dist/lib.js +5 -3
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/runner.ts +1 -1
- package/src/tools/docs.ts +3 -1
- package/tests/tools/docs.test.ts +11 -0
|
@@ -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.
|
|
10
|
+
"version": "2.8.0"
|
|
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.
|
|
18
|
+
"version": "2.8.0",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Chris Hall
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.js
CHANGED
|
@@ -31816,12 +31816,14 @@ function registerDocsTools(server2) {
|
|
|
31816
31816
|
text: external_exports.string().describe("Text content to write"),
|
|
31817
31817
|
append: external_exports.boolean().optional().describe("Append to existing content instead of replacing (default: false)"),
|
|
31818
31818
|
checkOrphans: external_exports.boolean().optional().describe("Block the write (exit code 11) if it would orphan an open comment \u2014 i.e. remove the text the comment is anchored to. Recommended for replacement writes on commented docs."),
|
|
31819
|
+
batch: external_exports.string().optional().describe("Append this mutation to a persisted batch (from gog_batch_begin in gogcli-mcp-docs) instead of applying it \u2014 nothing changes in the doc until the batch is submitted."),
|
|
31819
31820
|
account: accountParam
|
|
31820
31821
|
}
|
|
31821
|
-
}, async ({ docId, text, append, checkOrphans, account }) => {
|
|
31822
|
+
}, async ({ docId, text, append, checkOrphans, batch, account }) => {
|
|
31822
31823
|
const args = ["docs", "write", docId, `--text=${text}`];
|
|
31823
31824
|
if (append) args.push("--append");
|
|
31824
31825
|
if (checkOrphans) args.push("--check-orphans");
|
|
31826
|
+
if (batch) args.push(`--batch=${batch}`);
|
|
31825
31827
|
return runOrDiagnose(args, { account });
|
|
31826
31828
|
});
|
|
31827
31829
|
server2.registerTool("gog_docs_find_replace", {
|
|
@@ -32330,7 +32332,7 @@ function registerTasksTools(server2) {
|
|
|
32330
32332
|
}
|
|
32331
32333
|
|
|
32332
32334
|
// src/server.ts
|
|
32333
|
-
var VERSION = true ? "2.
|
|
32335
|
+
var VERSION = true ? "2.8.0" : "0.0.0";
|
|
32334
32336
|
function createServer(options) {
|
|
32335
32337
|
return new McpServer({
|
|
32336
32338
|
name: options?.name ?? "gogcli",
|
package/dist/lib.js
CHANGED
|
@@ -30859,7 +30859,7 @@ var EMPTY_COMPLETION_RESULT = {
|
|
|
30859
30859
|
import { spawn } from "node:child_process";
|
|
30860
30860
|
import { delimiter } from "node:path";
|
|
30861
30861
|
var TIMEOUT_MS = 3e4;
|
|
30862
|
-
var MIN_GOG_VERSION = "0.
|
|
30862
|
+
var MIN_GOG_VERSION = "0.25.0";
|
|
30863
30863
|
function envOrUndefined(key) {
|
|
30864
30864
|
const value = process.env[key];
|
|
30865
30865
|
if (!value || value.startsWith("${")) return void 0;
|
|
@@ -31729,12 +31729,14 @@ function registerDocsTools(server) {
|
|
|
31729
31729
|
text: external_exports.string().describe("Text content to write"),
|
|
31730
31730
|
append: external_exports.boolean().optional().describe("Append to existing content instead of replacing (default: false)"),
|
|
31731
31731
|
checkOrphans: external_exports.boolean().optional().describe("Block the write (exit code 11) if it would orphan an open comment \u2014 i.e. remove the text the comment is anchored to. Recommended for replacement writes on commented docs."),
|
|
31732
|
+
batch: external_exports.string().optional().describe("Append this mutation to a persisted batch (from gog_batch_begin in gogcli-mcp-docs) instead of applying it \u2014 nothing changes in the doc until the batch is submitted."),
|
|
31732
31733
|
account: accountParam
|
|
31733
31734
|
}
|
|
31734
|
-
}, async ({ docId, text, append, checkOrphans, account }) => {
|
|
31735
|
+
}, async ({ docId, text, append, checkOrphans, batch, account }) => {
|
|
31735
31736
|
const args = ["docs", "write", docId, `--text=${text}`];
|
|
31736
31737
|
if (append) args.push("--append");
|
|
31737
31738
|
if (checkOrphans) args.push("--check-orphans");
|
|
31739
|
+
if (batch) args.push(`--batch=${batch}`);
|
|
31738
31740
|
return runOrDiagnose(args, { account });
|
|
31739
31741
|
});
|
|
31740
31742
|
server.registerTool("gog_docs_find_replace", {
|
|
@@ -32243,7 +32245,7 @@ function registerTasksTools(server) {
|
|
|
32243
32245
|
}
|
|
32244
32246
|
|
|
32245
32247
|
// src/server.ts
|
|
32246
|
-
var VERSION = true ? "2.
|
|
32248
|
+
var VERSION = true ? "2.8.0" : "0.0.0";
|
|
32247
32249
|
function createServer(options) {
|
|
32248
32250
|
return new McpServer({
|
|
32249
32251
|
name: options?.name ?? "gogcli",
|
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.
|
|
6
|
+
"version": "2.8.0",
|
|
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
package/server.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/gogcli-mcp"
|
|
9
9
|
},
|
|
10
|
-
"version": "2.
|
|
10
|
+
"version": "2.8.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp",
|
|
15
|
-
"version": "2.
|
|
15
|
+
"version": "2.8.0",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
package/src/runner.ts
CHANGED
|
@@ -23,7 +23,7 @@ const TIMEOUT_MS = 30_000;
|
|
|
23
23
|
// so the requirement change is surfaced in the release notes (see
|
|
24
24
|
// .github/release.yml). This is the single source of truth for the required
|
|
25
25
|
// version; keep the README/CLAUDE.md mention in sync.
|
|
26
|
-
export const MIN_GOG_VERSION = '0.
|
|
26
|
+
export const MIN_GOG_VERSION = '0.25.0';
|
|
27
27
|
|
|
28
28
|
// Treat unresolved .mcpb placeholders ("${user_config.gog_path}") and empty
|
|
29
29
|
// strings the same as an unset env var. When an optional .mcpb user_config
|
package/src/tools/docs.ts
CHANGED
|
@@ -43,12 +43,14 @@ export function registerDocsTools(server: McpServer): void {
|
|
|
43
43
|
text: z.string().describe('Text content to write'),
|
|
44
44
|
append: z.boolean().optional().describe('Append to existing content instead of replacing (default: false)'),
|
|
45
45
|
checkOrphans: z.boolean().optional().describe('Block the write (exit code 11) if it would orphan an open comment — i.e. remove the text the comment is anchored to. Recommended for replacement writes on commented docs.'),
|
|
46
|
+
batch: z.string().optional().describe('Append this mutation to a persisted batch (from gog_batch_begin in gogcli-mcp-docs) instead of applying it — nothing changes in the doc until the batch is submitted.'),
|
|
46
47
|
account: accountParam,
|
|
47
48
|
},
|
|
48
|
-
}, async ({ docId, text, append, checkOrphans, account }) => {
|
|
49
|
+
}, async ({ docId, text, append, checkOrphans, batch, account }) => {
|
|
49
50
|
const args = ['docs', 'write', docId, `--text=${text}`];
|
|
50
51
|
if (append) args.push('--append');
|
|
51
52
|
if (checkOrphans) args.push('--check-orphans');
|
|
53
|
+
if (batch) args.push(`--batch=${batch}`);
|
|
52
54
|
return runOrDiagnose(args, { account });
|
|
53
55
|
});
|
|
54
56
|
|
package/tests/tools/docs.test.ts
CHANGED
|
@@ -102,6 +102,17 @@ describe('gog_docs_write', () => {
|
|
|
102
102
|
);
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
+
// gog 0.25.0
|
|
106
|
+
it('appends to a persisted batch via --batch', async () => {
|
|
107
|
+
vi.mocked(runner.run).mockResolvedValue('{}');
|
|
108
|
+
const handlers = setupHandlers();
|
|
109
|
+
await handlers.get('gog_docs_write')!({ docId: 'abc', text: 'T', batch: 'b1' });
|
|
110
|
+
expect(runner.run).toHaveBeenCalledWith(
|
|
111
|
+
['docs', 'write', 'abc', '--text=T', '--batch=b1'],
|
|
112
|
+
{ account: undefined },
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
|
|
105
116
|
// gog 0.24.0
|
|
106
117
|
it('adds --check-orphans when checkOrphans is true', async () => {
|
|
107
118
|
vi.mocked(runner.run).mockResolvedValue('{}');
|