@google/gemini-cli 0.64.0-preview.0 → 0.64.0-preview.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.
Files changed (67) hide show
  1. package/bundle/{chunk-EDVFNWRG.js → chunk-2XMCTNPW.js} +1 -1
  2. package/bundle/{chunk-HN74ORTP.js → chunk-46DG3MEK.js} +15 -3
  3. package/bundle/{chunk-UFQDAROY.js → chunk-4TPFLAND.js} +1 -1
  4. package/bundle/{chunk-A4TO2DY2.js → chunk-627EICDK.js} +8258 -14927
  5. package/bundle/{chunk-EDYPRCAA.js → chunk-6JF3XGX6.js} +2 -2
  6. package/bundle/{chunk-SDWOC67Z.js → chunk-7AV6KELE.js} +1 -1
  7. package/bundle/{chunk-EBP6K2WG.js → chunk-7FPYEHDV.js} +25 -9
  8. package/bundle/{chunk-U76XPSKR.js → chunk-7OAPTXNW.js} +89 -60
  9. package/bundle/{chunk-EFX5XL6M.js → chunk-BONG2QK5.js} +2 -2
  10. package/bundle/{chunk-VBVCLWLA.js → chunk-BRVQMVD5.js} +2 -2
  11. package/bundle/{chunk-2NQXIWQK.js → chunk-BSE7BCTQ.js} +15 -3
  12. package/bundle/chunk-BYVRH4VZ.js +103137 -0
  13. package/bundle/{chunk-HSZIYPL6.js → chunk-EE4FVMPM.js} +3 -3
  14. package/bundle/{chunk-QUCRASYB.js → chunk-GWH2CDNQ.js} +1 -1
  15. package/bundle/{chunk-NX7TO2DU.js → chunk-H2WBGLUF.js} +1 -1
  16. package/bundle/{chunk-Y2HXXBXI.js → chunk-J7KGQZGT.js} +1 -1
  17. package/bundle/{chunk-UBGF6JU5.js → chunk-JLBO43LX.js} +1 -1
  18. package/bundle/{chunk-ZPLFLZQA.js → chunk-L3JNREL2.js} +21 -7
  19. package/bundle/{chunk-ZQW7OGUO.js → chunk-MN5WGELB.js} +426 -91
  20. package/bundle/{chunk-6OFXOGEG.js → chunk-NTBZBCDY.js} +456 -94
  21. package/bundle/{chunk-ZOHM7BPT.js → chunk-ONZZ4MZP.js} +1 -1
  22. package/bundle/chunk-POXVKWMH.js +17519 -0
  23. package/bundle/{chunk-MLSLNORV.js → chunk-R7OEYEVK.js} +3 -3
  24. package/bundle/{chunk-KCCVXZ52.js → chunk-RIRMXE4G.js} +25 -9
  25. package/bundle/{chunk-2VN53SWW.js → chunk-RQB6UOWL.js} +9 -8
  26. package/bundle/{chunk-VJYKQD5D.js → chunk-SQZOWFWU.js} +3 -3
  27. package/bundle/chunk-T7UXARRX.js +401531 -0
  28. package/bundle/chunk-TDYDNMXH.js +425 -0
  29. package/bundle/chunk-TVJ4WAFU.js +512 -0
  30. package/bundle/chunk-XNLASMX4.js +154 -0
  31. package/bundle/chunk-Y3EQFIOM.js +118 -0
  32. package/bundle/chunk-YKGBOB2S.js +1571 -0
  33. package/bundle/{cleanup-GGCB2LVD.js → cleanup-5HA3CDPH.js} +2 -2
  34. package/bundle/{cleanup-JRDG3OTL.js → cleanup-LXXTR2OE.js} +2 -2
  35. package/bundle/{cleanup-SSW6IXTR.js → cleanup-RM72YALN.js} +2 -2
  36. package/bundle/cleanup-TBTZ6WZD.js +32 -0
  37. package/bundle/{core-IUIZE6JW.js → core-NBQGNNOM.js} +11 -1
  38. package/bundle/{devtoolsService-3SADPKKB.js → devtoolsService-BUAVC3ZD.js} +2 -2
  39. package/bundle/{devtoolsService-XZCKFZP5.js → devtoolsService-DCRIOTR4.js} +2 -2
  40. package/bundle/{devtoolsService-MF6JKRUV.js → devtoolsService-PXS65V3Y.js} +4 -3
  41. package/bundle/devtoolsService-ZHFOHPIS.js +4359 -0
  42. package/bundle/{dist-7L3BRW6V.js → dist-24APVFHT.js} +11 -1
  43. package/bundle/{core-6HRWFQZW.js → dist-EOOSNLUQ.js} +11 -1
  44. package/bundle/dist-YP3VMVL6.js +2262 -0
  45. package/bundle/docs/tools/mcp-server.md +41 -12
  46. package/bundle/{gemini-JPMMQ3KA.js → gemini-LHZDQRUM.js} +13 -13
  47. package/bundle/{gemini-ZMMDUAQJ.js → gemini-Q4LI2KHU.js} +214 -198
  48. package/bundle/gemini-QM6PZXIH.js +17934 -0
  49. package/bundle/{gemini-QOQNG5VY.js → gemini-UEMV4Y7B.js} +13 -13
  50. package/bundle/gemini.js +7 -7
  51. package/bundle/{interactiveCli-R3P4A3FC.js → interactiveCli-HMZ5ZWK4.js} +9 -20
  52. package/bundle/{interactiveCli-UDWGRVJL.js → interactiveCli-IQQYS4AV.js} +9 -20
  53. package/bundle/{interactiveCli-3I4TG5SK.js → interactiveCli-QCNSW3M7.js} +313 -305
  54. package/bundle/interactiveCli-QXZXFSNY.js +34968 -0
  55. package/bundle/{liteRtServerManager-OVPUSK2T.js → liteRtServerManager-2I4N5IEZ.js} +4 -4
  56. package/bundle/{liteRtServerManager-RAV63AGE.js → liteRtServerManager-3IZ2LKBD.js} +4 -4
  57. package/bundle/{liteRtServerManager-4MWCEVVM.js → liteRtServerManager-RABYR6TB.js} +4 -4
  58. package/bundle/liteRtServerManager-T3MOB7VG.js +65 -0
  59. package/bundle/{oauth2-provider-FVTRRJZR.js → oauth2-provider-I3CU23H3.js} +1 -1
  60. package/bundle/{oauth2-provider-EWOA64PR.js → oauth2-provider-INBLO6HF.js} +38 -72
  61. package/bundle/oauth2-provider-UZV2BJA3.js +235 -0
  62. package/bundle/{oauth2-provider-XFP63FGJ.js → oauth2-provider-XFPEOXNY.js} +1 -1
  63. package/bundle/{start-DJAIXPPY.js → start-4UWH3BI7.js} +6 -6
  64. package/bundle/{start-VQQ2Q5KT.js → start-CQTZWDLV.js} +6 -6
  65. package/bundle/{start-5O7TBK5L.js → start-D6DJS7SZ.js} +6 -6
  66. package/bundle/start-IXFELTCY.js +18 -0
  67. package/package.json +1 -1
@@ -326,17 +326,31 @@ This feature will not work in:
326
326
 
327
327
  <!-- prettier-ignore -->
328
328
  > [!IMPORTANT]
329
- > To protect against OAuth Identity Provider (IdP) mix-up attacks, Gemini CLI
330
- > validates the `iss` (issuer) parameter per
331
- > [RFC 9207](https://www.rfc-editor.org/rfc/rfc9207). When an expected issuer is
332
- > discovered or configured, authorization servers **must** return the `iss`
333
- > parameter in the callback redirect matching the issuer URL. Responses missing
334
- > `iss` or with mismatched issuers are rejected with HTTP 400.
329
+ > Gemini CLI validates the `iss` (issuer) parameter in OAuth authorization
330
+ > responses per [RFC 9207](https://www.rfc-editor.org/rfc/rfc9207) and the MCP
331
+ > specification:
332
+ >
333
+ > - Whenever the `iss` parameter is present in the callback redirect and an
334
+ > expected `issuer` is discovered or configured, `iss` **must** match the
335
+ > expected issuer URL.
336
+ > - When the authorization server metadata sets
337
+ > `authorization_response_iss_parameter_supported: true`, the callback
338
+ > redirect **must** include the `iss` parameter.
339
+ > - When the discovered authorization server metadata omits
340
+ > `authorization_response_iss_parameter_supported` or sets it to `false` (for
341
+ > example, providers that do not declare RFC 9207 support), callbacks without
342
+ > `iss` are accepted.
343
+ > - When you configure `issuer` explicitly in `settings.json` and Gemini CLI
344
+ > doesn't discover authorization server metadata, the callback redirect
345
+ > **must** include the `iss` parameter. To accept callbacks without `iss` for
346
+ > such a server, set `authorizationResponseIssParameterSupported` to `false`
347
+ > in the `oauth` configuration.
335
348
 
336
349
  ##### Expected authorization callback example
337
350
 
338
- When the authorization server redirects the user back to Gemini CLI, the
339
- redirect URI must include the `iss` parameter:
351
+ When the authorization server declares
352
+ `authorization_response_iss_parameter_supported: true`, the redirect URI must
353
+ include the `iss` parameter:
340
354
 
341
355
  ```http
342
356
  HTTP/1.1 302 Found
@@ -344,10 +358,14 @@ Location: http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE&iss=
344
358
  ```
345
359
 
346
360
  - **Valid response (accepted):** `iss` matches the configured or discovered
347
- issuer (`https://auth.example.com`).
348
- - **Missing `iss` (rejected):**
349
- `http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE` (fails
350
- with HTTP 400: `Missing issuer parameter in response`).
361
+ issuer (`https://auth.example.com`), or `iss` is omitted when the discovered
362
+ metadata doesn't set `authorization_response_iss_parameter_supported` to
363
+ `true`.
364
+ - **Missing `iss` when required (rejected):**
365
+ `http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE` when
366
+ `authorization_response_iss_parameter_supported` is `true`, or when `issuer`
367
+ is configured explicitly without discovered metadata (fails with HTTP 400:
368
+ `Missing issuer parameter in response`).
351
369
  - **Mismatched `iss` (rejected):** `iss` points to a different domain or
352
370
  includes userinfo (fails with HTTP 400: `Issuer mismatch`).
353
371
 
@@ -373,6 +391,12 @@ If your remote MCP server uses an authorization server with a known issuer URL:
373
391
  }
374
392
  ```
375
393
 
394
+ With this configuration, Gemini CLI requires the `iss` parameter in the
395
+ authorization callback. If the authorization server doesn't return `iss` in its
396
+ redirects, add `"authorizationResponseIssParameterSupported": false` to the
397
+ `oauth` block. Gemini CLI then accepts callbacks without `iss` while still
398
+ rejecting any `iss` value that doesn't match the configured `issuer`.
399
+
376
400
  #### Managing OAuth authentication
377
401
 
378
402
  Use the `/mcp auth` command to manage OAuth authentication:
@@ -398,6 +422,11 @@ Use the `/mcp auth` command to manage OAuth authentication:
398
422
  if omitted)
399
423
  - **`issuer`** (string): Authorization server issuer URL (auto-discovered if
400
424
  omitted; validated per RFC 9207)
425
+ - **`authorizationResponseIssParameterSupported`** (boolean): Whether the
426
+ authorization server returns the `iss` parameter in authorization responses
427
+ (RFC 9207). Auto-discovered from the authorization server metadata; defaults
428
+ to `true` when `issuer` is configured explicitly without discovered metadata.
429
+ Set to `false` to accept callbacks without `iss` for such a server.
401
430
  - **`tokenUrl`** (string): OAuth token endpoint (auto-discovered if omitted)
402
431
  - **`scopes`** (string[]): Required OAuth scopes
403
432
  - **`redirectUri`** (string): Custom redirect URI (defaults to an OS-assigned
@@ -2,7 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
2
2
  import {
3
3
  startCommand,
4
4
  startServer
5
- } from "./chunk-MLSLNORV.js";
5
+ } from "./chunk-EE4FVMPM.js";
6
6
  import {
7
7
  BuiltinCommandLoader,
8
8
  CommandService,
@@ -46,11 +46,11 @@ import {
46
46
  updateExtension,
47
47
  validateAuthMethod,
48
48
  validateContextFilePath
49
- } from "./chunk-EBP6K2WG.js";
49
+ } from "./chunk-7OAPTXNW.js";
50
50
  import {
51
51
  exitCli,
52
52
  require_source
53
- } from "./chunk-ZOHM7BPT.js";
53
+ } from "./chunk-ONZZ4MZP.js";
54
54
  import {
55
55
  appEvents
56
56
  } from "./chunk-5PS3AYFU.js";
@@ -88,11 +88,11 @@ import {
88
88
  resolveGemmaConfig,
89
89
  saveModelChange,
90
90
  stripAnsi
91
- } from "./chunk-HN74ORTP.js";
91
+ } from "./chunk-L3JNREL2.js";
92
92
  import {
93
93
  RELAUNCH_EXIT_CODE
94
- } from "./chunk-VBVCLWLA.js";
95
- import "./chunk-NX7TO2DU.js";
94
+ } from "./chunk-6JF3XGX6.js";
95
+ import "./chunk-RQB6UOWL.js";
96
96
  import {
97
97
  cleanupCheckpoints,
98
98
  registerCleanup,
@@ -101,7 +101,7 @@ import {
101
101
  runExitCleanup,
102
102
  runSyncCleanup,
103
103
  setupSignalHandlers
104
- } from "./chunk-UBGF6JU5.js";
104
+ } from "./chunk-4TPFLAND.js";
105
105
  import {
106
106
  ASK_USER_TOOL_NAME,
107
107
  ApprovalMode,
@@ -256,7 +256,7 @@ import {
256
256
  updatePolicy,
257
257
  writeToStderr,
258
258
  writeToStdout
259
- } from "./chunk-ZQW7OGUO.js";
259
+ } from "./chunk-T7UXARRX.js";
260
260
  import "./chunk-664ZODQF.js";
261
261
  import "./chunk-IUUIT4SU.js";
262
262
  import "./chunk-L6PII3GR.js";
@@ -11527,7 +11527,7 @@ async function runNonInteractive({
11527
11527
  }
11528
11528
  });
11529
11529
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
11530
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
11530
+ const { setupInitialActivityLogger } = await import("./devtoolsService-ZHFOHPIS.js");
11531
11531
  setupInitialActivityLogger(config);
11532
11532
  }
11533
11533
  const { stdout: workingStdout } = createWorkingStdio();
@@ -12037,7 +12037,7 @@ async function runNonInteractive2(params) {
12037
12037
  }
12038
12038
  });
12039
12039
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
12040
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
12040
+ const { setupInitialActivityLogger } = await import("./devtoolsService-ZHFOHPIS.js");
12041
12041
  setupInitialActivityLogger(config);
12042
12042
  }
12043
12043
  const { stdout: workingStdout } = createWorkingStdio();
@@ -17418,7 +17418,7 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
17418
17418
  }
17419
17419
  }
17420
17420
  async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), resumedSessionData, initializationResult) {
17421
- const { startInteractiveUI: doStartUI } = await import("./interactiveCli-UDWGRVJL.js");
17421
+ const { startInteractiveUI: doStartUI } = await import("./interactiveCli-QCNSW3M7.js");
17422
17422
  await doStartUI(
17423
17423
  config,
17424
17424
  settings,
@@ -17627,7 +17627,7 @@ ${finalArgs[promptIndex + 1]}`;
17627
17627
  await config.storage.initialize();
17628
17628
  adminControlsListner.setConfig(config);
17629
17629
  if (config.isInteractive() && settings.merged.general.devtools) {
17630
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
17630
+ const { setupInitialActivityLogger } = await import("./devtoolsService-ZHFOHPIS.js");
17631
17631
  setupInitialActivityLogger(config);
17632
17632
  }
17633
17633
  registerTelemetryConfig(config);
@@ -17686,7 +17686,7 @@ ${finalArgs[promptIndex + 1]}`;
17686
17686
  const initAppHandle = startupProfiler.start("initialize_app");
17687
17687
  const initializationResult = await initializeApp(config, settings);
17688
17688
  initAppHandle?.end();
17689
- import("./liteRtServerManager-OVPUSK2T.js").then(({ LiteRtServerManager }) => {
17689
+ import("./liteRtServerManager-2I4N5IEZ.js").then(({ LiteRtServerManager }) => {
17690
17690
  const mergedGemma = settings.merged.experimental?.gemmaModelRouter;
17691
17691
  if (!mergedGemma) return;
17692
17692
  const userGemma = settings.forScope("User" /* User */).settings.experimental?.gemmaModelRouter;