gogcli-mcp-docs 4.6.2 → 4.7.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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Extended Google Docs for Claude via gogcli — auth + full Docs and comments support",
10
- "version": "4.6.2"
10
+ "version": "4.7.0"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "gogcli (Docs)",
16
16
  "source": "./",
17
17
  "description": "Extended Google Docs for Claude via gogcli — auth + full Docs and comments support",
18
- "version": "4.6.2",
18
+ "version": "4.7.0",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gogcli-mcp-docs",
3
3
  "displayName": "gogcli (Docs)",
4
- "version": "4.6.2",
4
+ "version": "4.7.0",
5
5
  "description": "Extended Google Docs for Claude via gogcli — auth + full Docs and comments support",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/index.js CHANGED
@@ -34731,6 +34731,7 @@ function escapeKey(key) {
34731
34731
  var DEFAULT_REQUEST_KEY = "confirmation";
34732
34732
  var DEFAULT_CONFIRMATION_LABEL = "Confirm this action should proceed.";
34733
34733
  var UNSUPPORTED_NOTE = "Nothing was done because this client cannot show a confirmation prompt (it declares no MCP elicitation capability), and this action is never taken without one";
34734
+ var DISABLED_NOTE = "Nothing was done because confirmation prompts are turned off for this server, and this action is never taken without one";
34734
34735
  var STATE_PREFIX = "mcpu.confirm.v1.";
34735
34736
  function bindingKey(binding) {
34736
34737
  if (binding.ttlSeconds !== void 0 && !(Number.isFinite(binding.ttlSeconds) && binding.ttlSeconds > 0)) {
@@ -34803,6 +34804,15 @@ ${JSON.stringify(preview, null, 2)}`,
34803
34804
  };
34804
34805
  const response = inputResponse(ctx.mcpReq.inputResponses, requestKey);
34805
34806
  const accepted = acceptedContent(ctx.mcpReq.inputResponses, requestKey, confirmationSchema);
34807
+ if (options.elicitation === false) {
34808
+ return textResult({
34809
+ confirmed: false,
34810
+ dispatched: false,
34811
+ action: options.action,
34812
+ reason: "confirmation-unsupported",
34813
+ note: options.unsupportedNote ? `${DISABLED_NOTE}. ${options.unsupportedNote}` : `${DISABLED_NOTE}.`
34814
+ });
34815
+ }
34806
34816
  if (response.kind === "missing") {
34807
34817
  if (callerAcceptsFormElicitation(ctx) === false) {
34808
34818
  return textResult({
@@ -34997,7 +35007,7 @@ async function tokenConfirmation(action, fb) {
34997
35007
  }
34998
35008
  async function requireConfirmationWithFallback(ctx, options) {
34999
35009
  const { tokenFallback, ...confirmation } = options;
35000
- if (tokenFallback && callerAcceptsFormElicitation(ctx) === false) {
35010
+ if (tokenFallback && (options.elicitation === false || callerAcceptsFormElicitation(ctx) === false)) {
35001
35011
  return tokenConfirmation(options.action, tokenFallback);
35002
35012
  }
35003
35013
  return requireConfirmation(ctx, confirmation);
@@ -35143,6 +35153,20 @@ function readConfirmMode(env = process.env) {
35143
35153
  }
35144
35154
  return "refuse";
35145
35155
  }
35156
+ function readConfirmElicitation(env = process.env) {
35157
+ const raw = readEnvVar("MCP_CONFIRM_ELICITATION", { env })?.trim().toLowerCase();
35158
+ if (!raw || raw === "on")
35159
+ return "on";
35160
+ if (raw === "off")
35161
+ return "off";
35162
+ const key = `elicitation:${raw}`;
35163
+ if (!warned.has(key)) {
35164
+ warned.add(key);
35165
+ process.stderr.write(`MCP_CONFIRM_ELICITATION="${raw}" is not one of on, off; treating it as on.
35166
+ `);
35167
+ }
35168
+ return "on";
35169
+ }
35146
35170
  function readConfirmTtl(env) {
35147
35171
  const raw = readEnvVar("MCP_CONFIRM_TTL_SECONDS", { env })?.trim();
35148
35172
  if (!raw)
@@ -35187,6 +35211,7 @@ function spentTokenStoreFromEnv(env = process.env) {
35187
35211
  }
35188
35212
  var CONFIRM_TOKEN_AUTO_INSTRUCTION = "Nothing has been done yet. Review this preview; if it is what was intended, call again with the same arguments plus confirmToken. (This server runs with MCP_CONFIRM_MODE=auto, so the user's approval in chat is not required.)";
35189
35213
  var REFUSE_HINT = "Set MCP_CONFIRM_MODE=ask-user on the server to allow two-step confirmation instead.";
35214
+ var ELICITATION_OFF_HINT = "MCP_CONFIRM_ELICITATION=off on the server turns confirmation prompts off.";
35190
35215
  var BAD_TTL_HINT = "MCP_CONFIRM_TTL_SECONDS on the server is not a positive whole number of seconds; fix it to allow two-step confirmation.";
35191
35216
  function boundArgs(args) {
35192
35217
  if (args === null || typeof args !== "object" || Array.isArray(args) || !("confirmToken" in args))
@@ -35200,10 +35225,13 @@ function confirmationFromEnv(options) {
35200
35225
  const spent2 = callerSpent ?? spentTokenStoreFromEnv(env);
35201
35226
  const mode = readConfirmMode(env);
35202
35227
  const ttlSeconds = readConfirmTtl(env);
35228
+ const elicitationOff = readConfirmElicitation(env) === "off";
35203
35229
  const bound = args === void 0 ? void 0 : boundArgs(args);
35204
- const confirmation = bound === void 0 || rest.binding ? rest : { ...rest, binding: { key: confirmKeyFromEnv(env), args: bound, ttlSeconds: ttlSeconds ?? DEFAULT_TTL_SECONDS2 } };
35230
+ const bindingAdded = bound === void 0 || rest.binding ? rest : { ...rest, binding: { key: confirmKeyFromEnv(env), args: bound, ttlSeconds: ttlSeconds ?? DEFAULT_TTL_SECONDS2 } };
35231
+ const confirmation = elicitationOff ? { ...bindingAdded, elicitation: false } : bindingAdded;
35205
35232
  if (mode === "refuse" || ttlSeconds === void 0) {
35206
- const hint = mode === "refuse" ? REFUSE_HINT : BAD_TTL_HINT;
35233
+ const reason = mode === "refuse" ? REFUSE_HINT : BAD_TTL_HINT;
35234
+ const hint = elicitationOff ? `${ELICITATION_OFF_HINT} ${reason}` : reason;
35207
35235
  return {
35208
35236
  ...confirmation,
35209
35237
  unsupportedNote: confirmation.unsupportedNote ? `${confirmation.unsupportedNote} ${hint}` : hint
@@ -36292,7 +36320,9 @@ function formatOneAccountHealth(a, now) {
36292
36320
  }
36293
36321
  if (a.valid === true) {
36294
36322
  let line = `\u2713 ${email3}: token valid.${ageStr}`;
36295
- if (age !== null && age >= HEALTH_WARN_AGE_DAYS) {
36323
+ if (age !== null && age > REFRESH_TOKEN_TESTING_TTL_DAYS) {
36324
+ line += ` It has outlived the 7-day "Testing" limit, so this OAuth app is not subject to the 7-day expiry.`;
36325
+ } else if (age !== null && age >= HEALTH_WARN_AGE_DAYS) {
36296
36326
  const est = new Date(Date.parse(a.created_at) + REFRESH_TOKEN_TESTING_TTL_DAYS * MS_PER_DAY).toISOString().slice(0, 10);
36297
36327
  line += ` \u26A0 Approaching the 7-day refresh-token limit for OAuth apps in "Testing" mode (if that applies, expect expiry around ${est}). Re-authorize soon, or publish the OAuth consent screen to "In production" to stop the weekly expiry.`;
36298
36328
  }
@@ -36369,7 +36399,15 @@ async function requireDispatchConfirmation(ctx, options) {
36369
36399
  confirmationLabel: options.confirmationLabel,
36370
36400
  ...options.unsupportedNote ? { unsupportedNote: options.unsupportedNote } : {}
36371
36401
  };
36372
- if (!fallback) return requireConfirmationWithFallback(ctx, confirmation);
36402
+ if (!fallback) {
36403
+ if (readConfirmElicitation() !== "off") return requireConfirmationWithFallback(ctx, confirmation);
36404
+ const offNote = "MCP_CONFIRM_ELICITATION=off on the server turns confirmation prompts off.";
36405
+ return requireConfirmationWithFallback(ctx, {
36406
+ ...confirmation,
36407
+ elicitation: false,
36408
+ unsupportedNote: confirmation.unsupportedNote ? `${offNote} ${confirmation.unsupportedNote}` : offNote
36409
+ });
36410
+ }
36373
36411
  return requireConfirmationWithFallback(ctx, confirmationFromEnv({
36374
36412
  ...confirmation,
36375
36413
  tool: fallback.tool,
@@ -36728,7 +36766,7 @@ var failIfNotEmptyParam = external_exports.boolean().optional().describe(
36728
36766
  );
36729
36767
 
36730
36768
  // ../gogcli-mcp/src/server.ts
36731
- var VERSION = true ? "4.6.2" : "0.0.0";
36769
+ var VERSION = true ? "4.7.0" : "0.0.0";
36732
36770
 
36733
36771
  // ../gogcli-mcp/src/bootstrap-auth.ts
36734
36772
  import { join as join7 } from "node:path";
package/manifest.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifest_version": "0.3",
4
4
  "name": "gogcli-mcp-docs",
5
5
  "display_name": "gogcli (Docs)",
6
- "version": "4.6.2",
6
+ "version": "4.7.0",
7
7
  "description": "Extended Google Docs for Claude via gogcli — auth + full Docs and comments support",
8
8
  "author": {
9
9
  "name": "Chris Hall",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gogcli-mcp-docs",
3
- "version": "4.6.2",
3
+ "version": "4.7.0",
4
4
  "mcpName": "io.github.chrischall/gogcli-mcp-docs",
5
5
  "description": "Extended Google Docs MCP server via gogcli — all base tools plus full Docs support",
6
6
  "author": "Claude Code (AI) <https://www.anthropic.com/claude>",
@@ -24,7 +24,7 @@
24
24
  "test:coverage": "vitest run --coverage"
25
25
  },
26
26
  "dependencies": {
27
- "@chrischall/mcp-utils": "^2.14.0",
27
+ "@chrischall/mcp-utils": "^2.15.0",
28
28
  "@modelcontextprotocol/server": "^2.3.0",
29
29
  "zod": "^4.6.1"
30
30
  },
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "source": "github",
8
8
  "subfolder": "packages/gogcli-mcp-docs"
9
9
  },
10
- "version": "4.6.2",
10
+ "version": "4.7.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "gogcli-mcp-docs",
15
- "version": "4.6.2",
15
+ "version": "4.7.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },