From 93844dfa10f6d71edc09be40dfde205edfbcc939 Mon Sep 17 00:00:00 2001 From: Gal Zahavi <38544478+galz10@users.noreply.github.com> Date: Thu, 18 Jun 2026 16:58:35 -0700 Subject: [PATCH] chore(deps): pin dependencies and enforce 14-day update cooldown (#27948) --- .github/dependabot.yml | 8 +- docs/changelogs/index.md | 3 + docs/cli/gemini-md.md | 2 + docs/cli/plan-mode.md | 1 + docs/cli/session-management.md | 1 + docs/cli/system-prompt.md | 2 + docs/cli/telemetry.md | 5 + docs/ide-integration/ide-companion-spec.md | 2 + docs/ide-integration/index.md | 4 + docs/local-development.md | 2 + docs/reference/commands.md | 4 + docs/reference/configuration.md | 194 + docs/release-confidence.md | 6 + docs/releases.md | 2 + docs/resources/quota-and-pricing.md | 1 + docs/resources/troubleshooting.md | 13 + docs/tools/ask-user.md | 2 + docs/tools/mcp-server.md | 1 + package-lock.json | 4830 +++++++++++++---- package.json | 116 +- packages/a2a-server/package.json | 30 +- packages/a2a-server/src/config/settings.ts | 19 +- packages/cli/package.json | 96 +- packages/cli/src/acp/acpSession.test.ts | 9 +- .../examples/mcp-server/package.json | 4 +- .../extensions/extensionEnablement.test.ts | 2 +- packages/cli/src/config/extensions/update.ts | 37 +- .../cli/src/config/extensions/variables.ts | 7 +- packages/cli/src/gemini.tsx | 2 +- packages/cli/src/services/McpPromptLoader.ts | 7 +- packages/cli/src/test-utils/render.tsx | 14 +- packages/cli/src/ui/AppContainer.test.tsx | 4 +- packages/cli/src/ui/auth/AuthDialog.tsx | 2 +- .../src/ui/commands/extensionsCommand.test.ts | 6 +- packages/cli/src/ui/commands/mcpCommand.ts | 3 +- .../cli/src/ui/commands/restoreCommand.ts | 6 +- .../cli/src/ui/commands/setupGithubCommand.ts | 11 +- .../src/ui/components/AgentConfigDialog.tsx | 2 +- .../src/ui/hooks/atCommandProcessor.test.ts | 3 +- packages/cli/src/utils/envVarResolver.ts | 7 +- packages/cli/src/utils/gitUtils.ts | 8 +- packages/cli/src/utils/sandbox.ts | 2 +- packages/core/package.json | 150 +- .../agents/auth-provider/api-key-provider.ts | 2 +- .../google-credentials-provider.ts | 2 +- .../src/agents/auth-provider/http-provider.ts | 2 +- .../agents/auth-provider/oauth2-provider.ts | 2 +- packages/core/src/agents/local-executor.ts | 17 +- packages/core/src/ide/ide-client.ts | 11 +- packages/core/src/policy/toml-loader.ts | 2 +- .../src/services/executionLifecycleService.ts | 10 +- .../clearcut-logger/clearcut-logger.test.ts | 18 +- .../core/src/tools/mcp-client-manager.test.ts | 12 +- packages/core/src/tools/mcp-client.ts | 8 +- packages/core/src/tools/tool-registry.ts | 2 +- packages/core/src/utils/editor.ts | 3 +- packages/core/src/utils/filesearch/ignore.ts | 5 +- packages/core/src/utils/gitIgnoreParser.ts | 5 +- packages/core/src/utils/googleQuotaErrors.ts | 2 +- packages/core/src/utils/ignoreFileParser.ts | 5 +- packages/core/src/utils/llm-edit-fixer.ts | 8 +- packages/core/src/utils/schemaValidator.ts | 11 +- packages/devtools/package.json | 6 +- packages/sdk/package.json | 8 +- packages/sdk/src/agent.integration.test.ts | 8 +- packages/sdk/src/skills.integration.test.ts | 4 +- packages/sdk/src/tool.integration.test.ts | 6 +- packages/test-utils/package.json | 8 +- packages/vscode-ide-companion/NOTICES.txt | 249 +- packages/vscode-ide-companion/package.json | 30 +- third_party/get-ripgrep/package.json | 28 +- 71 files changed, 4647 insertions(+), 1457 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 932302b32e..ddb5b7d283 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,7 +9,9 @@ updates: reviewers: - 'joshualitt' cooldown: - default-days: 7 + semver-major-days: 14 + semver-minor-days: 14 + semver-patch-days: 14 groups: npm-dependencies: patterns: @@ -26,6 +28,10 @@ updates: open-pull-requests-limit: 10 reviewers: - 'joshualitt' + cooldown: + semver-major-days: 14 + semver-minor-days: 14 + semver-patch-days: 14 groups: actions-dependencies: patterns: diff --git a/docs/changelogs/index.md b/docs/changelogs/index.md index 0e33755a8f..f57a976523 100644 --- a/docs/changelogs/index.md +++ b/docs/changelogs/index.md @@ -507,6 +507,7 @@ on GitHub. headlessly in notebook cells or interactively in the built-in terminal ([pic](https://imgur.com/a/G0Tn7vi)) - πŸŽ‰**Gemini CLI Extensions:** + - **Conductor:** Planning++, Gemini works with you to build out a detailed plan, pull in extra details as needed, ultimately to give the LLM guardrails with artifacts. Measure twice, implement once! @@ -635,6 +636,7 @@ on GitHub. - **Announcement:** [https://developers.googleblog.com/en/making-the-terminal-beautiful-one-pixel-at-a-time/](https://developers.googleblog.com/en/making-the-terminal-beautiful-one-pixel-at-a-time/) - **πŸŽ‰ New partner extensions:** + - **Arize:** Seamlessly instrument AI applications with Arize AX and grant direct access to Arize support: @@ -674,6 +676,7 @@ on GitHub. ![Codebase investigator subagent in Gemini CLI.](https://i.imgur.com/4J1njsx.png) - **πŸŽ‰ New partner extensions:** + - **πŸ€— Hugging Face extension:** Access the Hugging Face hub. ([gif](https://drive.google.com/file/d/1LEzIuSH6_igFXq96_tWev11svBNyPJEB/view?usp=sharing&resourcekey=0-LtPTzR1woh-rxGtfPzjjfg)) diff --git a/docs/cli/gemini-md.md b/docs/cli/gemini-md.md index 8c414a7b1c..1e3cdad3b7 100644 --- a/docs/cli/gemini-md.md +++ b/docs/cli/gemini-md.md @@ -16,10 +16,12 @@ sends them to the model with every prompt. The CLI loads files in the following order: 1. **Global context file:** + - **Location:** `~/.gemini/GEMINI.md` (in your user home directory). - **Scope:** Provides default instructions for all your projects. 2. **Environment and workspace context files:** + - **Location:** The CLI searches for `GEMINI.md` files in your configured workspace directories and their parent directories. - **Scope:** Provides context relevant to the projects you are currently diff --git a/docs/cli/plan-mode.md b/docs/cli/plan-mode.md index a0b621aaf0..4e84caf06b 100644 --- a/docs/cli/plan-mode.md +++ b/docs/cli/plan-mode.md @@ -64,6 +64,7 @@ Gemini CLI takes action. reach an informal agreement on the approach before proceeding. 3. **Review the plan:** Once you've agreed on the strategy, Gemini CLI creates a detailed implementation plan as a Markdown file in your plans directory. + - **View:** You can open and read this file to understand the proposed changes. - **Edit:** Press `Ctrl+X` to open the plan directly in your configured diff --git a/docs/cli/session-management.md b/docs/cli/session-management.md index 74bc4a4337..c18dd1523d 100644 --- a/docs/cli/session-management.md +++ b/docs/cli/session-management.md @@ -202,6 +202,7 @@ becoming too large and expensive. exchanges) allowed in a single session. Set to `-1` for unlimited (default). **Behavior when limit is reached:** + - **Interactive mode:** The CLI shows an informational message and stops sending requests to the model. You must manually start a new session. - **Non-interactive mode:** The CLI exits with an error. diff --git a/docs/cli/system-prompt.md b/docs/cli/system-prompt.md index 9667e7de86..1f7fe9bdd6 100644 --- a/docs/cli/system-prompt.md +++ b/docs/cli/system-prompt.md @@ -27,11 +27,13 @@ via a `.gemini/.env` file. See [Persisting Environment Variables](../get-started/authentication.mdx#persisting-environment-variables). - Use the project default path (`.gemini/system.md`): + - `GEMINI_SYSTEM_MD=true` or `GEMINI_SYSTEM_MD=1` - The CLI reads `./.gemini/system.md` (relative to your current project directory). - Use a custom file path: + - `GEMINI_SYSTEM_MD=/absolute/path/to/my-system.md` - Relative paths are supported and resolved from the current working directory. diff --git a/docs/cli/telemetry.md b/docs/cli/telemetry.md index 2f42c16c29..a1d44eeb23 100644 --- a/docs/cli/telemetry.md +++ b/docs/cli/telemetry.md @@ -64,6 +64,7 @@ and Cloud Logging. You must complete several setup steps before enabling Google Cloud telemetry. 1. Set your Google Cloud project ID: + - To send telemetry to a separate project: **macOS/Linux** @@ -93,8 +94,10 @@ You must complete several setup steps before enabling Google Cloud telemetry. ``` 2. Authenticate with Google Cloud using one of these methods: + - **Method A: Application Default Credentials (ADC)**: Use this method for service accounts or standard `gcloud` authentication. + - For user accounts: ```bash gcloud auth application-default login @@ -112,6 +115,7 @@ You must complete several setup steps before enabling Google Cloud telemetry. ```powershell $env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account.json" ``` + * **Method B: CLI Auth** (Direct export only): Simplest method for local users. Gemini CLI uses the same OAuth credentials you used for login. To enable this, set `useCliAuth: true` in your `.gemini/settings.json`: @@ -133,6 +137,7 @@ You must complete several setup steps before enabling Google Cloud telemetry. > telemetry will be disabled. 3. Ensure your account or service account has these IAM roles: + - Cloud Trace Agent - Monitoring Metric Writer - Logs Writer diff --git a/docs/ide-integration/ide-companion-spec.md b/docs/ide-integration/ide-companion-spec.md index eb4e24bd82..e03e167d42 100644 --- a/docs/ide-integration/ide-companion-spec.md +++ b/docs/ide-integration/ide-companion-spec.md @@ -56,6 +56,7 @@ creating a "discovery file." } } ``` + - `port` (number, required): The port of the MCP server. - `workspacePath` (string, required): A list of all open workspace root paths, delimited by the OS-specific path separator (`:` for Linux/macOS, `;` for @@ -187,6 +188,7 @@ The plugin **MUST** register an `openDiff` tool on its MCP server. - **Response (`CallToolResult`):** The tool **MUST** immediately return a `CallToolResult` to acknowledge the request and report whether the diff view was successfully opened. + - On Success: If the diff view was opened successfully, the response **MUST** contain empty content (that is, `content: []`). - On Failure: If an error prevented the diff view from opening, the response diff --git a/docs/ide-integration/index.md b/docs/ide-integration/index.md index cc3b150c1a..428fe55808 100644 --- a/docs/ide-integration/index.md +++ b/docs/ide-integration/index.md @@ -27,6 +27,7 @@ AI-generated code changes directly within your editor. - **Workspace context:** The CLI automatically gains awareness of your workspace to provide more relevant and accurate responses. This context includes: + - The **10 most recently accessed files** in your workspace. - Your active cursor position. - Any text you have selected (up to a 16KB limit; longer selections will be @@ -228,6 +229,7 @@ If you are using Gemini CLI within a sandbox, be aware of the following: - **Message:** `πŸ”΄ Disconnected: Failed to connect to IDE companion extension in [IDE Name]. Please ensure the extension is running. To install the extension, run /ide install.` + - **Cause:** Gemini CLI could not find the necessary environment variables (`GEMINI_CLI_IDE_WORKSPACE_PATH` or `GEMINI_CLI_IDE_SERVER_PORT`) to connect to the IDE. This usually means the IDE companion extension is not running or @@ -270,6 +272,7 @@ to connect using the provided PID. - **Message:** `πŸ”΄ Disconnected: Directory mismatch. Gemini CLI is running in a different location than the open workspace in [IDE Name]. Please run the CLI from one of the following directories: [List of directories]` + - **Cause:** The CLI's current working directory is outside the workspace you have open in your IDE. - **Solution:** `cd` into the same directory that is open in your IDE and @@ -284,6 +287,7 @@ to connect using the provided PID. - **Message:** `IDE integration is not supported in your current environment. To use this feature, run Gemini CLI in one of these supported IDEs: [List of IDEs]` + - **Cause:** You are running Gemini CLI in a terminal or environment that is not a supported IDE. - **Solution:** Run Gemini CLI from the integrated terminal of a supported diff --git a/docs/local-development.md b/docs/local-development.md index 83520c7506..e6f862044d 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -59,6 +59,7 @@ You can view traces in the Jaeger UI for local development. This command configures your workspace for local telemetry and provides a link to the Jaeger UI (usually `http://localhost:16686`). + - **Collector logs:** `~/.gemini/tmp//otel/collector.log` 2. **Run Gemini CLI:** @@ -108,6 +109,7 @@ Trace for custom processing or routing. The script outputs links to view traces, metrics, and logs in the Google Cloud Console. + - **Collector logs:** `~/.gemini/tmp//otel/collector-gcp.log` 3. **Run Gemini CLI:** diff --git a/docs/reference/commands.md b/docs/reference/commands.md index 0b30da3d66..e5133bd1f5 100644 --- a/docs/reference/commands.md +++ b/docs/reference/commands.md @@ -506,6 +506,7 @@ the dedicated [Custom Commands documentation](../cli/custom-commands.md). These shortcuts apply directly to the input prompt for text manipulation. - **Undo:** + - **Keyboard shortcut:** Press **Ctrl+z** (Windows), **Cmd+z** (macOS), or **Alt+z** (Linux/WSL) to undo the last action in the input prompt. @@ -519,6 +520,7 @@ At commands are used to include the content of files or directories as part of your prompt to Gemini. These commands include git-aware filtering. - **`@`** + - **Description:** Inject the content of the specified file or files into your current prompt. This is useful for asking questions about specific code, text, or collections of files. @@ -565,6 +567,7 @@ The `!` prefix lets you interact with your system's shell directly from within Gemini CLI. - **`!`** + - **Description:** Execute the given `` using `bash` on Linux/macOS or `powershell.exe -NoProfile -Command` on Windows (unless you override `ComSpec`). Any output or errors from the command are displayed in @@ -574,6 +577,7 @@ Gemini CLI. - `!git status` (executes `git status` and returns to Gemini CLI) - **`!` (Toggle shell mode)** + - **Description:** Typing `!` on its own toggles shell mode. - **Entering shell mode:** - When active, shell mode uses a different coloring and a "Shell Mode diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 96830bf585..293d99313c 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -106,6 +106,7 @@ their corresponding top-level category object in your `settings.json` file. #### `general` - **`general.preferredEditor`** (enum): + - **Description:** The preferred editor to open files in. Must be one of the built-in supported identifiers. Use /editor in the CLI to pick interactively, or leave unset to use $VISUAL/$EDITOR. @@ -115,15 +116,18 @@ their corresponding top-level category object in your `settings.json` file. `"neovim"`, `"emacs"`, `"hx"`, `"emacsclient"`, `"micro"` - **`general.openEditorInNewWindow`** (boolean): + - **Description:** Open VS Code-family editors in a new window when editing files. - **Default:** `false` - **`general.vimMode`** (boolean): + - **Description:** Enable Vim keybindings - **Default:** `false` - **`general.defaultApprovalMode`** (enum): + - **Description:** The default approval mode for tool execution. 'default' prompts for approval, 'auto_edit' auto-approves edit tools, and 'plan' is read-only mode. YOLO mode (auto-approve all actions) can only be enabled via @@ -132,38 +136,46 @@ their corresponding top-level category object in your `settings.json` file. - **Values:** `"default"`, `"auto_edit"`, `"plan"` - **`general.devtools`** (boolean): + - **Description:** Enable DevTools inspector on launch. - **Default:** `false` - **`general.enableAutoUpdate`** (boolean): + - **Description:** Enable automatic updates. - **Default:** `true` - **`general.enableAutoUpdateNotification`** (boolean): + - **Description:** Enable update notification prompts. - **Default:** `true` - **`general.enableNotifications`** (boolean): + - **Description:** Enable terminal run-event notifications for action-required prompts and session completion. - **Default:** `false` - **`general.notificationMethod`** (enum): + - **Description:** How to send terminal notifications. - **Default:** `"auto"` - **Values:** `"auto"`, `"osc9"`, `"osc777"`, `"bell"` - **`general.checkpointing.enabled`** (boolean): + - **Description:** Enable session checkpointing for recovery - **Default:** `false` - **Requires restart:** Yes - **`general.plan.enabled`** (boolean): + - **Description:** Enable Plan Mode for read-only safety during planning. - **Default:** `true` - **Requires restart:** Yes - **`general.plan.directory`** (string): + - **Description:** The directory where planning artifacts are stored. If not specified, defaults to the system temporary directory. A custom directory requires a policy to allow write access in Plan Mode. @@ -171,44 +183,53 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`general.plan.modelRouting`** (boolean): + - **Description:** Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pro for the planning phase and Flash for the implementation phase. - **Default:** `true` - **`general.retryFetchErrors`** (boolean): + - **Description:** Retry on "exception TypeError: fetch failed sending request" errors. - **Default:** `true` - **`general.maxAttempts`** (number): + - **Description:** Maximum number of attempts for requests to the main chat model. Cannot exceed 10. - **Default:** `10` - **`general.debugKeystrokeLogging`** (boolean): + - **Description:** Enable debug logging of keystrokes to the console. - **Default:** `false` - **`general.sessionRetention.enabled`** (boolean): + - **Description:** Enable automatic session cleanup - **Default:** `true` - **`general.sessionRetention.maxAge`** (string): + - **Description:** Automatically delete chats older than this time period (e.g., "30d", "7d", "24h", "1w") - **Default:** `"30d"` - **`general.sessionRetention.maxCount`** (number): + - **Description:** Alternative: Maximum number of sessions to keep (most recent) - **Default:** `undefined` - **`general.sessionRetention.minRetention`** (string): + - **Description:** Minimum retention period (safety limit, defaults to "1d") - **Default:** `"1d"` - **`general.topicUpdateNarration`** (boolean): + - **Description:** Enable the Topic & Update communication model for reduced chattiness and structured progress reporting. - **Default:** `true` @@ -228,163 +249,198 @@ their corresponding top-level category object in your `settings.json` file. #### `ui` - **`ui.debugRainbow`** (boolean): + - **Description:** Enable debug rainbow rendering. Only useful for debugging rendering bugs and performance issues. - **Default:** `false` - **Requires restart:** Yes - **`ui.theme`** (string): + - **Description:** The color theme for the UI. See the CLI themes guide for available options. - **Default:** `undefined` - **`ui.autoThemeSwitching`** (boolean): + - **Description:** Automatically switch between default light and dark themes based on terminal background color. - **Default:** `true` - **`ui.terminalBackgroundPollingInterval`** (number): + - **Description:** Interval in seconds to poll the terminal background color. - **Default:** `60` - **`ui.customThemes`** (object): + - **Description:** Custom theme definitions. - **Default:** `{}` - **`ui.hideWindowTitle`** (boolean): + - **Description:** Hide the window title bar - **Default:** `false` - **Requires restart:** Yes - **`ui.inlineThinkingMode`** (enum): + - **Description:** Display model thinking inline: off or full. - **Default:** `"off"` - **Values:** `"off"`, `"full"` - **`ui.showStatusInTitle`** (boolean): + - **Description:** Show Gemini CLI model thoughts in the terminal window title during the working phase - **Default:** `false` - **`ui.dynamicWindowTitle`** (boolean): + - **Description:** Update the terminal window title with current status icons (Ready: β—‡, Action Required: βœ‹, Working: ✦) - **Default:** `true` - **`ui.showHomeDirectoryWarning`** (boolean): + - **Description:** Show a warning when running Gemini CLI in the home directory. - **Default:** `true` - **Requires restart:** Yes - **`ui.showCompatibilityWarnings`** (boolean): + - **Description:** Show warnings about terminal or OS compatibility issues. - **Default:** `true` - **Requires restart:** Yes - **`ui.hideTips`** (boolean): + - **Description:** Hide helpful tips in the UI - **Default:** `false` - **`ui.escapePastedAtSymbols`** (boolean): + - **Description:** When enabled, @ symbols in pasted text are escaped to prevent unintended @path expansion. - **Default:** `false` - **`ui.showShortcutsHint`** (boolean): + - **Description:** Show the "? for shortcuts" hint above the input. - **Default:** `true` - **`ui.compactToolOutput`** (boolean): + - **Description:** Display tool outputs (like directory listings and file reads) in a compact, structured format. - **Default:** `true` - **`ui.hideBanner`** (boolean): + - **Description:** Hide the application banner - **Default:** `false` - **`ui.hideContextSummary`** (boolean): + - **Description:** Hide the context summary (GEMINI.md, MCP servers) above the input. - **Default:** `false` - **`ui.footer.items`** (array): + - **Description:** List of item IDs to display in the footer. Rendered in order - **Default:** `undefined` - **`ui.footer.showLabels`** (boolean): + - **Description:** Display a second line above the footer items with descriptive headers (e.g., /model). - **Default:** `true` - **`ui.footer.hideCWD`** (boolean): + - **Description:** Hide the current working directory in the footer. - **Default:** `false` - **`ui.footer.hideSandboxStatus`** (boolean): + - **Description:** Hide the sandbox status indicator in the footer. - **Default:** `false` - **`ui.footer.hideModelInfo`** (boolean): + - **Description:** Hide the model name and context usage in the footer. - **Default:** `false` - **`ui.footer.hideContextPercentage`** (boolean): + - **Description:** Hides the context window usage percentage. - **Default:** `true` - **`ui.hideFooter`** (boolean): + - **Description:** Hide the footer from the UI - **Default:** `false` - **`ui.collapseDrawerDuringApproval`** (boolean): + - **Description:** Whether to collapse the UI drawer when a tool is awaiting confirmation. - **Default:** `true` - **`ui.showMemoryUsage`** (boolean): + - **Description:** Display memory usage information in the UI - **Default:** `false` - **`ui.showLineNumbers`** (boolean): + - **Description:** Show line numbers in the chat. - **Default:** `true` - **`ui.showCitations`** (boolean): + - **Description:** Show citations for generated text in the chat. - **Default:** `false` - **`ui.showModelInfoInChat`** (boolean): + - **Description:** Show the model name in the chat for each model turn. - **Default:** `false` - **`ui.showUserIdentity`** (boolean): + - **Description:** Show the signed-in user's identity (e.g. email) in the UI. - **Default:** `true` - **`ui.useAlternateBuffer`** (boolean): + - **Description:** Use an alternate screen buffer for the UI, preserving shell history. - **Default:** `false` - **Requires restart:** Yes - **`ui.renderProcess`** (boolean): + - **Description:** Enable Ink render process for the UI. - **Default:** `true` - **Requires restart:** Yes - **`ui.terminalBuffer`** (boolean): + - **Description:** Use the new terminal buffer architecture for rendering. - **Default:** `false` - **Requires restart:** Yes - **`ui.useBackgroundColor`** (boolean): + - **Description:** Whether to use background colors in the UI. - **Default:** `true` - **`ui.incrementalRendering`** (boolean): + - **Description:** Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled. @@ -392,27 +448,32 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`ui.showSpinner`** (boolean): + - **Description:** Show the spinner during operations. - **Default:** `true` - **`ui.loadingPhrases`** (enum): + - **Description:** What to show while the model is working: tips, witty comments, all, or off. - **Default:** `"off"` - **Values:** `"tips"`, `"witty"`, `"all"`, `"off"` - **`ui.errorVerbosity`** (enum): + - **Description:** Controls whether recoverable errors are hidden (low) or fully shown (full). - **Default:** `"low"` - **Values:** `"low"`, `"full"` - **`ui.customWittyPhrases`** (array): + - **Description:** Custom witty phrases to display during loading. When provided, the CLI cycles through these instead of the defaults. - **Default:** `[]` - **`ui.accessibility.enableLoadingPhrases`** (boolean): + - **Description:** @deprecated Use ui.loadingPhrases instead. Enable loading phrases during operations. - **Default:** `true` @@ -427,6 +488,7 @@ their corresponding top-level category object in your `settings.json` file. #### `ide` - **`ide.enabled`** (boolean): + - **Description:** Enable IDE integration mode. - **Default:** `false` - **Requires restart:** Yes @@ -445,6 +507,7 @@ their corresponding top-level category object in your `settings.json` file. #### `billing` - **`billing.overageStrategy`** (enum): + - **Description:** How to handle quota exhaustion when AI credits are available. 'ask' prompts each time, 'always' automatically uses credits, 'never' disables credit usage. @@ -452,6 +515,7 @@ their corresponding top-level category object in your `settings.json` file. - **Values:** `"ask"`, `"always"`, `"never"` - **`billing.vertexAi.requestType`** (enum): + - **Description:** Sets the X-Vertex-AI-LLM-Request-Type header for Vertex AI requests. - **Default:** `undefined` @@ -468,27 +532,32 @@ their corresponding top-level category object in your `settings.json` file. #### `model` - **`model.name`** (string): + - **Description:** The Gemini model to use for conversations. - **Default:** `undefined` - **`model.maxSessionTurns`** (number): + - **Description:** Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. - **Default:** `-1` - **`model.summarizeToolOutput`** (object): + - **Description:** Enables or disables summarization of tool output. Configure per-tool token budgets (for example {"run_shell_command": {"tokenBudget": 2000}}). Currently only the run_shell_command tool supports summarization. - **Default:** `undefined` - **`model.compressionThreshold`** (number): + - **Description:** The fraction of context usage at which to trigger context compression (e.g. 0.2, 0.3). - **Default:** `0.5` - **Requires restart:** Yes - **`model.disableLoopDetection`** (boolean): + - **Description:** Disable automatic detection and prevention of infinite loops. - **Default:** `false` @@ -501,6 +570,7 @@ their corresponding top-level category object in your `settings.json` file. #### `modelConfigs` - **`modelConfigs.aliases`** (object): + - **Description:** Named presets for model configs. Can be used in place of a model name and can inherit from other aliases using an `extends` property. - **Default:** @@ -808,22 +878,26 @@ their corresponding top-level category object in your `settings.json` file. ``` - **`modelConfigs.customAliases`** (object): + - **Description:** Custom named presets for model configs. These are merged with (and override) the built-in aliases. - **Default:** `{}` - **`modelConfigs.customOverrides`** (array): + - **Description:** Custom model config overrides. These are merged with (and added to) the built-in overrides. - **Default:** `[]` - **`modelConfigs.overrides`** (array): + - **Description:** Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used. - **Default:** `[]` - **`modelConfigs.modelDefinitions`** (object): + - **Description:** Registry of model metadata, including tier, family, and features. - **Default:** @@ -997,6 +1071,7 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`modelConfigs.modelIdResolutions`** (object): + - **Description:** Rules for resolving requested model names to concrete model IDs based on context. - **Default:** @@ -1213,6 +1288,7 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`modelConfigs.classifierIdResolutions`** (object): + - **Description:** Rules for resolving classifier tiers (flash, pro) to concrete model IDs. - **Default:** @@ -1278,6 +1354,7 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`modelConfigs.modelChains`** (object): + - **Description:** Availability policy chains defining fallback behavior for models. - **Default:** @@ -1478,34 +1555,40 @@ their corresponding top-level category object in your `settings.json` file. #### `agents` - **`agents.overrides`** (object): + - **Description:** Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config. - **Default:** `{}` - **Requires restart:** Yes - **`agents.browser.sessionMode`** (enum): + - **Description:** Session mode: 'persistent', 'isolated', or 'existing'. - **Default:** `"persistent"` - **Values:** `"persistent"`, `"isolated"`, `"existing"` - **Requires restart:** Yes - **`agents.browser.headless`** (boolean): + - **Description:** Run browser in headless mode. - **Default:** `false` - **Requires restart:** Yes - **`agents.browser.profilePath`** (string): + - **Description:** Path to browser profile directory for session persistence. - **Default:** `undefined` - **Requires restart:** Yes - **`agents.browser.visualModel`** (string): + - **Description:** Model for the visual agent's analyze_screenshot tool. When set, enables the tool. - **Default:** `undefined` - **Requires restart:** Yes - **`agents.browser.allowedDomains`** (array): + - **Description:** A list of allowed domains for the browser agent (e.g., ["github.com", "*.google.com"]). - **Default:** @@ -1517,15 +1600,18 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`agents.browser.disableUserInput`** (boolean): + - **Description:** Disable user input on browser window during automation. - **Default:** `true` - **`agents.browser.maxActionsPerTask`** (number): + - **Description:** The maximum number of tool calls allowed per browser task. Enforcement is hard: the agent will be terminated when the limit is reached. - **Default:** `100` - **`agents.browser.confirmSensitiveActions`** (boolean): + - **Description:** Require manual confirmation for sensitive browser actions (e.g., fill_form, evaluate_script). - **Default:** `false` @@ -1539,24 +1625,29 @@ their corresponding top-level category object in your `settings.json` file. #### `context` - **`context.fileName`** (string | string[]): + - **Description:** The name of the context file or files to load into memory. Accepts either a single string or an array of strings. - **Default:** `undefined` - **`context.importFormat`** (string): + - **Description:** The format to use when importing memory. - **Default:** `undefined` - **`context.includeDirectoryTree`** (boolean): + - **Description:** Whether to include the directory tree of the current working directory in the initial request to the model. - **Default:** `true` - **`context.discoveryMaxDirs`** (number): + - **Description:** Maximum number of directories to search for memory. - **Default:** `200` - **`context.memoryBoundaryMarkers`** (array): + - **Description:** File or directory names that mark the boundary for GEMINI.md discovery. The upward traversal stops at the first directory containing any of these markers. An empty array disables parent traversal. @@ -1569,39 +1660,46 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`context.includeDirectories`** (array): + - **Description:** Additional directories to include in the workspace context. Missing directories will be skipped with a warning. - **Default:** `[]` - **`context.loadMemoryFromIncludeDirectories`** (boolean): + - **Description:** Controls how /memory reload loads GEMINI.md files. When true, include directories are scanned; when false, only the current directory is used. - **Default:** `false` - **`context.fileFiltering.respectGitIgnore`** (boolean): + - **Description:** Respect .gitignore files when searching. - **Default:** `true` - **Requires restart:** Yes - **`context.fileFiltering.respectGeminiIgnore`** (boolean): + - **Description:** Respect .geminiignore files when searching. - **Default:** `true` - **Requires restart:** Yes - **`context.fileFiltering.enableFileWatcher`** (boolean): + - **Description:** Enable file watcher updates for @ file suggestions (experimental). - **Default:** `false` - **Requires restart:** Yes - **`context.fileFiltering.enableRecursiveFileSearch`** (boolean): + - **Description:** Enable recursive file search functionality when completing @ references in the prompt. - **Default:** `true` - **Requires restart:** Yes - **`context.fileFiltering.enableFuzzySearch`** (boolean): + - **Description:** Enable fuzzy search when searching for files. - **Default:** `true` - **Requires restart:** Yes @@ -1617,6 +1715,7 @@ their corresponding top-level category object in your `settings.json` file. #### `tools` - **`tools.sandbox`** (string): + - **Description:** Legacy full-process sandbox execution environment. Set to a boolean to enable or disable the sandbox, provide a string path to a sandbox profile, or specify an explicit sandbox command (e.g., "docker", "podman", @@ -1625,23 +1724,27 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`tools.sandboxAllowedPaths`** (array): + - **Description:** List of additional paths that the sandbox is allowed to access. - **Default:** `[]` - **Requires restart:** Yes - **`tools.sandboxNetworkAccess`** (boolean): + - **Description:** Whether the sandbox is allowed to access the network. - **Default:** `false` - **Requires restart:** Yes - **`tools.shell.enableInteractiveShell`** (boolean): + - **Description:** Use node-pty for an interactive shell experience. Fallback to child_process still applies. - **Default:** `true` - **Requires restart:** Yes - **`tools.shell.backgroundCompletionBehavior`** (enum): + - **Description:** Controls what happens when a background shell command finishes. 'silent' (default): quietly exits in background. 'inject': automatically returns output to agent. 'notify': shows brief message in @@ -1650,25 +1753,30 @@ their corresponding top-level category object in your `settings.json` file. - **Values:** `"silent"`, `"inject"`, `"notify"` - **`tools.shell.pager`** (string): + - **Description:** The pager command to use for shell output. Defaults to `cat`. - **Default:** `"cat"` - **`tools.shell.showColor`** (boolean): + - **Description:** Show color in shell output. - **Default:** `true` - **`tools.shell.inactivityTimeout`** (number): + - **Description:** The maximum time in seconds allowed without output from the shell command. Defaults to 5 minutes. - **Default:** `300` - **`tools.shell.enableShellOutputEfficiency`** (boolean): + - **Description:** Enable shell output efficiency optimizations for better performance. - **Default:** `true` - **`tools.core`** (array): + - **Description:** Restrict the set of built-in tools with an allowlist. Match semantics mirror tools.allowed; see the built-in tools documentation for available names. @@ -1676,6 +1784,7 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`tools.allowed`** (array): + - **Description:** Tool names that bypass the confirmation dialog. Useful for trusted commands (for example ["run_shell_command(git)", "run_shell_command(npm test)"]). See shell tool command restrictions for @@ -1684,22 +1793,26 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`tools.confirmationRequired`** (array): + - **Description:** Tool names that always require user confirmation. Takes precedence over allowed tools and core tool allowlists. - **Default:** `undefined` - **Requires restart:** Yes - **`tools.exclude`** (array): + - **Description:** Tool names to exclude from discovery. - **Default:** `undefined` - **Requires restart:** Yes - **`tools.discoveryCommand`** (string): + - **Description:** Command to run for tool discovery. - **Default:** `undefined` - **Requires restart:** Yes - **`tools.callCommand`** (string): + - **Description:** Defines a custom shell command for invoking discovered tools. The command must take the tool name as the first argument, read JSON arguments from stdin, and emit JSON results on stdout. @@ -1707,11 +1820,13 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`tools.useRipgrep`** (boolean): + - **Description:** Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance. - **Default:** `true` - **`tools.truncateToolOutputThreshold`** (number): + - **Description:** Maximum characters to show when truncating large tool outputs. Set to 0 or negative to disable truncation. - **Default:** `40000` @@ -1727,11 +1842,13 @@ their corresponding top-level category object in your `settings.json` file. #### `mcp` - **`mcp.serverCommand`** (string): + - **Description:** Command to start an MCP server. - **Default:** `undefined` - **Requires restart:** Yes - **`mcp.allowed`** (array): + - **Description:** A list of MCP servers to allow. - **Default:** `undefined` - **Requires restart:** Yes @@ -1750,38 +1867,45 @@ their corresponding top-level category object in your `settings.json` file. #### `security` - **`security.toolSandboxing`** (boolean): + - **Description:** Tool-level sandboxing. Isolates individual tools instead of the entire CLI process. - **Default:** `false` - **Requires restart:** Yes - **`security.disableYoloMode`** (boolean): + - **Description:** Disable YOLO mode, even if enabled by a flag. - **Default:** `false` - **Requires restart:** Yes - **`security.disableAlwaysAllow`** (boolean): + - **Description:** Disable "Always allow" options in tool confirmation dialogs. - **Default:** `false` - **Requires restart:** Yes - **`security.enablePermanentToolApproval`** (boolean): + - **Description:** Enable the "Allow for all future sessions" option in tool confirmation dialogs. - **Default:** `false` - **`security.autoAddToPolicyByDefault`** (boolean): + - **Description:** When enabled, the "Allow for all future sessions" option becomes the default choice for low-risk tools in trusted workspaces. - **Default:** `false` - **`security.blockGitExtensions`** (boolean): + - **Description:** Blocks installing and loading extensions from Git. - **Default:** `false` - **Requires restart:** Yes - **`security.allowedExtensions`** (array): + - **Description:** List of Regex patterns for allowed extensions. If nonempty, only extensions that match the patterns in this list are allowed. Overrides the blockGitExtensions setting. @@ -1789,38 +1913,45 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`security.folderTrust.enabled`** (boolean): + - **Description:** Setting to track whether Folder trust is enabled. - **Default:** `true` - **Requires restart:** Yes - **`security.environmentVariableRedaction.allowed`** (array): + - **Description:** Environment variables to always allow (bypass redaction). - **Default:** `[]` - **Requires restart:** Yes - **`security.environmentVariableRedaction.blocked`** (array): + - **Description:** Environment variables to always redact. - **Default:** `[]` - **Requires restart:** Yes - **`security.environmentVariableRedaction.enabled`** (boolean): + - **Description:** Enable redaction of environment variables that may contain secrets. - **Default:** `false` - **Requires restart:** Yes - **`security.auth.selectedType`** (string): + - **Description:** The currently selected authentication type. - **Default:** `undefined` - **Requires restart:** Yes - **`security.auth.enforcedType`** (string): + - **Description:** The required auth type. If this does not match the selected auth type, the user will be prompted to re-authenticate. - **Default:** `undefined` - **Requires restart:** Yes - **`security.auth.useExternal`** (boolean): + - **Description:** Whether to use an external authentication flow. - **Default:** `undefined` - **Requires restart:** Yes @@ -1836,6 +1967,7 @@ their corresponding top-level category object in your `settings.json` file. #### `advanced` - **`advanced.autoConfigureMemory`** (boolean): + - **Description:** Automatically configure Node.js memory limits. Note: Because memory is allocated during the initial process boot, this setting is only read from the global user settings file and ignores workspace-level @@ -1844,11 +1976,13 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`advanced.dnsResolutionOrder`** (string): + - **Description:** The DNS resolution order. - **Default:** `undefined` - **Requires restart:** Yes - **`advanced.excludedEnvVars`** (array): + - **Description:** Environment variables to exclude from project context. - **Default:** @@ -1857,6 +1991,7 @@ their corresponding top-level category object in your `settings.json` file. ``` - **`advanced.ignoreLocalEnv`** (boolean): + - **Description:** Whether to ignore generic .env files in the project directory. - **Default:** `false` @@ -1869,21 +2004,25 @@ their corresponding top-level category object in your `settings.json` file. #### `experimental` - **`experimental.gemma`** (boolean): + - **Description:** Enable access to Gemma 4 models via Gemini API. - **Default:** `true` - **Requires restart:** Yes - **`experimental.voiceMode`** (boolean): + - **Description:** Enable experimental voice dictation and commands (/voice, /voice model). - **Default:** `false` - **`experimental.voice.activationMode`** (enum): + - **Description:** How to trigger voice recording with the Space key. - **Default:** `"push-to-talk"` - **Values:** `"push-to-talk"`, `"toggle"` - **`experimental.voice.backend`** (enum): + - **Description:** The backend to use for voice transcription. Note: When using the Gemini Live backend, voice recordings are sent to Google Cloud for transcription. @@ -1891,138 +2030,163 @@ their corresponding top-level category object in your `settings.json` file. - **Values:** `"gemini-live"`, `"whisper"` - **`experimental.voice.whisperModel`** (enum): + - **Description:** The Whisper model to use for local transcription. - **Default:** `"ggml-base.en.bin"` - **Values:** `"ggml-tiny.en.bin"`, `"ggml-base.en.bin"`, `"ggml-large-v3-turbo-q5_0.bin"`, `"ggml-large-v3-turbo-q8_0.bin"` - **`experimental.voice.stopGracePeriodMs`** (number): + - **Description:** How long to wait for final transcription after stopping recording. - **Default:** `4000` - **`experimental.adk.agentSessionNoninteractiveEnabled`** (boolean): + - **Description:** Enable non-interactive agent sessions. - **Default:** `false` - **Requires restart:** Yes - **`experimental.adk.agentSessionInteractiveEnabled`** (boolean): + - **Description:** Enable the agent session implementation for the interactive CLI. - **Default:** `false` - **Requires restart:** Yes - **`experimental.adk.agentSessionSubagentEnabled`** (boolean): + - **Description:** Route subagent invocations through the AgentSession protocol instead of legacy executors. - **Default:** `false` - **Requires restart:** Yes - **`experimental.enableAgents`** (boolean): + - **Description:** Enable local and remote subagents. - **Default:** `true` - **Requires restart:** Yes - **`experimental.worktrees`** (boolean): + - **Description:** Enable automated Git worktree management for parallel work. - **Default:** `false` - **Requires restart:** Yes - **`experimental.extensionManagement`** (boolean): + - **Description:** Enable extension management features. - **Default:** `true` - **Requires restart:** Yes - **`experimental.extensionConfig`** (boolean): + - **Description:** Enable requesting and fetching of extension settings. - **Default:** `true` - **Requires restart:** Yes - **`experimental.extensionRegistry`** (boolean): + - **Description:** Enable extension registry explore UI. - **Default:** `false` - **Requires restart:** Yes - **`experimental.extensionRegistryURI`** (string): + - **Description:** The URI (web URL or local file path) of the extension registry. - **Default:** `"https://geminicli.com/extensions.json"` - **Requires restart:** Yes - **`experimental.extensionReloading`** (boolean): + - **Description:** Enables extension loading/unloading within the CLI session. - **Default:** `false` - **Requires restart:** Yes - **`experimental.useOSC52Paste`** (boolean): + - **Description:** Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). - **Default:** `false` - **`experimental.useOSC52Copy`** (boolean): + - **Description:** Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). - **Default:** `false` - **`experimental.taskTracker`** (boolean): + - **Description:** Enable task tracker tools. - **Default:** `false` - **Requires restart:** Yes - **`experimental.modelSteering`** (boolean): + - **Description:** Enable model steering (user hints) to guide the model during tool execution. - **Default:** `false` - **`experimental.directWebFetch`** (boolean): + - **Description:** Enable web fetch behavior that bypasses LLM summarization. - **Default:** `false` - **Requires restart:** Yes - **`experimental.dynamicModelConfiguration`** (boolean): + - **Description:** Enable dynamic model configuration (definitions, resolutions, and chains) via settings. - **Default:** `false` - **Requires restart:** Yes - **`experimental.gemmaModelRouter.enabled`** (boolean): + - **Description:** Enable the Gemma Model Router (experimental). Requires a local endpoint serving Gemma via the Gemini API using LiteRT-LM shim. - **Default:** `false` - **Requires restart:** Yes - **`experimental.gemmaModelRouter.autoStartServer`** (boolean): + - **Description:** Automatically start the LiteRT-LM server when Gemini CLI starts and the Gemma router is enabled. - **Default:** `false` - **Requires restart:** Yes - **`experimental.gemmaModelRouter.binaryPath`** (string): + - **Description:** Custom path to the LiteRT-LM binary. Leave empty to use the default location (~/.gemini/bin/litert/). - **Default:** `""` - **Requires restart:** Yes - **`experimental.gemmaModelRouter.classifier.host`** (string): + - **Description:** The host of the classifier. - **Default:** `"http://localhost:9379"` - **Requires restart:** Yes - **`experimental.gemmaModelRouter.classifier.model`** (string): + - **Description:** The model to use for the classifier. Only tested on `gemma3-1b-gpu-custom`. - **Default:** `"gemma3-1b-gpu-custom"` - **Requires restart:** Yes - **`experimental.stressTestProfile`** (boolean): + - **Description:** Significantly lowers token limits to force early garbage collection and distillation for testing purposes. - **Default:** `false` - **Requires restart:** Yes - **`experimental.autoMemory`** (boolean): + - **Description:** Automatically extract memory patches and skills from past sessions in the background. Every change is written as a unified diff `.patch` file under `/.inbox//` and held for review @@ -2031,16 +2195,19 @@ their corresponding top-level category object in your `settings.json` file. - **Requires restart:** Yes - **`experimental.generalistProfile`** (boolean): + - **Description:** Suitable for general coding and software development tasks. - **Default:** `false` - **Requires restart:** Yes - **`experimental.powerUserProfile`** (boolean): + - **Description:** Less cache friendly version of the generalist profile. - **Default:** `false` - **Requires restart:** Yes - **`experimental.contextManagement`** (boolean): + - **Description:** Enable logic for context management. - **Default:** `false` - **Requires restart:** Yes @@ -2052,6 +2219,7 @@ their corresponding top-level category object in your `settings.json` file. #### `skills` - **`skills.enabled`** (boolean): + - **Description:** Enable Agent Skills. - **Default:** `true` - **Requires restart:** Yes @@ -2064,12 +2232,14 @@ their corresponding top-level category object in your `settings.json` file. #### `hooksConfig` - **`hooksConfig.enabled`** (boolean): + - **Description:** Canonical toggle for the hooks system. When disabled, no hooks will be executed. - **Default:** `true` - **Requires restart:** Yes - **`hooksConfig.disabled`** (array): + - **Description:** List of hook names (commands) that should be disabled. Hooks in this list will not execute even if configured. - **Default:** `[]` @@ -2081,51 +2251,61 @@ their corresponding top-level category object in your `settings.json` file. #### `hooks` - **`hooks.BeforeTool`** (array): + - **Description:** Hooks that execute before tool execution. Can intercept, validate, or modify tool calls. - **Default:** `[]` - **`hooks.AfterTool`** (array): + - **Description:** Hooks that execute after tool execution. Can process results, log outputs, or trigger follow-up actions. - **Default:** `[]` - **`hooks.BeforeAgent`** (array): + - **Description:** Hooks that execute before agent loop starts. Can set up context or initialize resources. - **Default:** `[]` - **`hooks.AfterAgent`** (array): + - **Description:** Hooks that execute after agent loop completes. Can perform cleanup or summarize results. - **Default:** `[]` - **`hooks.Notification`** (array): + - **Description:** Hooks that execute on notification events (errors, warnings, info). Can log or alert on specific conditions. - **Default:** `[]` - **`hooks.SessionStart`** (array): + - **Description:** Hooks that execute when a session starts. Can initialize session-specific resources or state. - **Default:** `[]` - **`hooks.SessionEnd`** (array): + - **Description:** Hooks that execute when a session ends. Can perform cleanup or persist session data. - **Default:** `[]` - **`hooks.PreCompress`** (array): + - **Description:** Hooks that execute before chat history compression. Can back up or analyze conversation before compression. - **Default:** `[]` - **`hooks.BeforeModel`** (array): + - **Description:** Hooks that execute before LLM requests. Can modify prompts, inject context, or control model parameters. - **Default:** `[]` - **`hooks.AfterModel`** (array): + - **Description:** Hooks that execute after LLM responses. Can process outputs, extract information, or log interactions. - **Default:** `[]` @@ -2138,35 +2318,41 @@ their corresponding top-level category object in your `settings.json` file. #### `contextManagement` - **`contextManagement.historyWindow.maxTokens`** (number): + - **Description:** The number of tokens to allow before triggering compression. - **Default:** `150000` - **Requires restart:** Yes - **`contextManagement.historyWindow.retainedTokens`** (number): + - **Description:** The number of tokens to always retain. - **Default:** `40000` - **Requires restart:** Yes - **`contextManagement.messageLimits.normalMaxTokens`** (number): + - **Description:** The target number of tokens to budget for a normal conversation turn. - **Default:** `2500` - **Requires restart:** Yes - **`contextManagement.messageLimits.retainedMaxTokens`** (number): + - **Description:** The maximum number of tokens a single conversation turn can consume before truncation. - **Default:** `12000` - **Requires restart:** Yes - **`contextManagement.messageLimits.normalizationHeadRatio`** (number): + - **Description:** The ratio of tokens to retain from the beginning of a truncated message (0.0 to 1.0). - **Default:** `0.25` - **Requires restart:** Yes - **`contextManagement.tools.distillation.maxOutputTokens`** (number): + - **Description:** Maximum tokens to show to the model when truncating large tool outputs. - **Default:** `10000` @@ -2174,6 +2360,7 @@ their corresponding top-level category object in your `settings.json` file. - **`contextManagement.tools.distillation.summarizationThresholdTokens`** (number): + - **Description:** Threshold above which truncated tool outputs will be summarized by an LLM. - **Default:** `20000` @@ -2181,6 +2368,7 @@ their corresponding top-level category object in your `settings.json` file. - **`contextManagement.tools.outputMasking.protectionThresholdTokens`** (number): + - **Description:** Minimum number of tokens to protect from masking (most recent tool outputs). - **Default:** `50000` @@ -2188,6 +2376,7 @@ their corresponding top-level category object in your `settings.json` file. - **`contextManagement.tools.outputMasking.minPrunableThresholdTokens`** (number): + - **Description:** Minimum prunable tokens required to trigger a masking pass. - **Default:** `30000` - **Requires restart:** Yes @@ -2201,24 +2390,29 @@ their corresponding top-level category object in your `settings.json` file. #### `admin` - **`admin.secureModeEnabled`** (boolean): + - **Description:** If true, disallows YOLO mode and "Always allow" options from being used. - **Default:** `false` - **`admin.extensions.enabled`** (boolean): + - **Description:** If false, disallows extensions from being installed or used. - **Default:** `true` - **`admin.mcp.enabled`** (boolean): + - **Description:** If false, disallows MCP servers from being used. - **Default:** `true` - **`admin.mcp.config`** (object): + - **Description:** Admin-configured MCP servers (allowlist). - **Default:** `{}` - **`admin.mcp.requiredConfig`** (object): + - **Description:** Admin-required MCP servers that are always injected. - **Default:** `{}` diff --git a/docs/release-confidence.md b/docs/release-confidence.md index 22769f9556..7b6bd06249 100644 --- a/docs/release-confidence.md +++ b/docs/release-confidence.md @@ -70,6 +70,7 @@ Before promoting a `preview` release to `stable`, a release manager must manually run through this checklist. - **Setup:** + - [ ] Uninstall any existing global version: `npm uninstall -g @google/gemini-cli` - [ ] Clear npx cache (optional but recommended): `npm cache clean --force` @@ -77,24 +78,29 @@ manually run through this checklist. - [ ] Verify version: `gemini --version` - **Authentication:** + - [ ] In interactive mode run `/auth` and verify all sign in flows work: - [ ] Sign in with Google - [ ] API Key - [ ] Vertex AI - **Basic prompting:** + - [ ] Run `gemini "Tell me a joke"` and verify a sensible response. - [ ] Run in interactive mode: `gemini`. Ask a follow-up question to test context. - **Piped input:** + - [ ] Run `echo "Summarize this" | gemini` and verify it processes stdin. - **Context management:** + - [ ] In interactive mode, use `@file` to add a local file to context. Ask a question about it. - **Settings:** + - [ ] In interactive mode run `/settings` and make modifications - [ ] Validate that setting is changed diff --git a/docs/releases.md b/docs/releases.md index 90a218b7f2..70a9f069ce 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -475,6 +475,7 @@ This stage happens _after_ the NPM publish and creates the single-file executable that enables `npx` usage directly from the GitHub repository. 1. **The JavaScript bundle is created:** + - **What happens:** The built JavaScript from both `packages/core/dist` and `packages/cli/dist`, along with all third-party JavaScript dependencies, are bundled by `esbuild` into a single, executable JavaScript file (for @@ -486,6 +487,7 @@ executable that enables `npx` usage directly from the GitHub repository. the `core` package) are included directly. 2. **The `bundle` directory is assembled:** + - **What happens:** A temporary `bundle` folder is created at the project root. The single `gemini.js` executable is placed inside it, along with other essential files. diff --git a/docs/resources/quota-and-pricing.md b/docs/resources/quota-and-pricing.md index 18beb7c761..b3921e38c1 100644 --- a/docs/resources/quota-and-pricing.md +++ b/docs/resources/quota-and-pricing.md @@ -127,6 +127,7 @@ Standard/PlusΒ and AI Expanded, are not supported._ license seats. For predictable costs, you can sign in with Google. This includes the following request limits: + - Gemini Code Assist Standard edition: - 1500 maximum model requests / user / day - Gemini Code Assist Enterprise edition: diff --git a/docs/resources/troubleshooting.md b/docs/resources/troubleshooting.md index 2c63e7c969..a5580dd0bb 100644 --- a/docs/resources/troubleshooting.md +++ b/docs/resources/troubleshooting.md @@ -12,6 +12,7 @@ topics on: - **Error: `You must be a named user on your organization's Gemini Code Assist Standard edition subscription to use this service. Please contact your administrator to request an entitlement to Gemini Code Assist Standard edition.`** + - **Cause:** This error might occur if Gemini CLI detects the `GOOGLE_CLOUD_PROJECT` or `GOOGLE_CLOUD_PROJECT_ID` environment variable is defined. Setting these variables forces an organization subscription check. @@ -19,6 +20,7 @@ topics on: linked to an organizational subscription. - **Solution:** + - **Individual Users:** Unset the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_PROJECT_ID` environment variables. Check and remove these variables from your shell configuration files (for example, `.bashrc`, @@ -30,12 +32,14 @@ topics on: - **Error: `Failed to sign in. Message: Your current account is not eligible... because it is not currently available in your location.`** + - **Cause:** Gemini CLI does not currently support your location. For a full list of supported locations, see the following pages: - Gemini Code Assist for individuals: [Available locations](https://developers.google.com/gemini-code-assist/resources/available-locations#americas) - **Error: `Failed to sign in. Message: Request contains an invalid argument`** + - **Cause:** Users with Google Workspace accounts or Google Cloud accounts associated with their Gmail accounts may not be able to activate the free tier of the Google Code Assist plan. @@ -66,6 +70,7 @@ topics on: ## Common error messages and solutions - **Error: `EADDRINUSE` (Address already in use) when starting an MCP server.** + - **Cause:** Another process is already using the port that the MCP server is trying to bind to. - **Solution:** Either stop the other process that is using the port or @@ -73,6 +78,7 @@ topics on: - **Error: Command not found (when attempting to run Gemini CLI with `gemini`).** + - **Cause:** Gemini CLI is not correctly installed or it is not in your system's `PATH`. - **Solution:** The update depends on how you installed Gemini CLI: @@ -85,6 +91,7 @@ topics on: then rebuild using the command `npm run build`. - **Error: `MODULE_NOT_FOUND` or import errors.** + - **Cause:** Dependencies are not installed correctly, or the project hasn't been built. - **Solution:** @@ -93,6 +100,7 @@ topics on: 3. Verify that the build completed successfully with `npm run start`. - **Error: "Operation not permitted", "Permission denied", or similar.** + - **Cause:** When sandboxing is enabled, Gemini CLI may attempt operations that are restricted by your sandbox configuration, such as writing outside the project directory or system temp directory. @@ -101,6 +109,7 @@ topics on: configuration. - **Gemini CLI is not running in interactive mode in "CI" environments** + - **Issue:** Gemini CLI does not enter interactive mode (no prompt appears) if an environment variable starting with `CI_` (for example, `CI_TOKEN`) is set. This is because the `is-in-ci` package, used by the underlying UI @@ -116,6 +125,7 @@ topics on: `env -u CI_TOKEN gemini` - **DEBUG mode not working from project .env file** + - **Issue:** Setting `DEBUG=true` in a project's `.env` file doesn't enable debug mode for gemini-cli. - **Cause:** The `DEBUG` and `DEBUG_MODE` variables are automatically excluded @@ -155,12 +165,14 @@ is especially useful for scripting and automation. ## Debugging tips - **CLI debugging:** + - Use the `--debug` flag for more detailed output. In interactive mode, press F12 to view the debug console. - Check the CLI logs, often found in a user-specific configuration or cache directory. - **Core debugging:** + - Check the server console output for error messages or stack traces. - Increase log verbosity if configurable. For example, set the `DEBUG_MODE` environment variable to `true` or `1`. @@ -168,6 +180,7 @@ is especially useful for scripting and automation. step through server-side code. - **Tool issues:** + - If a specific tool is failing, try to isolate the issue by running the simplest possible version of the command or operation the tool performs. - For `run_shell_command`, check that the command works directly in your shell diff --git a/docs/tools/ask-user.md b/docs/tools/ask-user.md index 065d2227dc..55a95f52f8 100644 --- a/docs/tools/ask-user.md +++ b/docs/tools/ask-user.md @@ -11,6 +11,7 @@ confirmation. - **Display name:** Ask User - **File:** `ask-user.ts` - **Parameters:** + - `questions` (array of objects, required): A list of 1 to 4 questions to ask. Each question object has the following properties: - `question` (string, required): The complete question text. @@ -30,6 +31,7 @@ confirmation. - `placeholder` (string, optional): Hint text for input fields. - **Behavior:** + - Presents an interactive dialog to the user with the specified questions. - Pauses execution until the user provides answers or dismisses the dialog. - Returns the user's answers to the model. diff --git a/docs/tools/mcp-server.md b/docs/tools/mcp-server.md index e72089b1eb..d7a219f338 100644 --- a/docs/tools/mcp-server.md +++ b/docs/tools/mcp-server.md @@ -768,6 +768,7 @@ defaults: - **Tool lists:** Tool lists are merged securely to ensure the most restrictive policy wins: + - **Exclusions (`excludeTools`):** Arrays are combined (unioned). If either source blocks a tool, it remains disabled. - **Inclusions (`includeTools`):** Arrays are intersected. If both sources diff --git a/package-lock.json b/package-lock.json index f9a3848d06..efffd49396 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,78 +12,78 @@ ], "dependencies": { "ink": "npm:@jrichman/ink@6.6.9", - "latest-version": "^9.0.0", - "node-fetch-native": "^1.6.7", - "proper-lockfile": "^4.1.2", - "punycode": "^2.3.1", - "simple-git": "^3.28.0" + "latest-version": "9.0.0", + "node-fetch-native": "1.6.7", + "proper-lockfile": "4.1.2", + "punycode": "2.3.1", + "simple-git": "3.28.0" }, "bin": { "gemini": "bundle/gemini.js" }, "devDependencies": { - "@agentclientprotocol/sdk": "^0.16.1", - "@octokit/rest": "^22.0.0", - "@types/marked": "^5.0.2", - "@types/mime-types": "^3.0.1", - "@types/minimatch": "^5.1.2", - "@types/mock-fs": "^4.13.4", - "@types/prompts": "^2.4.9", - "@types/proper-lockfile": "^4.1.4", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", - "@types/shell-quote": "^1.7.5", - "@types/ws": "^8.18.1", - "@vitest/coverage-v8": "^3.1.1", - "@vitest/eslint-plugin": "^1.3.4", - "asciichart": "^1.5.25", - "cross-env": "^7.0.3", - "depcheck": "^1.4.7", - "domexception": "^4.0.0", - "esbuild": "^0.25.0", - "esbuild-plugin-wasm": "^1.1.0", - "eslint": "^9.24.0", - "eslint-config-prettier": "^10.1.2", - "eslint-plugin-headers": "^1.3.3", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^5.2.0", - "glob": "^12.0.0", - "globals": "^16.0.0", - "google-artifactregistry-auth": "^3.4.0", - "husky": "^9.1.7", - "json": "^11.0.0", - "lint-staged": "^16.1.6", - "memfs": "^4.42.0", - "mnemonist": "^0.40.3", - "mock-fs": "^5.5.0", - "msw": "^2.10.4", - "npm-run-all": "^4.1.5", - "prettier": "^3.5.3", - "react-devtools-core": "^6.1.2", - "react-dom": "^19.2.0", - "read-package-up": "^11.0.0", - "semver": "^7.7.2", - "strip-ansi": "^7.1.2", - "ts-prune": "^0.10.3", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "typescript-eslint": "^8.30.1", - "vitest": "^3.2.4", - "yargs": "^17.7.2" + "@agentclientprotocol/sdk": "0.16.1", + "@octokit/rest": "22.0.0", + "@types/marked": "5.0.2", + "@types/mime-types": "3.0.1", + "@types/minimatch": "5.1.2", + "@types/mock-fs": "4.13.4", + "@types/prompts": "2.4.9", + "@types/proper-lockfile": "4.1.4", + "@types/react": "19.2.0", + "@types/react-dom": "19.2.0", + "@types/shell-quote": "1.7.5", + "@types/ws": "8.18.1", + "@vitest/coverage-v8": "3.2.4", + "@vitest/eslint-plugin": "1.3.4", + "asciichart": "1.5.25", + "cross-env": "7.0.3", + "depcheck": "1.4.7", + "domexception": "4.0.0", + "esbuild": "0.25.0", + "esbuild-plugin-wasm": "1.1.0", + "eslint": "9.24.0", + "eslint-config-prettier": "10.1.2", + "eslint-plugin-headers": "1.3.3", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", + "glob": "12.0.0", + "globals": "16.0.0", + "google-artifactregistry-auth": "3.4.0", + "husky": "9.1.7", + "json": "11.0.0", + "lint-staged": "16.1.6", + "memfs": "4.42.0", + "mnemonist": "0.40.3", + "mock-fs": "5.5.0", + "msw": "2.10.4", + "npm-run-all": "4.1.5", + "prettier": "3.5.3", + "react-devtools-core": "6.1.2", + "react-dom": "19.2.4", + "read-package-up": "11.0.0", + "semver": "7.7.2", + "strip-ansi": "7.1.2", + "ts-prune": "0.10.3", + "tsx": "4.20.3", + "typescript": "5.8.3", + "typescript-eslint": "8.30.1", + "vitest": "3.2.4", + "yargs": "17.7.2" }, "engines": { "node": ">=20.0.0" }, "optionalDependencies": { - "@github/keytar": "^7.10.6", + "@github/keytar": "7.10.6", "@lydell/node-pty": "1.1.0", "@lydell/node-pty-darwin-arm64": "1.1.0", "@lydell/node-pty-darwin-x64": "1.1.0", "@lydell/node-pty-linux-x64": "1.1.0", "@lydell/node-pty-win32-arm64": "1.1.0", "@lydell/node-pty-win32-x64": "1.1.0", - "node-pty": "^1.0.0" + "node-pty": "1.0.0" } }, "node_modules/@agentclientprotocol/sdk": { @@ -449,7 +449,8 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", - "license": "(Apache-2.0 AND BSD-3-Clause)" + "license": "(Apache-2.0 AND BSD-3-Clause)", + "peer": true }, "node_modules/@bundled-es-modules/cookie": { "version": "2.0.1", @@ -519,9 +520,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", - "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], @@ -535,9 +536,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", - "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], @@ -551,9 +552,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", - "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], @@ -567,9 +568,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", - "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], @@ -583,9 +584,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", - "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], @@ -599,9 +600,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", - "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], @@ -615,9 +616,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", - "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], @@ -631,9 +632,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", - "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], @@ -647,9 +648,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", - "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], @@ -663,9 +664,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", - "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], @@ -679,9 +680,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", - "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], @@ -695,9 +696,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", - "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], @@ -711,9 +712,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", - "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], @@ -727,9 +728,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", - "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], @@ -743,9 +744,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", - "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], @@ -759,9 +760,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", - "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], @@ -775,9 +776,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", - "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], @@ -791,9 +792,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", - "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", "cpu": [ "arm64" ], @@ -807,9 +808,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", - "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], @@ -823,9 +824,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", - "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", "cpu": [ "arm64" ], @@ -839,9 +840,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", - "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], @@ -854,26 +855,10 @@ "node": ">=18" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", - "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", - "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], @@ -887,9 +872,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", - "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], @@ -903,9 +888,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", - "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], @@ -919,9 +904,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", - "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], @@ -1033,9 +1018,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1114,16 +1099,13 @@ } }, "node_modules/@eslint/js": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", - "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", + "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" } }, "node_modules/@eslint/object-schema": { @@ -1137,13 +1119,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" }, "engines": { @@ -1151,9 +1133,9 @@ } }, "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1535,6 +1517,7 @@ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@grpc/proto-loader": "^0.8.0", "@js-sdsl/ordered-map": "^4.4.2" @@ -1584,6 +1567,7 @@ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.13.tgz", "integrity": "sha512-TsQLe4i2gvoTtrHje625ngThGBySOgSK3Xo2XRYOdqGN1teR8+I7vchQC46uLJi8OF62YTYA3AhSpumtkhsaKQ==", "license": "MIT", + "optional": true, "engines": { "node": ">=18.14.1" }, @@ -1663,6 +1647,17 @@ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "license": "ISC" }, + "node_modules/@inquirer/ansi": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", + "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, "node_modules/@inquirer/confirm": { "version": "5.1.14", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", @@ -2088,6 +2083,7 @@ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "license": "MIT", + "optional": true, "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", @@ -2128,6 +2124,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", + "optional": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2143,7 +2140,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@mswjs/interceptors": { "version": "0.39.5", @@ -2242,6 +2240,7 @@ "integrity": "sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.2", @@ -2422,6 +2421,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -2471,6 +2471,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -2821,6 +2822,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", "integrity": "sha512-DeT6KKolmC4e/dRQvMQ/RwlnzhaqeiFOXY5ngoOPJ07GgVVKxZOg9EcrNZb5aTzUn+iCrJldAgOfQm1O/QfPAQ==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -2855,6 +2857,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.7.1.tgz", "integrity": "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" @@ -2910,6 +2913,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.7.1.tgz", "integrity": "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", @@ -3063,27 +3067,6 @@ "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, - "node_modules/@puppeteer/browsers": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", - "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.4.3", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.5.0", - "semver": "^7.7.4", - "tar-fs": "^3.1.1", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.59.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", @@ -3633,21 +3616,6 @@ "url": "https://ko-fi.com/killymxi" } }, - "node_modules/@simple-git/args-pathspec": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", - "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", - "license": "MIT" - }, - "node_modules/@simple-git/argv-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", - "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", - "license": "MIT", - "dependencies": { - "@simple-git/args-pathspec": "^1.0.3" - } - }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", @@ -4092,6 +4060,16 @@ "@types/node": "*" } }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "20.19.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", @@ -4157,19 +4135,20 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", - "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.0.tgz", + "integrity": "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", - "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4270,6 +4249,17 @@ "@types/send": "*" } }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz", + "integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/shell-quote": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/@types/shell-quote/-/shell-quote-1.7.5.tgz", @@ -4353,6 +4343,13 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -4363,16 +4360,6 @@ "@types/node": "*" } }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", @@ -4390,70 +4377,6 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", - "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/type-utils": "8.58.2", - "@typescript-eslint/utils": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.58.2", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", - "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/project-service": { "version": "8.58.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", @@ -4511,31 +4434,6 @@ "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", - "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/utils": "8.58.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/types": { "version": "8.58.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", @@ -4578,6 +4476,19 @@ "typescript": ">=4.8.4 <6.1.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { "version": "8.58.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", @@ -4683,21 +4594,17 @@ } }, "node_modules/@vitest/eslint-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.4.3.tgz", - "integrity": "sha512-ba+YDKyZdViNAOg8P86a9tIEawPA/O+nLbwhg8g7nkqsLOAVum6GoZhkNxgwX621oqWAbB8N2xb+G5kkpXehcA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz", + "integrity": "sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "^8.46.1", - "@typescript-eslint/utils": "^8.46.1" - }, - "engines": { - "node": ">=18" + "@typescript-eslint/utils": "^8.24.1" }, "peerDependencies": { - "eslint": ">=8.57.0", - "typescript": ">=5.0.0", + "eslint": ">= 8.57.0", + "typescript": ">= 5.0.0", "vitest": "*" }, "peerDependenciesMeta": { @@ -5210,6 +5117,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5920,6 +5828,30 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -6186,19 +6118,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/chromium-bidi": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", - "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", - "license": "Apache-2.0", - "dependencies": { - "mitt": "^3.0.1", - "zod": "^3.24.1" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, "node_modules/cjs-module-lexer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", @@ -7317,12 +7236,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1581282", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", - "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", - "license": "BSD-3-Clause" - }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -7796,9 +7709,9 @@ ] }, "node_modules/esbuild": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", - "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "devOptional": true, "hasInstallScript": true, "license": "MIT", @@ -7809,32 +7722,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.6", - "@esbuild/android-arm": "0.25.6", - "@esbuild/android-arm64": "0.25.6", - "@esbuild/android-x64": "0.25.6", - "@esbuild/darwin-arm64": "0.25.6", - "@esbuild/darwin-x64": "0.25.6", - "@esbuild/freebsd-arm64": "0.25.6", - "@esbuild/freebsd-x64": "0.25.6", - "@esbuild/linux-arm": "0.25.6", - "@esbuild/linux-arm64": "0.25.6", - "@esbuild/linux-ia32": "0.25.6", - "@esbuild/linux-loong64": "0.25.6", - "@esbuild/linux-mips64el": "0.25.6", - "@esbuild/linux-ppc64": "0.25.6", - "@esbuild/linux-riscv64": "0.25.6", - "@esbuild/linux-s390x": "0.25.6", - "@esbuild/linux-x64": "0.25.6", - "@esbuild/netbsd-arm64": "0.25.6", - "@esbuild/netbsd-x64": "0.25.6", - "@esbuild/openbsd-arm64": "0.25.6", - "@esbuild/openbsd-x64": "0.25.6", - "@esbuild/openharmony-arm64": "0.25.6", - "@esbuild/sunos-x64": "0.25.6", - "@esbuild/win32-arm64": "0.25.6", - "@esbuild/win32-ia32": "0.25.6", - "@esbuild/win32-x64": "0.25.6" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/esbuild-plugin-wasm": { @@ -7901,20 +7813,21 @@ } }, "node_modules/eslint": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", - "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", + "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.1", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.29.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.24.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -7925,9 +7838,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7962,17 +7875,14 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", + "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, "peerDependencies": { "eslint": ">=7.0.0" } @@ -8516,6 +8426,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -8559,6 +8470,7 @@ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", "license": "MIT", + "optional": true, "dependencies": { "ip-address": "^10.2.0" }, @@ -8692,6 +8604,25 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, "node_modules/fast-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", @@ -8708,6 +8639,17 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", @@ -9048,6 +8990,7 @@ "version": "11.3.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -9062,6 +9005,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -9400,9 +9344,9 @@ } }, "node_modules/globals": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", - "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, "license": "MIT", "engines": { @@ -9631,9 +9575,9 @@ "license": "MIT" }, "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "version": "16.14.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.2.tgz", + "integrity": "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==", "devOptional": true, "license": "MIT", "engines": { @@ -9780,15 +9724,6 @@ "node": ">=0.10.0" } }, - "node_modules/hono": { - "version": "4.12.18", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz", - "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==", - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, "node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -9953,6 +9888,26 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -10047,6 +10002,7 @@ "resolved": "https://registry.npmjs.org/@jrichman/ink/-/ink-6.6.9.tgz", "integrity": "sha512-RL9sSiLQZECnjbmBwjIHOp8yVGdWF7C/uifg7ISv/e+F3nLNsfl7FdUFQs8iZARFMJAYxMFpxW6OW+HSt9drwQ==", "license": "MIT", + "peer": true, "dependencies": { "ansi-escapes": "^7.0.0", "ansi-styles": "^6.2.3", @@ -10945,6 +10901,7 @@ "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", "license": "MIT", + "optional": true, "funding": { "url": "https://github.com/sponsors/panva" } @@ -11036,7 +10993,8 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "optional": true }, "node_modules/json-stable-stringify": { "version": "1.3.0", @@ -12038,6 +11996,7 @@ "devOptional": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", @@ -12512,88 +12471,6 @@ "semver": "bin/semver" } }, - "node_modules/npm-run-all2": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-8.0.4.tgz", - "integrity": "sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "cross-spawn": "^7.0.6", - "memorystream": "^0.3.1", - "picomatch": "^4.0.2", - "pidtree": "^0.6.0", - "read-package-json-fast": "^4.0.0", - "shell-quote": "^1.7.3", - "which": "^5.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "npm-run-all2": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": "^20.5.0 || >=22.0.0", - "npm": ">= 10" - } - }, - "node_modules/npm-run-all2/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm-run-all2/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/npm-run-all2/node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/npm-run-all2/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, "node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -13414,9 +13291,9 @@ } }, "node_modules/prettier": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", - "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { @@ -13645,45 +13522,6 @@ "node": ">=6" } }, - "node_modules/puppeteer-core": { - "version": "24.39.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.39.0.tgz", - "integrity": "sha512-SzIxz76Kgu17HUIi57HOejPiN0JKa9VCd2GcPY1sAh6RA4BzGZarFQdOYIYrBdUVbtyH7CrDb9uhGEwVXK/YNA==", - "license": "Apache-2.0", - "dependencies": { - "@puppeteer/browsers": "2.13.0", - "chromium-bidi": "14.0.0", - "debug": "^4.4.3", - "devtools-protocol": "0.0.1581282", - "typed-query-selector": "^2.12.1", - "webdriver-bidi-protocol": "0.4.1", - "ws": "^8.19.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/qs": { "version": "6.14.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", @@ -13822,16 +13660,18 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react-devtools-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", - "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.2.tgz", + "integrity": "sha512-ldFwzufLletzCikNJVYaxlxMLu7swJ3T2VrGfzXlMsVhZhPDKXA38DEROidaYZVgMAmQnIjymrmqto5pyfrwPA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -14246,6 +14086,14 @@ "node": ">=14" } }, + "node_modules/rettime": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.11.11.tgz", + "integrity": "sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -14602,9 +14450,9 @@ } }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14665,6 +14513,14 @@ "url": "https://opencollective.com/express" } }, + "node_modules/set-cookie-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz", + "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -14843,15 +14699,13 @@ } }, "node_modules/simple-git": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", - "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz", + "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==", "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "@simple-git/args-pathspec": "^1.0.3", - "@simple-git/argv-parser": "^1.1.0", "debug": "^4.4.0" }, "funding": { @@ -15590,32 +15444,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/systeminformation": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.6.tgz", - "integrity": "sha512-Uv2b2uGGM6ns+26czgW2cYRabYdnswM0ddSOOlryHOaelzsmDSet1iM/NT7VOYxW8x/BW+HkY+b1Ve2pLTSGSA==", - "license": "MIT", - "os": [ - "darwin", - "linux", - "win32", - "freebsd", - "openbsd", - "netbsd", - "sunos", - "android" - ], - "bin": { - "systeminformation": "lib/cli.js" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "Buy me a coffee", - "url": "https://www.buymeacoffee.com/systeminfo" - } - }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -15720,6 +15548,20 @@ "node": ">=8" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tar-fs": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", @@ -15930,6 +15772,12 @@ "tslib": "^2" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -15986,6 +15834,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -16030,6 +15879,28 @@ "node": ">=14.0.0" } }, + "node_modules/tldts": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.3.tgz", + "integrity": "sha512-A3BDQBeeukYPzB4QdQ1DtdlUmp4x2OCH8n5UVhEWbyANxNep8GavottKzd1xYKFJKjUgMyPT7EzOfnBO55s8Sg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tldts-core": "^7.4.3" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.3.tgz", + "integrity": "sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -16062,6 +15933,20 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tree-dump": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", @@ -16208,7 +16093,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.20.3", @@ -16216,6 +16102,7 @@ "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -16381,6 +16268,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16390,15 +16278,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.35.0.tgz", - "integrity": "sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz", + "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.35.0", - "@typescript-eslint/parser": "8.35.0", - "@typescript-eslint/utils": "8.35.0" + "@typescript-eslint/eslint-plugin": "8.30.1", + "@typescript-eslint/parser": "8.30.1", + "@typescript-eslint/utils": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16413,21 +16301,21 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz", - "integrity": "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", + "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/type-utils": "8.35.0", - "@typescript-eslint/utils": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/type-utils": "8.30.1", + "@typescript-eslint/utils": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "graphemer": "^1.4.0", - "ignore": "^7.0.0", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16437,22 +16325,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.35.0", + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz", - "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz", + "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/typescript-estree": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/typescript-estree": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4" }, "engines": { @@ -16467,37 +16356,15 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/project-service": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz", - "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.35.0", - "@typescript-eslint/types": "^8.35.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", - "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", + "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0" + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16507,34 +16374,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz", - "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz", - "integrity": "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", + "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.35.0", - "@typescript-eslint/utils": "8.35.0", + "@typescript-eslint/typescript-estree": "8.30.1", + "@typescript-eslint/utils": "8.30.1", "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16549,9 +16399,9 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", - "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", + "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", "dev": true, "license": "MIT", "engines": { @@ -16563,22 +16413,20 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", - "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", + "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.35.0", - "@typescript-eslint/tsconfig-utils": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16592,16 +16440,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", + "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/typescript-estree": "8.35.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/typescript-estree": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16616,14 +16464,14 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", - "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", + "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.30.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16641,25 +16489,15 @@ "license": "MIT" }, "node_modules/typescript-eslint/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/typescript-eslint/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/typescript-eslint/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", @@ -16702,6 +16540,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/underscore": { "version": "1.13.8", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", @@ -16713,6 +16561,7 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.5.tgz", "integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.18.1" @@ -16777,6 +16626,17 @@ "node": ">= 0.8" } }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "dev": true, + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -16867,6 +16727,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -17437,6 +17298,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -17449,6 +17311,7 @@ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "license": "MIT", + "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -17551,12 +17414,6 @@ } } }, - "node_modules/webdriver-bidi-protocol": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", - "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", - "license": "Apache-2.0" - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -17956,6 +17813,7 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", + "peer": true, "bin": { "yaml": "bin.mjs" }, @@ -18102,6 +17960,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -18120,28 +17979,28 @@ "version": "0.49.0-nightly.20260617.g4d3dcdce1", "dependencies": { "@a2a-js/sdk": "0.3.11", - "@google-cloud/storage": "^7.19.0", + "@google-cloud/storage": "7.19.0", "@google/gemini-cli-core": "file:../core", - "express": "^5.1.0", - "fs-extra": "^11.3.0", - "strip-json-comments": "^3.1.1", - "tar": "^7.5.8", - "uuid": "^13.0.0", - "winston": "^3.17.0" + "express": "5.1.0", + "fs-extra": "11.3.0", + "strip-json-comments": "3.1.1", + "tar": "7.5.8", + "uuid": "13.0.0", + "winston": "3.17.0" }, "bin": { "gemini-cli-a2a-server": "dist/a2a-server.mjs" }, "devDependencies": { "@google/genai": "1.30.0", - "@types/express": "^5.0.3", - "@types/fs-extra": "^11.0.4", - "@types/supertest": "^6.0.3", - "@types/tar": "^6.1.13", - "dotenv": "^16.4.5", - "supertest": "^7.1.4", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/express": "5.0.3", + "@types/fs-extra": "11.0.4", + "@types/supertest": "6.0.3", + "@types/tar": "6.1.13", + "dotenv": "16.4.5", + "supertest": "7.1.4", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" @@ -18188,10 +18047,123 @@ "uuid": "dist/esm/bin/uuid" } }, + "packages/a2a-server/node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "packages/a2a-server/node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "packages/a2a-server/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -18201,6 +18173,95 @@ "url": "https://dotenvx.com" } }, + "packages/a2a-server/node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "packages/a2a-server/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "packages/a2a-server/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "packages/a2a-server/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "packages/a2a-server/node_modules/tar": { "version": "7.5.11", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", @@ -18217,24 +18278,29 @@ "node": ">=18" } }, - "packages/a2a-server/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "packages/a2a-server/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "license": "MIT", "engines": { - "node": ">=14.17" + "node": ">=14.0.0" + } + }, + "packages/a2a-server/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" } }, "packages/a2a-server/node_modules/uuid": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.2.tgz", - "integrity": "sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -18244,73 +18310,446 @@ "uuid": "dist-node/bin/uuid" } }, + "packages/a2a-server/node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "packages/a2a-server/node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/a2a-server/node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, "packages/cli": { "name": "@google/gemini-cli", "version": "0.49.0-nightly.20260617.g4d3dcdce1", "license": "Apache-2.0", "dependencies": { - "@agentclientprotocol/sdk": "^0.16.1", + "@agentclientprotocol/sdk": "0.16.1", "@google/gemini-cli-core": "file:../core", "@google/genai": "1.30.0", - "@iarna/toml": "^2.2.5", - "@modelcontextprotocol/sdk": "^1.23.0", - "ansi-escapes": "^7.3.0", - "ansi-regex": "^6.2.2", - "chalk": "^4.1.2", - "cli-spinners": "^2.9.2", - "clipboardy": "~5.2.0", - "color-convert": "^2.0.1", - "command-exists": "^1.2.9", - "comment-json": "^4.2.5", - "diff": "^8.0.3", - "dotenv": "^17.1.0", - "extract-zip": "^2.0.1", - "fzf": "^0.5.2", - "glob": "^12.0.0", - "highlight.js": "^11.11.1", + "@iarna/toml": "2.2.5", + "@modelcontextprotocol/sdk": "1.23.0", + "ansi-escapes": "7.3.0", + "ansi-regex": "6.2.2", + "chalk": "4.1.2", + "cli-spinners": "2.9.2", + "clipboardy": "5.2.0", + "color-convert": "2.0.1", + "command-exists": "1.2.9", + "comment-json": "4.2.5", + "diff": "8.0.3", + "dotenv": "17.1.0", + "extract-zip": "2.0.1", + "fzf": "0.5.2", + "glob": "12.0.0", + "highlight.js": "11.11.1", "ink": "npm:@jrichman/ink@6.6.9", - "ink-gradient": "^3.0.0", - "ink-spinner": "^5.0.0", - "latest-version": "^9.0.0", - "lowlight": "^3.3.0", - "mnemonist": "^0.40.3", - "open": "^10.1.2", - "prompts": "^2.4.2", - "proper-lockfile": "^4.1.2", - "react": "^19.2.0", - "shell-quote": "^1.8.3", - "simple-git": "^3.28.0", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.0", - "strip-json-comments": "^3.1.1", - "tar": "^7.5.8", - "tinygradient": "^1.1.5", - "undici": "^7.10.0", - "ws": "^8.16.0", - "yargs": "^17.7.2", - "zod": "^3.23.8" + "ink-gradient": "3.0.0", + "ink-spinner": "5.0.0", + "latest-version": "9.0.0", + "lowlight": "3.3.0", + "mnemonist": "0.40.3", + "open": "10.1.2", + "prompts": "2.4.2", + "proper-lockfile": "4.1.2", + "react": "19.2.4", + "shell-quote": "1.8.3", + "simple-git": "3.28.0", + "string-width": "8.1.0", + "strip-ansi": "7.1.0", + "strip-json-comments": "3.1.1", + "tar": "7.5.8", + "tinygradient": "1.1.5", + "undici": "7.10.0", + "ws": "8.16.0", + "yargs": "17.7.2", + "zod": "3.25.76" }, "bin": { "gemini": "dist/index.js" }, "devDependencies": { "@google/gemini-cli-test-utils": "file:../test-utils", - "@types/command-exists": "^1.2.3", - "@types/hast": "^3.0.4", - "@types/node": "^20.11.24", - "@types/react": "^19.2.0", - "@types/semver": "^7.7.0", - "@types/shell-quote": "^1.7.5", - "@types/ws": "^8.5.10", - "@types/yargs": "^17.0.32", - "@xterm/headless": "^5.5.0", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/command-exists": "1.2.3", + "@types/hast": "3.0.4", + "@types/node": "20.11.24", + "@types/react": "19.2.0", + "@types/semver": "7.7.0", + "@types/shell-quote": "1.7.5", + "@types/ws": "8.5.10", + "@types/yargs": "17.0.32", + "@xterm/headless": "5.5.0", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" } }, + "packages/cli/node_modules/@modelcontextprotocol/sdk": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.23.0.tgz", + "integrity": "sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "packages/cli/node_modules/@modelcontextprotocol/sdk/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "packages/cli/node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/cli/node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "packages/cli/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "packages/cli/node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "packages/cli/node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "packages/cli/node_modules/ansi-escapes": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", @@ -18346,6 +18785,59 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/cli/node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "packages/cli/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "packages/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "packages/cli/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "packages/cli/node_modules/string-width": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", @@ -18362,6 +18854,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/cli/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "packages/cli/node_modules/tar": { "version": "7.5.11", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", @@ -18378,18 +18885,220 @@ "node": ">=18" } }, - "packages/cli/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "packages/cli/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "packages/cli/node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "packages/cli/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "packages/cli/node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "vite": "bin/vite.js" }, "engines": { - "node": ">=14.17" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "packages/cli/node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/cli/node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "packages/cli/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "packages/core": { @@ -18398,98 +19107,98 @@ "license": "Apache-2.0", "dependencies": { "@a2a-js/sdk": "0.3.11", - "@bufbuild/protobuf": "^2.11.0", - "@google-cloud/logging": "^11.2.1", - "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.21.0", - "@google-cloud/opentelemetry-cloud-trace-exporter": "^3.0.0", + "@bufbuild/protobuf": "2.11.0", + "@google-cloud/logging": "11.2.1", + "@google-cloud/opentelemetry-cloud-monitoring-exporter": "0.21.0", + "@google-cloud/opentelemetry-cloud-trace-exporter": "3.0.0", "@google/genai": "1.30.0", - "@grpc/grpc-js": "^1.14.3", - "@iarna/toml": "^2.2.5", - "@modelcontextprotocol/sdk": "^1.23.0", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.218.0", - "@opentelemetry/core": "^2.7.1", - "@opentelemetry/exporter-logs-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.218.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.218.0", - "@opentelemetry/exporter-trace-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.218.0", - "@opentelemetry/instrumentation-http": "^0.218.0", - "@opentelemetry/otlp-exporter-base": "^0.218.0", - "@opentelemetry/resources": "^2.7.1", - "@opentelemetry/sdk-logs": "^0.218.0", - "@opentelemetry/sdk-metrics": "^2.7.1", - "@opentelemetry/sdk-node": "^0.218.0", - "@opentelemetry/sdk-trace-base": "^2.7.1", - "@opentelemetry/sdk-trace-node": "^2.7.1", - "@opentelemetry/semantic-conventions": "^1.39.0", - "@types/html-to-text": "^9.0.4", + "@grpc/grpc-js": "1.14.3", + "@iarna/toml": "2.2.5", + "@modelcontextprotocol/sdk": "1.23.0", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/exporter-logs-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-logs-otlp-http": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-trace-otlp-http": "0.218.0", + "@opentelemetry/instrumentation-http": "0.218.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-node": "0.218.0", + "@opentelemetry/sdk-trace-base": "2.7.1", + "@opentelemetry/sdk-trace-node": "2.7.1", + "@opentelemetry/semantic-conventions": "1.39.0", + "@types/html-to-text": "9.0.4", "@xterm/headless": "5.5.0", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.0", - "chokidar": "^5.0.0", - "command-exists": "^1.2.9", - "diff": "^8.0.3", - "dotenv": "^17.2.4", - "dotenv-expand": "^12.0.3", - "execa": "^9.6.1", - "fast-levenshtein": "^2.0.6", - "fdir": "^6.4.6", - "fzf": "^0.5.2", - "glob": "^12.0.0", - "google-auth-library": "^9.11.0", - "html-to-text": "^9.0.5", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "ignore": "^7.0.0", - "ipaddr.js": "^1.9.1", - "isbinaryfile": "^5.0.7", - "js-yaml": "^4.1.1", - "json-stable-stringify": "^1.3.0", - "marked": "^15.0.12", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "chokidar": "5.0.0", + "command-exists": "1.2.9", + "diff": "8.0.3", + "dotenv": "17.2.4", + "dotenv-expand": "12.0.3", + "execa": "9.6.1", + "fast-levenshtein": "2.0.6", + "fdir": "6.4.6", + "fzf": "0.5.2", + "glob": "12.0.0", + "google-auth-library": "9.11.0", + "html-to-text": "9.0.5", + "http-proxy-agent": "7.0.2", + "https-proxy-agent": "7.0.6", + "ignore": "7.0.0", + "ipaddr.js": "1.9.1", + "isbinaryfile": "5.0.7", + "js-yaml": "4.1.1", + "json-stable-stringify": "1.3.0", + "marked": "15.0.12", "mime": "4.0.7", - "mnemonist": "^0.40.3", - "open": "^10.1.2", - "picomatch": "^4.0.1", - "proper-lockfile": "^4.1.2", - "puppeteer-core": "^24.0.0", - "read-package-up": "^11.0.0", - "shell-quote": "^1.8.3", - "simple-git": "^3.28.0", - "strip-ansi": "^7.1.0", - "strip-json-comments": "^3.1.1", - "systeminformation": "^5.25.11", - "tree-sitter-bash": "^0.25.0", - "undici": "^7.10.0", - "uuid": "^13.0.0", - "web-tree-sitter": "^0.25.10", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.25.1" + "mnemonist": "0.40.3", + "open": "10.1.2", + "picomatch": "4.0.1", + "proper-lockfile": "4.1.2", + "puppeteer-core": "24.0.0", + "read-package-up": "11.0.0", + "shell-quote": "1.8.3", + "simple-git": "3.28.0", + "strip-ansi": "7.1.0", + "strip-json-comments": "3.1.1", + "systeminformation": "5.25.11", + "tree-sitter-bash": "0.25.0", + "undici": "7.10.0", + "uuid": "13.0.0", + "web-tree-sitter": "0.25.10", + "zod": "3.25.76", + "zod-to-json-schema": "3.25.1" }, "devDependencies": { "@google/gemini-cli-test-utils": "file:../test-utils", - "@types/fast-levenshtein": "^0.0.4", - "@types/js-yaml": "^4.0.9", - "@types/json-stable-stringify": "^1.1.0", - "@types/picomatch": "^4.0.1", - "chrome-devtools-mcp": "^0.19.0", - "msw": "^2.3.4", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/fast-levenshtein": "0.0.4", + "@types/js-yaml": "4.0.9", + "@types/json-stable-stringify": "1.1.0", + "@types/picomatch": "4.0.1", + "chrome-devtools-mcp": "0.19.0", + "msw": "2.3.4", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" }, "optionalDependencies": { - "@github/keytar": "^7.10.6", + "@github/keytar": "7.10.6", "@lydell/node-pty": "1.1.0", "@lydell/node-pty-darwin-arm64": "1.1.0", "@lydell/node-pty-darwin-x64": "1.1.0", "@lydell/node-pty-linux-x64": "1.1.0", "@lydell/node-pty-win32-arm64": "1.1.0", "@lydell/node-pty-win32-x64": "1.1.0", - "node-pty": "^1.0.0" + "node-pty": "1.0.0" } }, "packages/core/node_modules/@a2a-js/sdk": { @@ -18533,10 +19242,269 @@ "uuid": "dist/esm/bin/uuid" } }, + "packages/core/node_modules/@inquirer/confirm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", + "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@inquirer/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/@inquirer/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@modelcontextprotocol/sdk": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.23.0.tgz", + "integrity": "sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "packages/core/node_modules/@mswjs/interceptors": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.29.1.tgz", + "integrity": "sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@puppeteer/browsers": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.0.tgz", + "integrity": "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/@types/node": { + "version": "22.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.21.tgz", + "integrity": "sha512-VMeFBSCKQKmm2swI2kW51SFusDqekC6q9trBCvJ/JliDchFSuoYYKN7yVNjPthP1HKZcx3U1gI/wTcEBjEFKTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/core/node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "packages/core/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -18549,6 +19517,35 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "packages/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/core/node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/core/node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", @@ -18564,10 +19561,54 @@ "url": "https://paulmillr.com/funding/" } }, + "packages/core/node_modules/chromium-bidi": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "packages/core/node_modules/chromium-bidi/node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "packages/core/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "packages/core/node_modules/devtools-protocol": { + "version": "0.0.1367902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", + "license": "BSD-3-Clause", + "peer": true + }, "packages/core/node_modules/dotenv": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", - "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "version": "17.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -18576,6 +19617,28 @@ "url": "https://dotenvx.com" } }, + "packages/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "packages/core/node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, "packages/core/node_modules/fdir": { "version": "6.4.6", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", @@ -18590,10 +19653,27 @@ } } }, + "packages/core/node_modules/google-auth-library": { + "version": "9.11.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.11.0.tgz", + "integrity": "sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, "packages/core/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.0.tgz", + "integrity": "sha512-lcX8PNQygAa22u/0BysEY8VhaFRzlOkvdlKczDPnJvrkJD1EuqzEky5VYYKM2iySIuaVIDv9N190DfSreSLw2A==", "license": "MIT", "engines": { "node": ">= 4" @@ -18620,11 +19700,73 @@ "node": ">=16" } }, - "packages/core/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "packages/core/node_modules/msw": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.3.4.tgz", + "integrity": "sha512-sHMlwrajgmZSA2l1o7qRSe+azm/I+x9lvVVcOxAzi4vCtH8uVPJk1K5BQYDkzGl+tt0RvM9huEXXdeGrgcc79g==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^3.0.0", + "@mswjs/interceptors": "^0.29.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "chalk": "^4.1.2", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.2", + "path-to-regexp": "^6.2.0", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.9.0", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.7.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/core/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "packages/core/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "packages/core/node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -18632,6 +19774,23 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "packages/core/node_modules/puppeteer-core": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.0.0.tgz", + "integrity": "sha512-bHVXmnkYnMVSbsD+pJGt8fmGZLaVYOAieVnJcDxtLIVTMq0s5RfYdzN4xVlFoBQ3T06/sPkXxca3VLVfaqLxzg==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.7.0", + "chromium-bidi": "0.11.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1367902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, "packages/core/node_modules/readdirp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", @@ -18645,24 +19804,121 @@ "url": "https://paulmillr.com/funding/" } }, - "packages/core/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "packages/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=14.17" + "node": ">=8" + } + }, + "packages/core/node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "packages/core/node_modules/systeminformation": { + "version": "5.25.11", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.25.11.tgz", + "integrity": "sha512-jI01fn/t47rrLTQB0FTlMCC+5dYx8o0RRF+R4BPiUNsvg5OdY0s9DKMFmJGrx5SwMZQ4cag0Gl6v8oycso9b/g==", + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "packages/core/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "packages/core/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/core/node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" } }, "packages/core/node_modules/uuid": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.2.tgz", - "integrity": "sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -18672,50 +19928,822 @@ "uuid": "dist-node/bin/uuid" } }, + "packages/core/node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "packages/core/node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/core/node_modules/vite/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "packages/core/node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/@inquirer/confirm": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/@inquirer/core": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/@inquirer/figures": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", + "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, + "packages/core/node_modules/vitest/node_modules/@inquirer/type": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", + "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/@mswjs/interceptors": { + "version": "0.41.9", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.9.tgz", + "integrity": "sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "packages/core/node_modules/vitest/node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/headers-polyfill": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-5.0.1.tgz", + "integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/set-cookie-parser": "^2.4.10", + "set-cookie-parser": "^3.0.1" + } + }, + "packages/core/node_modules/vitest/node_modules/msw": { + "version": "2.14.6", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.14.6.tgz", + "integrity": "sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@inquirer/confirm": "^6.0.11", + "@mswjs/interceptors": "^0.41.3", + "@open-draft/deferred-promise": "^3.0.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.1.1", + "graphql": "^16.13.2", + "headers-polyfill": "^5.0.1", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.11.11", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.1", + "type-fest": "^5.5.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/core/node_modules/vitest/node_modules/msw/node_modules/@open-draft/deferred-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz", + "integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "packages/core/node_modules/vitest/node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "packages/core/node_modules/vitest/node_modules/type-fest": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz", + "integrity": "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "packages/core/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "packages/devtools": { "name": "@google/gemini-cli-devtools", "version": "0.49.0-nightly.20260617.g4d3dcdce1", "license": "Apache-2.0", "dependencies": { - "ws": "^8.16.0" + "ws": "8.16.0" }, "devDependencies": { - "react": "^19.2.0", - "react-dom": "^19.2.0" + "react": "19.2.4", + "react-dom": "19.2.4" }, "engines": { "node": ">=20" } }, + "packages/devtools/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "packages/sdk": { "name": "@google/gemini-cli-sdk", "version": "0.49.0-nightly.20260617.g4d3dcdce1", "license": "Apache-2.0", "dependencies": { "@google/gemini-cli-core": "file:../core", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.1" + "zod": "3.25.76", + "zod-to-json-schema": "3.25.1" }, "devDependencies": { - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" } }, - "packages/sdk/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "packages/sdk/node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "packages/sdk/node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "packages/sdk/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "packages/sdk/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "packages/sdk/node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "vite": "bin/vite.js" }, "engines": { - "node": ">=14.17" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "packages/sdk/node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/sdk/node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, "packages/test-utils": { @@ -18725,59 +20753,545 @@ "dependencies": { "@google/gemini-cli-core": "file:../core", "@lydell/node-pty": "1.1.0", - "asciichart": "^1.5.25", - "strip-ansi": "^7.1.2", - "vitest": "^3.2.4" + "asciichart": "1.5.25", + "strip-ansi": "7.1.2", + "vitest": "3.2.4" }, "devDependencies": { - "typescript": "^5.3.3" + "typescript": "5.8.3" }, "engines": { "node": ">=20" } }, - "packages/test-utils/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "packages/vscode-ide-companion": { "name": "gemini-cli-vscode-ide-companion", "version": "0.49.0-nightly.20260617.g4d3dcdce1", "license": "LICENSE", "dependencies": { - "@modelcontextprotocol/sdk": "^1.23.0", - "cors": "^2.8.5", - "express": "^5.1.0", - "zod": "^3.25.76" + "@modelcontextprotocol/sdk": "1.23.0", + "cors": "2.8.5", + "express": "5.1.0", + "zod": "3.25.76" }, "devDependencies": { - "@types/cors": "^2.8.19", - "@types/express": "^5.0.3", + "@types/cors": "2.8.19", + "@types/express": "5.0.3", "@types/node": "20.x", - "@types/vscode": "^1.99.0", - "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.31.1", - "@vscode/vsce": "^3.6.0", - "esbuild": "^0.25.3", - "eslint": "^9.25.1", - "npm-run-all2": "^8.0.2", - "typescript": "^5.8.3", - "vitest": "^3.2.4" + "@types/vscode": "1.99.0", + "@typescript-eslint/eslint-plugin": "8.31.1", + "@typescript-eslint/parser": "8.31.1", + "@vscode/vsce": "3.6.0", + "esbuild": "0.25.3", + "eslint": "9.25.1", + "npm-run-all2": "8.0.2", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "vscode": "^1.99.0" } }, + "packages/vscode-ide-companion/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/android-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "packages/vscode-ide-companion/node_modules/@eslint/js": { + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "packages/vscode-ide-companion/node_modules/@modelcontextprotocol/sdk": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.23.0.tgz", + "integrity": "sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "packages/vscode-ide-companion/node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "packages/vscode-ide-companion/node_modules/@types/vscode": { "version": "1.99.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.99.0.tgz", @@ -18785,12 +21299,494 @@ "dev": true, "license": "MIT" }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.1.tgz", + "integrity": "sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/type-utils": "8.31.1", + "@typescript-eslint/utils": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/parser": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz", + "integrity": "sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/scope-manager": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", + "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/type-utils": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.1.tgz", + "integrity": "sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/utils": "8.31.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/types": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", + "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", + "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/utils": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", + "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "packages/vscode-ide-companion/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", + "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/vscode-ide-companion/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "packages/vscode-ide-companion/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "packages/vscode-ide-companion/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "packages/vscode-ide-companion/node_modules/esbuild": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", + "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.3", + "@esbuild/android-arm": "0.25.3", + "@esbuild/android-arm64": "0.25.3", + "@esbuild/android-x64": "0.25.3", + "@esbuild/darwin-arm64": "0.25.3", + "@esbuild/darwin-x64": "0.25.3", + "@esbuild/freebsd-arm64": "0.25.3", + "@esbuild/freebsd-x64": "0.25.3", + "@esbuild/linux-arm": "0.25.3", + "@esbuild/linux-arm64": "0.25.3", + "@esbuild/linux-ia32": "0.25.3", + "@esbuild/linux-loong64": "0.25.3", + "@esbuild/linux-mips64el": "0.25.3", + "@esbuild/linux-ppc64": "0.25.3", + "@esbuild/linux-riscv64": "0.25.3", + "@esbuild/linux-s390x": "0.25.3", + "@esbuild/linux-x64": "0.25.3", + "@esbuild/netbsd-arm64": "0.25.3", + "@esbuild/netbsd-x64": "0.25.3", + "@esbuild/openbsd-arm64": "0.25.3", + "@esbuild/openbsd-x64": "0.25.3", + "@esbuild/sunos-x64": "0.25.3", + "@esbuild/win32-arm64": "0.25.3", + "@esbuild/win32-ia32": "0.25.3", + "@esbuild/win32-x64": "0.25.3" + } + }, + "packages/vscode-ide-companion/node_modules/eslint": { + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.25.1", + "@eslint/plugin-kit": "^0.2.8", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "packages/vscode-ide-companion/node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "packages/vscode-ide-companion/node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "packages/vscode-ide-companion/node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "packages/vscode-ide-companion/node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "packages/vscode-ide-companion/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "packages/vscode-ide-companion/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "packages/vscode-ide-companion/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/vscode-ide-companion/node_modules/npm-run-all2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-8.0.2.tgz", + "integrity": "sha512-yU70kTcohhAETxUjJQxTdQbaDJWCyv+DlKHEWdOifxZ0hZUKRh26mY2mfzlPxfGbsTRbgBuEHeakB6wx0CvVaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.6", + "memorystream": "^0.3.1", + "picomatch": "^4.0.2", + "pidtree": "^0.6.0", + "read-package-json-fast": "^4.0.0", + "shell-quote": "^1.7.3", + "which": "^5.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^20.5.0 || >=22.0.0", + "npm": ">= 10" + } + }, + "packages/vscode-ide-companion/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "packages/vscode-ide-companion/node_modules/pidtree": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.1.tgz", + "integrity": "sha512-e0F9AOF1JMrCfBsyJOwU9lNvQ0WtXTq0j/4jk0BQ5JSI9VAybPXmDpPRw/2FQ3e5d3ZFN1mLh7jW99m/jjaptw==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "packages/vscode-ide-companion/node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18798,6 +21794,22 @@ "engines": { "node": ">=14.17" } + }, + "packages/vscode-ide-companion/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } } } } diff --git a/package.json b/package.json index 2533f2744b..55cd8610eb 100644 --- a/package.json +++ b/package.json @@ -78,10 +78,10 @@ "cliui": { "wrap-ansi": "7.0.0" }, - "glob": "^12.0.0", + "glob": "12.0.0", "node-domexception": "npm:empty@^0.10.1", "prebuild-install": "npm:nop@1.0.0", - "cross-spawn": "^7.0.6" + "cross-spawn": "7.0.6" }, "bin": { "gemini": "bundle/gemini.js" @@ -92,73 +92,73 @@ "LICENSE" ], "devDependencies": { - "@agentclientprotocol/sdk": "^0.16.1", - "read-package-up": "^11.0.0", - "@octokit/rest": "^22.0.0", - "@types/marked": "^5.0.2", - "@types/mime-types": "^3.0.1", - "@types/minimatch": "^5.1.2", - "@types/mock-fs": "^4.13.4", - "@types/prompts": "^2.4.9", - "@types/proper-lockfile": "^4.1.4", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", - "@types/shell-quote": "^1.7.5", - "@types/ws": "^8.18.1", - "@vitest/coverage-v8": "^3.1.1", - "@vitest/eslint-plugin": "^1.3.4", - "asciichart": "^1.5.25", - "cross-env": "^7.0.3", - "depcheck": "^1.4.7", - "domexception": "^4.0.0", - "esbuild": "^0.25.0", - "esbuild-plugin-wasm": "^1.1.0", - "eslint": "^9.24.0", - "eslint-config-prettier": "^10.1.2", - "eslint-plugin-headers": "^1.3.3", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^5.2.0", - "glob": "^12.0.0", - "globals": "^16.0.0", - "google-artifactregistry-auth": "^3.4.0", - "husky": "^9.1.7", - "json": "^11.0.0", - "lint-staged": "^16.1.6", - "memfs": "^4.42.0", - "mnemonist": "^0.40.3", - "mock-fs": "^5.5.0", - "msw": "^2.10.4", - "npm-run-all": "^4.1.5", - "prettier": "^3.5.3", - "react-devtools-core": "^6.1.2", - "react-dom": "^19.2.0", - "semver": "^7.7.2", - "strip-ansi": "^7.1.2", - "ts-prune": "^0.10.3", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "typescript-eslint": "^8.30.1", - "vitest": "^3.2.4", - "yargs": "^17.7.2" + "@agentclientprotocol/sdk": "0.16.1", + "read-package-up": "11.0.0", + "@octokit/rest": "22.0.0", + "@types/marked": "5.0.2", + "@types/mime-types": "3.0.1", + "@types/minimatch": "5.1.2", + "@types/mock-fs": "4.13.4", + "@types/prompts": "2.4.9", + "@types/proper-lockfile": "4.1.4", + "@types/react": "19.2.0", + "@types/react-dom": "19.2.0", + "@types/shell-quote": "1.7.5", + "@types/ws": "8.18.1", + "@vitest/coverage-v8": "3.2.4", + "@vitest/eslint-plugin": "1.3.4", + "asciichart": "1.5.25", + "cross-env": "7.0.3", + "depcheck": "1.4.7", + "domexception": "4.0.0", + "esbuild": "0.25.0", + "esbuild-plugin-wasm": "1.1.0", + "eslint": "9.24.0", + "eslint-config-prettier": "10.1.2", + "eslint-plugin-headers": "1.3.3", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", + "glob": "12.0.0", + "globals": "16.0.0", + "google-artifactregistry-auth": "3.4.0", + "husky": "9.1.7", + "json": "11.0.0", + "lint-staged": "16.1.6", + "memfs": "4.42.0", + "mnemonist": "0.40.3", + "mock-fs": "5.5.0", + "msw": "2.10.4", + "npm-run-all": "4.1.5", + "prettier": "3.5.3", + "react-devtools-core": "6.1.2", + "react-dom": "19.2.4", + "semver": "7.7.2", + "strip-ansi": "7.1.2", + "ts-prune": "0.10.3", + "tsx": "4.20.3", + "typescript": "5.8.3", + "typescript-eslint": "8.30.1", + "vitest": "3.2.4", + "yargs": "17.7.2" }, "dependencies": { "ink": "npm:@jrichman/ink@6.6.9", - "latest-version": "^9.0.0", - "node-fetch-native": "^1.6.7", - "proper-lockfile": "^4.1.2", - "punycode": "^2.3.1", - "simple-git": "^3.28.0" + "latest-version": "9.0.0", + "node-fetch-native": "1.6.7", + "proper-lockfile": "4.1.2", + "punycode": "2.3.1", + "simple-git": "3.28.0" }, "optionalDependencies": { - "@github/keytar": "^7.10.6", + "@github/keytar": "7.10.6", "@lydell/node-pty": "1.1.0", "@lydell/node-pty-darwin-arm64": "1.1.0", "@lydell/node-pty-darwin-x64": "1.1.0", "@lydell/node-pty-linux-x64": "1.1.0", "@lydell/node-pty-win32-arm64": "1.1.0", "@lydell/node-pty-win32-x64": "1.1.0", - "node-pty": "^1.0.0" + "node-pty": "1.0.0" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ diff --git a/packages/a2a-server/package.json b/packages/a2a-server/package.json index 6801349f2c..a5f82552a9 100644 --- a/packages/a2a-server/package.json +++ b/packages/a2a-server/package.json @@ -26,25 +26,25 @@ ], "dependencies": { "@a2a-js/sdk": "0.3.11", - "@google-cloud/storage": "^7.19.0", + "@google-cloud/storage": "7.19.0", "@google/gemini-cli-core": "file:../core", - "express": "^5.1.0", - "fs-extra": "^11.3.0", - "strip-json-comments": "^3.1.1", - "tar": "^7.5.8", - "uuid": "^13.0.0", - "winston": "^3.17.0" + "express": "5.1.0", + "fs-extra": "11.3.0", + "strip-json-comments": "3.1.1", + "tar": "7.5.8", + "uuid": "13.0.0", + "winston": "3.17.0" }, "devDependencies": { "@google/genai": "1.30.0", - "@types/express": "^5.0.3", - "@types/fs-extra": "^11.0.4", - "@types/supertest": "^6.0.3", - "@types/tar": "^6.1.13", - "dotenv": "^16.4.5", - "supertest": "^7.1.4", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/express": "5.0.3", + "@types/fs-extra": "11.0.4", + "@types/supertest": "6.0.3", + "@types/tar": "6.1.13", + "dotenv": "16.4.5", + "supertest": "7.1.4", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" diff --git a/packages/a2a-server/src/config/settings.ts b/packages/a2a-server/src/config/settings.ts index b34b4566ac..754f2b4b94 100644 --- a/packages/a2a-server/src/config/settings.ts +++ b/packages/a2a-server/src/config/settings.ts @@ -157,14 +157,17 @@ export function loadSettings( function resolveEnvVarsInString(value: string): string { const envVarRegex = /\$(?:(\w+)|{([^}]+)})/g; // Find $VAR_NAME or ${VAR_NAME} - return value.replace(envVarRegex, (match, varName1, varName2) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const varName = varName1 || varName2; - if (process && process.env && typeof process.env[varName] === 'string') { - return process.env[varName]; - } - return match; - }); + return value.replace( + envVarRegex, + (match: string, varName1: string, varName2: string) => { + const varName = varName1 || varName2; + const envValue = process?.env?.[varName]; + if (typeof envValue === 'string') { + return envValue; + } + return match; + }, + ); } function resolveEnvVarsInObject(obj: T): T { diff --git a/packages/cli/package.json b/packages/cli/package.json index 0dc888e83c..12e0ddcb8a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -30,60 +30,60 @@ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.49.0-nightly.20260617.g4d3dcdce1" }, "dependencies": { - "@agentclientprotocol/sdk": "^0.16.1", + "@agentclientprotocol/sdk": "0.16.1", "@google/gemini-cli-core": "file:../core", "@google/genai": "1.30.0", - "@iarna/toml": "^2.2.5", - "@modelcontextprotocol/sdk": "^1.23.0", - "ansi-escapes": "^7.3.0", - "ansi-regex": "^6.2.2", - "chalk": "^4.1.2", - "cli-spinners": "^2.9.2", - "clipboardy": "~5.2.0", - "color-convert": "^2.0.1", - "command-exists": "^1.2.9", - "comment-json": "^4.2.5", - "diff": "^8.0.3", - "dotenv": "^17.1.0", - "extract-zip": "^2.0.1", - "fzf": "^0.5.2", - "glob": "^12.0.0", - "highlight.js": "^11.11.1", + "@iarna/toml": "2.2.5", + "@modelcontextprotocol/sdk": "1.23.0", + "ansi-escapes": "7.3.0", + "ansi-regex": "6.2.2", + "chalk": "4.1.2", + "cli-spinners": "2.9.2", + "clipboardy": "5.2.0", + "color-convert": "2.0.1", + "command-exists": "1.2.9", + "comment-json": "4.2.5", + "diff": "8.0.3", + "dotenv": "17.1.0", + "extract-zip": "2.0.1", + "fzf": "0.5.2", + "glob": "12.0.0", + "highlight.js": "11.11.1", "ink": "npm:@jrichman/ink@6.6.9", - "ink-gradient": "^3.0.0", - "ink-spinner": "^5.0.0", - "latest-version": "^9.0.0", - "lowlight": "^3.3.0", - "mnemonist": "^0.40.3", - "open": "^10.1.2", - "prompts": "^2.4.2", - "proper-lockfile": "^4.1.2", - "react": "^19.2.0", - "shell-quote": "^1.8.3", - "simple-git": "^3.28.0", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.0", - "strip-json-comments": "^3.1.1", - "tar": "^7.5.8", - "tinygradient": "^1.1.5", - "undici": "^7.10.0", - "ws": "^8.16.0", - "yargs": "^17.7.2", - "zod": "^3.23.8" + "ink-gradient": "3.0.0", + "ink-spinner": "5.0.0", + "latest-version": "9.0.0", + "lowlight": "3.3.0", + "mnemonist": "0.40.3", + "open": "10.1.2", + "prompts": "2.4.2", + "proper-lockfile": "4.1.2", + "react": "19.2.4", + "shell-quote": "1.8.3", + "simple-git": "3.28.0", + "string-width": "8.1.0", + "strip-ansi": "7.1.0", + "strip-json-comments": "3.1.1", + "tar": "7.5.8", + "tinygradient": "1.1.5", + "undici": "7.10.0", + "ws": "8.16.0", + "yargs": "17.7.2", + "zod": "3.25.76" }, "devDependencies": { "@google/gemini-cli-test-utils": "file:../test-utils", - "@types/command-exists": "^1.2.3", - "@types/hast": "^3.0.4", - "@types/node": "^20.11.24", - "@types/react": "^19.2.0", - "@types/semver": "^7.7.0", - "@types/shell-quote": "^1.7.5", - "@types/ws": "^8.5.10", - "@types/yargs": "^17.0.32", - "@xterm/headless": "^5.5.0", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/command-exists": "1.2.3", + "@types/hast": "3.0.4", + "@types/node": "20.11.24", + "@types/react": "19.2.0", + "@types/semver": "7.7.0", + "@types/shell-quote": "1.7.5", + "@types/ws": "8.5.10", + "@types/yargs": "17.0.32", + "@xterm/headless": "5.5.0", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" diff --git a/packages/cli/src/acp/acpSession.test.ts b/packages/cli/src/acp/acpSession.test.ts index 6d21971c79..96e25ea90a 100644 --- a/packages/cli/src/acp/acpSession.test.ts +++ b/packages/cli/src/acp/acpSession.test.ts @@ -278,7 +278,8 @@ describe('Session', () => { void, unknown > { - yield* []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + yield* [] as any; throw error; } return errorGen(); @@ -303,7 +304,8 @@ describe('Session', () => { void, unknown > { - yield* []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + yield* [] as any; throw error; } return errorGen(); @@ -473,7 +475,8 @@ describe('Session', () => { void, unknown > { - yield* []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + yield* [] as any; throw customError; } return errorGen(); diff --git a/packages/cli/src/commands/extensions/examples/mcp-server/package.json b/packages/cli/src/commands/extensions/examples/mcp-server/package.json index ddb2959c38..5200439041 100644 --- a/packages/cli/src/commands/extensions/examples/mcp-server/package.json +++ b/packages/cli/src/commands/extensions/examples/mcp-server/package.json @@ -5,7 +5,7 @@ "type": "module", "main": "example.js", "dependencies": { - "@modelcontextprotocol/sdk": "^1.23.0", - "zod": "^3.22.4" + "@modelcontextprotocol/sdk": "1.23.0", + "zod": "3.22.4" } } diff --git a/packages/cli/src/config/extensions/extensionEnablement.test.ts b/packages/cli/src/config/extensions/extensionEnablement.test.ts index 831dad93f9..eb0a7c8834 100644 --- a/packages/cli/src/config/extensions/extensionEnablement.test.ts +++ b/packages/cli/src/config/extensions/extensionEnablement.test.ts @@ -71,7 +71,7 @@ describe('ExtensionEnablementManager', () => { vi.spyOn(fs, 'writeFileSync').mockImplementation( ( path: fs.PathOrFileDescriptor, - data: string | ArrayBufferView, + data: string | NodeJS.ArrayBufferView, ) => { inMemoryFs[path.toString()] = data.toString(); // Convert ArrayBufferView to string for inMemoryFs }, diff --git a/packages/cli/src/config/extensions/update.ts b/packages/cli/src/config/extensions/update.ts index c4b7113530..0d751fd9c5 100644 --- a/packages/cli/src/config/extensions/update.ts +++ b/packages/cli/src/config/extensions/update.ts @@ -156,25 +156,26 @@ export async function updateAllUpdatableExtensions( dispatch: (action: ExtensionUpdateAction) => void, enableExtensionReloading?: boolean, ): Promise { - return ( - await Promise.all( - extensions - .filter( - (extension) => - extensionsState.get(extension.name)?.status === - ExtensionUpdateState.UPDATE_AVAILABLE, - ) - .map((extension) => - updateExtension( - extension, - extensionManager, - extensionsState.get(extension.name)!.status, - dispatch, - enableExtensionReloading, - ), + const results = await Promise.all( + extensions + .filter( + (extension) => + extensionsState.get(extension.name)?.status === + ExtensionUpdateState.UPDATE_AVAILABLE, + ) + .map((extension) => + updateExtension( + extension, + extensionManager, + extensionsState.get(extension.name)!.status, + dispatch, + enableExtensionReloading, ), - ) - ).filter((updateInfo) => !!updateInfo); + ), + ); + return results.filter( + (updateInfo): updateInfo is ExtensionUpdateInfo => !!updateInfo, + ); } export interface ExtensionUpdateCheckResult { diff --git a/packages/cli/src/config/extensions/variables.ts b/packages/cli/src/config/extensions/variables.ts index 03276d7125..5f90610dd9 100644 --- a/packages/cli/src/config/extensions/variables.ts +++ b/packages/cli/src/config/extensions/variables.ts @@ -52,9 +52,10 @@ export function validateVariables( export function hydrateString(str: string, context: VariableContext): string { validateVariables(context, VARIABLE_SCHEMA); const regex = /\${(.*?)}/g; - return str.replace(regex, (match, key) => - context[key] == null ? match : context[key], - ); + return str.replace(regex, (match, key) => { + const val = context[key]; + return val == null ? match : String(val); + }); } export function recursivelyHydrateStrings( diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index fb76a88068..f35429b952 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -657,7 +657,7 @@ export async function main() { // Register SessionEnd hook to fire on graceful exit // This runs before telemetry shutdown in runExitCleanup() registerCleanup(async () => { - await config.getHookSystem()?.fireSessionEndEvent(SessionEndReason.Exit); + await config?.getHookSystem()?.fireSessionEndEvent(SessionEndReason.Exit); }); // Register ConsolePatcher cleanup last to ensure logs from shutdown hooks diff --git a/packages/cli/src/services/McpPromptLoader.ts b/packages/cli/src/services/McpPromptLoader.ts index 5be2ad846d..0218e0fefd 100644 --- a/packages/cli/src/services/McpPromptLoader.ts +++ b/packages/cli/src/services/McpPromptLoader.ts @@ -158,16 +158,15 @@ export class McpPromptLoader implements ICommandLoader { return []; } const indexOfFirstSpace = invocation.raw.indexOf(' ') + 1; - let promptInputs = + const parsedInputs = indexOfFirstSpace === 0 ? {} : this.parseArgs( invocation.raw.substring(indexOfFirstSpace), prompt.arguments, ); - if (promptInputs instanceof Error) { - promptInputs = {}; - } + const promptInputs = + parsedInputs instanceof Error ? {} : parsedInputs; const providedArgNames = Object.keys(promptInputs); const unusedArguments = diff --git a/packages/cli/src/test-utils/render.tsx b/packages/cli/src/test-utils/render.tsx index 5f5ae4b8dc..99ba652292 100644 --- a/packages/cli/src/test-utils/render.tsx +++ b/packages/cli/src/test-utils/render.tsx @@ -706,13 +706,13 @@ export const renderWithProviders = async ( const terminalWidth = width ?? baseState.terminalWidth; - if (!config) { - config = makeFakeConfig({ + const finalConfig = + config || + makeFakeConfig({ useAlternateBuffer: settings.merged.ui?.useAlternateBuffer, showMemoryUsage: settings.merged.ui?.showMemoryUsage, accessibility: settings.merged.ui?.accessibility, }); - } const mainAreaWidth = providedUiState?.mainAreaWidth ?? terminalWidth; @@ -742,21 +742,23 @@ export const renderWithProviders = async ( const wrapWithProviders = (comp: React.ReactElement) => ( - + - + { vi.spyOn(mockConfig, 'initialize').mockResolvedValue(undefined); vi.spyOn(mockConfig, 'getDebugMode').mockReturnValue(false); - mockExtensionManager = vi.mockObject({ + mockExtensionManager = { getExtensions: vi.fn().mockReturnValue([]), setRequestConsent: vi.fn(), setRequestSetting: vi.fn(), start: vi.fn(), - } as unknown as ExtensionManager); + } as unknown as MockedObject; vi.spyOn(mockConfig, 'getExtensionLoader').mockReturnValue( mockExtensionManager, ); diff --git a/packages/cli/src/ui/auth/AuthDialog.tsx b/packages/cli/src/ui/auth/AuthDialog.tsx index 775fb7f5d3..e5b08e6cc2 100644 --- a/packages/cli/src/ui/auth/AuthDialog.tsx +++ b/packages/cli/src/ui/auth/AuthDialog.tsx @@ -83,7 +83,7 @@ export function AuthDialog({ ); } - let defaultAuthType = null; + let defaultAuthType: AuthType | null = null; const defaultAuthTypeEnv = process.env['GEMINI_DEFAULT_AUTH_TYPE']; if ( defaultAuthTypeEnv && diff --git a/packages/cli/src/ui/commands/extensionsCommand.test.ts b/packages/cli/src/ui/commands/extensionsCommand.test.ts index cef021f39f..0f801c5278 100644 --- a/packages/cli/src/ui/commands/extensionsCommand.test.ts +++ b/packages/cli/src/ui/commands/extensionsCommand.test.ts @@ -439,7 +439,8 @@ describe('extensionsCommand', () => { } it('should return ExtensionRegistryView custom dialog when experimental.extensionRegistry is true', async () => { - mockContext.services.settings.merged.experimental.extensionRegistry = true; + mockContext.services.settings.merged.experimental.extensionRegistry = + true; const result = await exploreAction(mockContext, ''); @@ -455,7 +456,8 @@ describe('extensionsCommand', () => { }); it('should handle onSelect and onClose in ExtensionRegistryView', async () => { - mockContext.services.settings.merged.experimental.extensionRegistry = true; + mockContext.services.settings.merged.experimental.extensionRegistry = + true; const result = await exploreAction(mockContext, ''); if (result?.type !== 'custom_dialog') { diff --git a/packages/cli/src/ui/commands/mcpCommand.ts b/packages/cli/src/ui/commands/mcpCommand.ts index 3fd214152e..fcc7fa9e61 100644 --- a/packages/cli/src/ui/commands/mcpCommand.ts +++ b/packages/cli/src/ui/commands/mcpCommand.ts @@ -284,7 +284,8 @@ const listAction = async ( type: MessageType.MCP_STATUS, servers: mcpServers, tools: mcpTools.map((tool) => ({ - serverName: tool.serverName, + // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion + serverName: (tool as unknown as { serverName: string }).serverName, name: tool.name, description: tool.description, schema: tool.schema, diff --git a/packages/cli/src/ui/commands/restoreCommand.ts b/packages/cli/src/ui/commands/restoreCommand.ts index 3796456ff8..9120c0b164 100644 --- a/packages/cli/src/ui/commands/restoreCommand.ts +++ b/packages/cli/src/ui/commands/restoreCommand.ts @@ -30,7 +30,11 @@ const HistoryItemSchema = z }) .passthrough(); -const ToolCallDataSchema = getToolCallDataSchema(HistoryItemSchema); +/* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ +const ToolCallDataSchema = getToolCallDataSchema( + HistoryItemSchema as unknown as Parameters[0], +); +/* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ async function restoreAction( context: CommandContext, diff --git a/packages/cli/src/ui/commands/setupGithubCommand.ts b/packages/cli/src/ui/commands/setupGithubCommand.ts index ff290c27fb..f34e349e7e 100644 --- a/packages/cli/src/ui/commands/setupGithubCommand.ts +++ b/packages/cli/src/ui/commands/setupGithubCommand.ts @@ -126,10 +126,13 @@ async function downloadFiles({ const response = await fetch(endpoint, { method: 'GET', dispatcher: proxy ? new ProxyAgent(proxy) : undefined, - signal: AbortSignal.any([ - AbortSignal.timeout(30_000), - abortController.signal, - ]), + /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ + signal: ( + AbortSignal as unknown as { + any: (signals: AbortSignal[]) => AbortSignal; + } + ).any([AbortSignal.timeout(30_000), abortController.signal]), + /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ } as RequestInit); if (!response.ok) { diff --git a/packages/cli/src/ui/components/AgentConfigDialog.tsx b/packages/cli/src/ui/components/AgentConfigDialog.tsx index 3f5d348a45..6b24d4d5ee 100644 --- a/packages/cli/src/ui/components/AgentConfigDialog.tsx +++ b/packages/cli/src/ui/components/AgentConfigDialog.tsx @@ -128,7 +128,7 @@ function setNestedValue(obj: unknown, path: string[], value: unknown): unknown { if (current[key] === undefined || current[key] === null) { current[key] = {}; } else if (isRecord(current[key])) { - current[key] = { ...current[key] }; + current[key] = { ...(current[key] as object) }; } const next = current[key]; diff --git a/packages/cli/src/ui/hooks/atCommandProcessor.test.ts b/packages/cli/src/ui/hooks/atCommandProcessor.test.ts index bb301f7039..8525c0a684 100644 --- a/packages/cli/src/ui/hooks/atCommandProcessor.test.ts +++ b/packages/cli/src/ui/hooks/atCommandProcessor.test.ts @@ -1427,7 +1427,8 @@ describe('handleAtCommand', () => { const query = `@${filePath}`; // Simulate user cancellation - const mockToolInstance = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const mockToolInstance: any = { buildAndExecute: vi .fn() .mockRejectedValue(new Error('User cancelled operation')), diff --git a/packages/cli/src/utils/envVarResolver.ts b/packages/cli/src/utils/envVarResolver.ts index 5fe736bd8e..286ecbb00b 100644 --- a/packages/cli/src/utils/envVarResolver.ts +++ b/packages/cli/src/utils/envVarResolver.ts @@ -44,8 +44,11 @@ export function resolveEnvVarsInString( if (customEnv && typeof customEnv[varName] === 'string') { return customEnv[varName]; } - if (process && process.env && typeof process.env[varName] === 'string') { - return process.env[varName]; + if (process && process.env) { + const val = process.env[varName]; + if (typeof val === 'string') { + return val; + } } if (defaultValue !== undefined) { return defaultValue; diff --git a/packages/cli/src/utils/gitUtils.ts b/packages/cli/src/utils/gitUtils.ts index 5793786ed9..8c9555b1fa 100644 --- a/packages/cli/src/utils/gitUtils.ts +++ b/packages/cli/src/utils/gitUtils.ts @@ -69,7 +69,13 @@ export const getLatestGitHubRelease = async ( 'X-GitHub-Api-Version': '2022-11-28', }, dispatcher: proxy ? new ProxyAgent(proxy) : undefined, - signal: AbortSignal.any([AbortSignal.timeout(30_000), controller.signal]), + /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ + signal: ( + AbortSignal as unknown as { + any: (signals: AbortSignal[]) => AbortSignal; + } + ).any([AbortSignal.timeout(30_000), controller.signal]), + /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ } as RequestInit); if (!response.ok) { diff --git a/packages/cli/src/utils/sandbox.ts b/packages/cli/src/utils/sandbox.ts index abefd101d4..bda3f073ea 100644 --- a/packages/cli/src/utils/sandbox.ts +++ b/packages/cli/src/utils/sandbox.ts @@ -805,7 +805,7 @@ export async function start_sandbox( }); return await new Promise((resolve, reject) => { - sandboxProcess.on('error', (err) => { + sandboxProcess?.on('error', (err) => { coreEvents.emitFeedback('error', 'Sandbox process error', err); reject(err); }); diff --git a/packages/core/package.json b/packages/core/package.json index 52437d8f7f..eaf6fc7831 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -24,95 +24,95 @@ ], "dependencies": { "@a2a-js/sdk": "0.3.11", - "@bufbuild/protobuf": "^2.11.0", - "@google-cloud/logging": "^11.2.1", - "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.21.0", - "@google-cloud/opentelemetry-cloud-trace-exporter": "^3.0.0", + "@bufbuild/protobuf": "2.11.0", + "@google-cloud/logging": "11.2.1", + "@google-cloud/opentelemetry-cloud-monitoring-exporter": "0.21.0", + "@google-cloud/opentelemetry-cloud-trace-exporter": "3.0.0", "@google/genai": "1.30.0", - "@grpc/grpc-js": "^1.14.3", - "@iarna/toml": "^2.2.5", - "@modelcontextprotocol/sdk": "^1.23.0", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.218.0", - "@opentelemetry/core": "^2.7.1", - "@opentelemetry/exporter-logs-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.218.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.218.0", - "@opentelemetry/exporter-trace-otlp-grpc": "^0.218.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.218.0", - "@opentelemetry/instrumentation-http": "^0.218.0", - "@opentelemetry/otlp-exporter-base": "^0.218.0", - "@opentelemetry/resources": "^2.7.1", - "@opentelemetry/sdk-logs": "^0.218.0", - "@opentelemetry/sdk-metrics": "^2.7.1", - "@opentelemetry/sdk-node": "^0.218.0", - "@opentelemetry/sdk-trace-base": "^2.7.1", - "@opentelemetry/sdk-trace-node": "^2.7.1", - "@opentelemetry/semantic-conventions": "^1.39.0", - "@types/html-to-text": "^9.0.4", + "@grpc/grpc-js": "1.14.3", + "@iarna/toml": "2.2.5", + "@modelcontextprotocol/sdk": "1.23.0", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/exporter-logs-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-logs-otlp-http": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-trace-otlp-http": "0.218.0", + "@opentelemetry/instrumentation-http": "0.218.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-node": "0.218.0", + "@opentelemetry/sdk-trace-base": "2.7.1", + "@opentelemetry/sdk-trace-node": "2.7.1", + "@opentelemetry/semantic-conventions": "1.39.0", + "@types/html-to-text": "9.0.4", "@xterm/headless": "5.5.0", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.0", - "chokidar": "^5.0.0", - "command-exists": "^1.2.9", - "diff": "^8.0.3", - "dotenv": "^17.2.4", - "dotenv-expand": "^12.0.3", - "execa": "^9.6.1", - "fast-levenshtein": "^2.0.6", - "fdir": "^6.4.6", - "fzf": "^0.5.2", - "glob": "^12.0.0", - "google-auth-library": "^9.11.0", - "html-to-text": "^9.0.5", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "ignore": "^7.0.0", - "ipaddr.js": "^1.9.1", - "isbinaryfile": "^5.0.7", - "js-yaml": "^4.1.1", - "json-stable-stringify": "^1.3.0", - "marked": "^15.0.12", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "chokidar": "5.0.0", + "command-exists": "1.2.9", + "diff": "8.0.3", + "dotenv": "17.2.4", + "dotenv-expand": "12.0.3", + "execa": "9.6.1", + "fast-levenshtein": "2.0.6", + "fdir": "6.4.6", + "fzf": "0.5.2", + "glob": "12.0.0", + "google-auth-library": "9.11.0", + "html-to-text": "9.0.5", + "http-proxy-agent": "7.0.2", + "https-proxy-agent": "7.0.6", + "ignore": "7.0.0", + "ipaddr.js": "1.9.1", + "isbinaryfile": "5.0.7", + "js-yaml": "4.1.1", + "json-stable-stringify": "1.3.0", + "marked": "15.0.12", "mime": "4.0.7", - "mnemonist": "^0.40.3", - "open": "^10.1.2", - "picomatch": "^4.0.1", - "proper-lockfile": "^4.1.2", - "puppeteer-core": "^24.0.0", - "read-package-up": "^11.0.0", - "shell-quote": "^1.8.3", - "simple-git": "^3.28.0", - "strip-ansi": "^7.1.0", - "strip-json-comments": "^3.1.1", - "systeminformation": "^5.25.11", - "tree-sitter-bash": "^0.25.0", - "undici": "^7.10.0", - "uuid": "^13.0.0", - "web-tree-sitter": "^0.25.10", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.25.1" + "mnemonist": "0.40.3", + "open": "10.1.2", + "picomatch": "4.0.1", + "proper-lockfile": "4.1.2", + "puppeteer-core": "24.0.0", + "read-package-up": "11.0.0", + "shell-quote": "1.8.3", + "simple-git": "3.28.0", + "strip-ansi": "7.1.0", + "strip-json-comments": "3.1.1", + "systeminformation": "5.25.11", + "tree-sitter-bash": "0.25.0", + "undici": "7.10.0", + "uuid": "13.0.0", + "web-tree-sitter": "0.25.10", + "zod": "3.25.76", + "zod-to-json-schema": "3.25.1" }, "optionalDependencies": { - "@github/keytar": "^7.10.6", + "@github/keytar": "7.10.6", "@lydell/node-pty": "1.1.0", "@lydell/node-pty-darwin-arm64": "1.1.0", "@lydell/node-pty-darwin-x64": "1.1.0", "@lydell/node-pty-linux-x64": "1.1.0", "@lydell/node-pty-win32-arm64": "1.1.0", "@lydell/node-pty-win32-x64": "1.1.0", - "node-pty": "^1.0.0" + "node-pty": "1.0.0" }, "devDependencies": { "@google/gemini-cli-test-utils": "file:../test-utils", - "@types/fast-levenshtein": "^0.0.4", - "@types/js-yaml": "^4.0.9", - "@types/json-stable-stringify": "^1.1.0", - "@types/picomatch": "^4.0.1", - "chrome-devtools-mcp": "^0.19.0", - "msw": "^2.3.4", - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "@types/fast-levenshtein": "0.0.4", + "@types/js-yaml": "4.0.9", + "@types/json-stable-stringify": "1.1.0", + "@types/picomatch": "4.0.1", + "chrome-devtools-mcp": "0.19.0", + "msw": "2.3.4", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" diff --git a/packages/core/src/agents/auth-provider/api-key-provider.ts b/packages/core/src/agents/auth-provider/api-key-provider.ts index 207c987271..000236abda 100644 --- a/packages/core/src/agents/auth-provider/api-key-provider.ts +++ b/packages/core/src/agents/auth-provider/api-key-provider.ts @@ -22,7 +22,7 @@ const DEFAULT_HEADER_NAME = 'X-API-Key'; * - A shell command (!command) */ export class ApiKeyAuthProvider extends BaseA2AAuthProvider { - readonly type = 'apiKey' as const; + readonly type = 'apiKey'; private resolvedKey: string | undefined; private readonly headerName: string; diff --git a/packages/core/src/agents/auth-provider/google-credentials-provider.ts b/packages/core/src/agents/auth-provider/google-credentials-provider.ts index 30729c064b..bdd11aa613 100644 --- a/packages/core/src/agents/auth-provider/google-credentials-provider.ts +++ b/packages/core/src/agents/auth-provider/google-credentials-provider.ts @@ -20,7 +20,7 @@ const ALLOWED_HOSTS = [/^.+\.googleapis\.com$/, CLOUD_RUN_HOST_REGEX]; * based on the target endpoint URL. */ export class GoogleCredentialsAuthProvider extends BaseA2AAuthProvider { - readonly type = 'google-credentials' as const; + readonly type = 'google-credentials'; private readonly auth: GoogleAuth; private readonly useIdToken: boolean = false; diff --git a/packages/core/src/agents/auth-provider/http-provider.ts b/packages/core/src/agents/auth-provider/http-provider.ts index 920424c667..a1af8a88e4 100644 --- a/packages/core/src/agents/auth-provider/http-provider.ts +++ b/packages/core/src/agents/auth-provider/http-provider.ts @@ -15,7 +15,7 @@ import { debugLogger } from '../../utils/debugLogger.js'; * Supports Bearer, Basic, and any IANA-registered scheme via raw value. */ export class HttpAuthProvider extends BaseA2AAuthProvider { - readonly type = 'http' as const; + readonly type = 'http'; private resolvedToken?: string; private resolvedUsername?: string; diff --git a/packages/core/src/agents/auth-provider/oauth2-provider.ts b/packages/core/src/agents/auth-provider/oauth2-provider.ts index c362765799..c93a5b63db 100644 --- a/packages/core/src/agents/auth-provider/oauth2-provider.ts +++ b/packages/core/src/agents/auth-provider/oauth2-provider.ts @@ -34,7 +34,7 @@ import { Storage } from '../../config/storage.js'; * and persists tokens via `MCPOAuthTokenStorage`. */ export class OAuth2AuthProvider extends BaseA2AAuthProvider { - readonly type = 'oauth2' as const; + readonly type = 'oauth2'; private readonly tokenStorage: MCPOAuthTokenStorage; private cachedToken: OAuthToken | null = null; diff --git a/packages/core/src/agents/local-executor.ts b/packages/core/src/agents/local-executor.ts index 76e76810ae..3d84beb2cd 100644 --- a/packages/core/src/agents/local-executor.ts +++ b/packages/core/src/agents/local-executor.ts @@ -470,10 +470,13 @@ export class LocalAgentExecutor { }; // We monitor both the external signal and our new grace period timeout - const combinedSignal = AbortSignal.any([ - externalSignal, - graceTimeoutController.signal, - ]); + /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ + const combinedSignal = ( + AbortSignal as unknown as { + any: (signals: AbortSignal[]) => AbortSignal; + } + ).any([externalSignal, graceTimeoutController.signal]); + /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ const turnResult = await this.executeTurn( chat, @@ -593,7 +596,11 @@ export class LocalAgentExecutor { }; // Combine the external signal with the internal timeout signal. - const combinedSignal = AbortSignal.any([signal, deadlineTimer.signal]); + /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ + const combinedSignal = ( + AbortSignal as unknown as { any: (signals: AbortSignal[]) => AbortSignal } + ).any([signal, deadlineTimer.signal]); + /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ logAgentStart( this.context.config, diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts index ca43b9b39f..bfd5cae6b8 100644 --- a/packages/core/src/ide/ide-client.ts +++ b/packages/core/src/ide/ide-client.ts @@ -251,8 +251,11 @@ export class IdeClient { const textPart = parsedResultData.content.find( (part) => part.type === 'text', ); + const errorMessage = - textPart?.text ?? `Tool 'openDiff' reported an error.`; + // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion + (textPart as { text?: string })?.text ?? + `Tool 'openDiff' reported an error.`; logger.debug( `Request for openDiff ${filePath} failed with isError:`, errorMessage, @@ -332,7 +335,7 @@ export class IdeClient { if (resultData.isError) { const textPart = resultData.content.find( (part) => part.type === 'text', - ); + ) as { type: 'text'; text: string } | undefined; const errorMessage = textPart?.text ?? `Tool 'closeDiff' reported an error.`; logger.debug( @@ -342,7 +345,9 @@ export class IdeClient { return undefined; } - const textPart = resultData.content.find((part) => part.type === 'text'); + const textPart = resultData.content.find( + (part): part is { type: 'text'; text: string } => part.type === 'text', + ); if (textPart?.text) { try { diff --git a/packages/core/src/policy/toml-loader.ts b/packages/core/src/policy/toml-loader.ts index 977e8a399a..fa80bdc4fa 100644 --- a/packages/core/src/policy/toml-loader.ts +++ b/packages/core/src/policy/toml-loader.ts @@ -732,7 +732,7 @@ export function validateMcpPolicyToolNames( if (discoveredToolNames.length === 0) continue; const minDistance = Math.min( - ...discoveredToolNames.map((n) => levenshtein.get(toolPart, n)), + ...discoveredToolNames.map((n) => levenshtein.get(toolPart ?? '', n)), ); if (minDistance > MAX_TYPO_DISTANCE) continue; diff --git a/packages/core/src/services/executionLifecycleService.ts b/packages/core/src/services/executionLifecycleService.ts index a16717e3d0..9eff908351 100644 --- a/packages/core/src/services/executionLifecycleService.ts +++ b/packages/core/src/services/executionLifecycleService.ts @@ -445,12 +445,10 @@ export class ExecutionLifecycleService { return; } - const { - error = null, - aborted = false, - exitCode = error ? 1 : 0, - signal = null, - } = options ?? {}; + const error = options?.error ?? null; + const aborted = options?.aborted ?? false; + const exitCode = options?.exitCode ?? (error ? 1 : 0); + const signal = options?.signal ?? null; const output = execution.getBackgroundOutput?.() ?? execution.output; const snapshot = execution.getSubscriptionSnapshot?.(); diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts index 292588c7a1..10a7199ef8 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts @@ -69,7 +69,7 @@ interface CustomMatchers { declare module 'vitest' { // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type - interface Matchers extends CustomMatchers {} + interface Assertion extends CustomMatchers {} } expect.extend({ @@ -929,15 +929,13 @@ describe('ClearcutLogger', () => { const { logger } = setup(); server.resetHandlers( - http.post( - CLEARCUT_URL, - () => - new HttpResponse( - { 'the system is down': true }, - { - status: 500, - }, - ), + http.post(CLEARCUT_URL, () => + HttpResponse.json( + { 'the system is down': true }, + { + status: 500, + }, + ), ), ); diff --git a/packages/core/src/tools/mcp-client-manager.test.ts b/packages/core/src/tools/mcp-client-manager.test.ts index 7d4602b8a5..024b5b4c90 100644 --- a/packages/core/src/tools/mcp-client-manager.test.ts +++ b/packages/core/src/tools/mcp-client-manager.test.ts @@ -35,16 +35,16 @@ describe('McpClientManager', () => { let toolRegistry: ToolRegistry; beforeEach(() => { - mockedMcpClient = vi.mockObject({ + mockedMcpClient = { connect: vi.fn(), discoverInto: vi.fn(), disconnect: vi.fn(), getStatus: vi.fn().mockReturnValue(MCPServerStatus.DISCONNECTED), getServerConfig: vi.fn(), getServerName: vi.fn().mockReturnValue('test-server'), - } as unknown as McpClient); + } as unknown as MockedObject; vi.mocked(McpClient).mockReturnValue(mockedMcpClient); - mockConfig = vi.mockObject({ + mockConfig = { isTrustedFolder: vi.fn().mockReturnValue(true), getMcpServers: vi.fn().mockReturnValue({}), getPromptRegistry: vi.fn().mockReturnValue({ registerPrompt: vi.fn() }), @@ -62,15 +62,15 @@ describe('McpClientManager', () => { isInitialized: vi.fn(), }), refreshMcpContext: vi.fn(), - } as unknown as Config); - toolRegistry = vi.mockObject({ + } as unknown as MockedObject; + toolRegistry = { registerTool: vi.fn(), unregisterTool: vi.fn(), sortTools: vi.fn(), getMessageBus: vi.fn().mockReturnValue({}), removeMcpToolsByServer: vi.fn(), getToolsByServer: vi.fn().mockReturnValue([]), - } as unknown as ToolRegistry); + } as unknown as ToolRegistry; }); afterEach(() => { diff --git a/packages/core/src/tools/mcp-client.ts b/packages/core/src/tools/mcp-client.ts index 47048526d2..695b8380eb 100644 --- a/packages/core/src/tools/mcp-client.ts +++ b/packages/core/src/tools/mcp-client.ts @@ -1148,10 +1148,12 @@ class LenientJsonSchemaValidator implements jsonSchemaValidator { try { return this.ajvValidator.getValidator(schema); } catch (error) { + let id = ''; + if (schema && typeof schema === 'object' && '$id' in schema) { + id = String(schema.$id); + } debugLogger.warn( - `Failed to compile MCP tool output schema (${ - (schema as Record)?.['$id'] ?? '' - }): ${error instanceof Error ? error.message : String(error)}. ` + + `Failed to compile MCP tool output schema (${id}): ${error instanceof Error ? error.message : String(error)}. ` + 'Skipping output validation for this tool.', ); return (input: unknown) => ({ diff --git a/packages/core/src/tools/tool-registry.ts b/packages/core/src/tools/tool-registry.ts index cee5f22a8e..742c32fd18 100644 --- a/packages/core/src/tools/tool-registry.ts +++ b/packages/core/src/tools/tool-registry.ts @@ -634,7 +634,7 @@ export class ToolRegistry { possibleNames.push(`${tool.getFullyQualifiedPrefix()}${tool.name}`); } } - return !possibleNames.some((name) => excludeTools.has(name)); + return !possibleNames.some((name) => excludeTools?.has(name)); } /** diff --git a/packages/core/src/utils/editor.ts b/packages/core/src/utils/editor.ts index 0269bd708b..0903e81990 100644 --- a/packages/core/src/utils/editor.ts +++ b/packages/core/src/utils/editor.ts @@ -251,7 +251,8 @@ export function getEditorExtraArgs( editor: EditorType, options?: { newWindow?: boolean }, ): string[] { - const args = editorExtraArgs[editor] ? [...editorExtraArgs[editor]] : []; + const extraArgs = editorExtraArgs[editor]; + const args = extraArgs ? [...extraArgs] : []; if (options?.newWindow && NEW_WINDOW_EDITORS.has(editor)) { args.push('--new-window'); } diff --git a/packages/core/src/utils/filesearch/ignore.ts b/packages/core/src/utils/filesearch/ignore.ts index bd5cd5d6e9..890b54126f 100644 --- a/packages/core/src/utils/filesearch/ignore.ts +++ b/packages/core/src/utils/filesearch/ignore.ts @@ -5,7 +5,10 @@ */ import fs from 'node:fs'; -import ignore from 'ignore'; +import ignorePkg, { type Ignore as IgnoreType } from 'ignore'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion +const ignore = ((ignorePkg as unknown as { default?: () => IgnoreType }) + .default ?? ignorePkg) as () => IgnoreType; import picomatch from 'picomatch'; import type { FileDiscoveryService } from '../../services/fileDiscoveryService.js'; diff --git a/packages/core/src/utils/gitIgnoreParser.ts b/packages/core/src/utils/gitIgnoreParser.ts index 6d5f24e93d..47687c7c39 100644 --- a/packages/core/src/utils/gitIgnoreParser.ts +++ b/packages/core/src/utils/gitIgnoreParser.ts @@ -6,7 +6,10 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import ignore, { type Ignore } from 'ignore'; +import ignorePkg, { type Ignore } from 'ignore'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion +const ignore = ((ignorePkg as unknown as { default?: () => Ignore }).default ?? + ignorePkg) as () => Ignore; import { getNormalizedRelativePath } from './ignorePathUtils.js'; export interface GitIgnoreFilter { diff --git a/packages/core/src/utils/googleQuotaErrors.ts b/packages/core/src/utils/googleQuotaErrors.ts index ac8c76d9e8..1efadb7772 100644 --- a/packages/core/src/utils/googleQuotaErrors.ts +++ b/packages/core/src/utils/googleQuotaErrors.ts @@ -177,7 +177,7 @@ function classifyValidationRequiredError( // Look for "Learn more" link - identified by description or support.google.com hostname const learnMoreLink = helpDetail.links.find((link) => { if (link.description.toLowerCase().trim() === 'learn more') return true; - const parsed = URL.parse(link.url); + const parsed = URL.canParse(link.url) ? new URL(link.url) : null; return parsed?.hostname === 'support.google.com'; }); if (learnMoreLink) { diff --git a/packages/core/src/utils/ignoreFileParser.ts b/packages/core/src/utils/ignoreFileParser.ts index ee7284bfa6..6251b5b8dd 100644 --- a/packages/core/src/utils/ignoreFileParser.ts +++ b/packages/core/src/utils/ignoreFileParser.ts @@ -6,7 +6,10 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import ignore from 'ignore'; +import ignorePkg, { type Ignore } from 'ignore'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion +const ignore = ((ignorePkg as unknown as { default?: () => Ignore }).default ?? + ignorePkg) as () => Ignore; import { debugLogger } from './debugLogger.js'; import { getNormalizedRelativePath } from './ignorePathUtils.js'; diff --git a/packages/core/src/utils/llm-edit-fixer.ts b/packages/core/src/utils/llm-edit-fixer.ts index 15bfb39e28..7d9886a508 100644 --- a/packages/core/src/utils/llm-edit-fixer.ts +++ b/packages/core/src/utils/llm-edit-fixer.ts @@ -103,10 +103,16 @@ async function generateJsonWithTimeout( ...params, // The operation will be aborted if either the original signal is aborted // or if the timeout is reached. - abortSignal: AbortSignal.any([ + /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */ + abortSignal: ( + AbortSignal as unknown as { + any: (signals: Array) => AbortSignal; + } + ).any([ params.abortSignal ?? new AbortController().signal, timeoutSignal, ]), + /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ }); // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion return result as T; diff --git a/packages/core/src/utils/schemaValidator.ts b/packages/core/src/utils/schemaValidator.ts index db5dee11ba..a2207cac85 100644 --- a/packages/core/src/utils/schemaValidator.ts +++ b/packages/core/src/utils/schemaValidator.ts @@ -8,7 +8,7 @@ import AjvPkg, { type AnySchema, type Ajv } from 'ajv'; // Ajv2020 is the documented way to use draft-2020-12: https://ajv.js.org/json-schema.html#draft-2020-12 import Ajv2020Pkg from 'ajv/dist/2020.js'; -import * as addFormats from 'ajv-formats'; +import addFormats from 'ajv-formats'; import { debugLogger } from './debugLogger.js'; // Ajv's ESM/CJS interop: use 'any' for compatibility as recommended by Ajv docs @@ -36,10 +36,11 @@ const ajvDefault: Ajv = new AjvClass(ajvOptions); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const ajv2020: Ajv = new Ajv2020Class(ajvOptions); -// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-unsafe-assignment -const addFormatsFunc = (addFormats as any).default || addFormats; -addFormatsFunc(ajvDefault); -addFormatsFunc(ajv2020); +const addFormatsFunc = addFormats.default || addFormats; +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion +addFormatsFunc(ajvDefault as any); +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion +addFormatsFunc(ajv2020 as any); // Canonical draft-2020-12 meta-schema URI (used by rmcp MCP servers) const DRAFT_2020_12_SCHEMA = 'https://json-schema.org/draft/2020-12/schema'; diff --git a/packages/devtools/package.json b/packages/devtools/package.json index 6b2958f268..0ee568d8f9 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -23,10 +23,10 @@ "node": ">=20" }, "devDependencies": { - "react": "^19.2.0", - "react-dom": "^19.2.0" + "react": "19.2.4", + "react-dom": "19.2.4" }, "dependencies": { - "ws": "^8.16.0" + "ws": "8.16.0" } } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c4f703aa36..1d12b2b69b 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -23,12 +23,12 @@ ], "dependencies": { "@google/gemini-cli-core": "file:../core", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.1" + "zod": "3.25.76", + "zod-to-json-schema": "3.25.1" }, "devDependencies": { - "typescript": "^5.3.3", - "vitest": "^3.1.1" + "typescript": "5.8.3", + "vitest": "3.2.4" }, "engines": { "node": ">=20" diff --git a/packages/sdk/src/agent.integration.test.ts b/packages/sdk/src/agent.integration.test.ts index 6ae5e687f5..93772ebce3 100644 --- a/packages/sdk/src/agent.integration.test.ts +++ b/packages/sdk/src/agent.integration.test.ts @@ -49,7 +49,7 @@ describe('GeminiCliAgent Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); // Expect pirate speak @@ -80,7 +80,7 @@ describe('GeminiCliAgent Integration', () => { } const responseText1 = events1 .filter((e) => e.type === 'content') - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); expect(responseText1).toContain('1'); @@ -93,7 +93,7 @@ describe('GeminiCliAgent Integration', () => { } const responseText2 = events2 .filter((e) => e.type === 'content') - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); expect(responseText2).toContain('2'); @@ -132,7 +132,7 @@ describe('GeminiCliAgent Integration', () => { const responseText = events2 .filter((e) => e.type === 'content') - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); expect(responseText).toContain('BANANA'); diff --git a/packages/sdk/src/skills.integration.test.ts b/packages/sdk/src/skills.integration.test.ts index 385304a97c..caf871b89e 100644 --- a/packages/sdk/src/skills.integration.test.ts +++ b/packages/sdk/src/skills.integration.test.ts @@ -50,7 +50,7 @@ describe('GeminiCliAgent Skills Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); // Expect pirate speak @@ -83,7 +83,7 @@ describe('GeminiCliAgent Skills Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); // Expect confirmation or pirate speak diff --git a/packages/sdk/src/tool.integration.test.ts b/packages/sdk/src/tool.integration.test.ts index 25257ae2df..a681470ab0 100644 --- a/packages/sdk/src/tool.integration.test.ts +++ b/packages/sdk/src/tool.integration.test.ts @@ -53,7 +53,7 @@ describe('GeminiCliAgent Tool Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); expect(responseText).toContain('8'); @@ -98,7 +98,7 @@ describe('GeminiCliAgent Tool Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); // The model should see the error "Tool failed visibly" and report it back. @@ -140,7 +140,7 @@ describe('GeminiCliAgent Tool Integration', () => { const textEvents = events.filter((e) => e.type === 'content'); const responseText = textEvents - .map((e) => (typeof e.value === 'string' ? e.value : '')) + .map((e) => ('value' in e && typeof e.value === 'string' ? e.value : '')) .join(''); // The model should report the caught standard error. diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 9abaf6fdbc..db38af950b 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -12,12 +12,12 @@ "dependencies": { "@google/gemini-cli-core": "file:../core", "@lydell/node-pty": "1.1.0", - "asciichart": "^1.5.25", - "strip-ansi": "^7.1.2", - "vitest": "^3.2.4" + "asciichart": "1.5.25", + "strip-ansi": "7.1.2", + "vitest": "3.2.4" }, "devDependencies": { - "typescript": "^5.3.3" + "typescript": "5.8.3" }, "engines": { "node": ">=20" diff --git a/packages/vscode-ide-companion/NOTICES.txt b/packages/vscode-ide-companion/NOTICES.txt index 475294d274..8550c1c979 100644 --- a/packages/vscode-ide-companion/NOTICES.txt +++ b/packages/vscode-ide-companion/NOTICES.txt @@ -1,7 +1,7 @@ This file contains third-party software notices and license terms. ============================================================ -@modelcontextprotocol/sdk@1.26.0 +@modelcontextprotocol/sdk@1.23.0 (git+https://github.com/modelcontextprotocol/typescript-sdk.git) MIT License @@ -27,33 +27,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -============================================================ -@hono/node-server@1.19.13 -(https://github.com/honojs/node-server.git) - -MIT License - -Copyright (c) 2022 - present, Yusuke Wada and Hono contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ============================================================ ajv@6.14.0 (https://github.com/ajv-validator/ajv.git) @@ -137,7 +110,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================================================ -json-schema-traverse@0.4.1 +json-schema-traverse@1.0.0 (git+https://github.com/epoberezkin/json-schema-traverse.git) MIT License @@ -417,8 +390,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ============================================================ -which@2.0.2 -(git://github.com/isaacs/node-which.git) +which@5.0.0 +(git+https://github.com/npm/node-which.git) The ISC License @@ -438,24 +411,64 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ============================================================ -isexe@2.0.0 -(git+https://github.com/isaacs/isexe.git) +isexe@3.1.5 +(No repository found) -The ISC License +# Blue Oak Model License -Copyright (c) Isaac Z. Schlueter and Contributors +Version 1.0.0 -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +## Purpose -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +This license gives everyone as much permission to work with +this software as possible, while protecting contributors +from liability. + +## Acceptance + +In order to receive this license, you must agree to its +rules. The rules of this license are both obligations +under that agreement and conditions to your license. +You must not do anything with this software that triggers +a rule that you cannot or will not follow. + +## Copyright + +Each contributor licenses you to do everything with this +software that would otherwise infringe that contributor's +copyright in it. + +## Notices + +You must ensure that everyone who gets a copy of +any part of this software from you, with or without +changes, also gets the text of this license or a link to +. + +## Excuse + +If anyone notifies you in writing that you have not +complied with [Notices](#notices), you can keep your +license by taking all practical steps to comply within 30 +days after the notice. If you do not do so, your license +ends immediately. + +## Patent + +Each contributor licenses you to do everything with this +software that would otherwise infringe any patent claims +they can license or become able to license. + +## Reliability + +No contributor can revoke this license. + +## No Liability + +***As far as the law allows, this software comes as is, +without any warranty or condition, and no contributor +will be liable to anyone for any damages related to this +software or this license, under any kind of legal claim.*** ============================================================ @@ -514,7 +527,7 @@ SOFTWARE. ============================================================ -express@5.2.1 +express@5.1.0 (No repository found) (The MIT License) @@ -2238,7 +2251,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================================================ -express-rate-limit@8.5.2 +express-rate-limit@7.5.1 (git+https://github.com/express-rate-limit/express-rate-limit.git) ο»Ώ# MIT License @@ -2263,148 +2276,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -============================================================ -ip-address@10.2.0 -(git://github.com/beaugunderson/ip-address.git) - -Copyright (C) 2011 by Beau Gunderson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -============================================================ -hono@4.12.18 -(git+https://github.com/honojs/hono.git) - -MIT License - -Copyright (c) 2021 - present, Yusuke Wada and Hono contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -============================================================ -jose@6.1.3 -(No repository found) - -The MIT License (MIT) - -Copyright (c) 2018 Filip Skokan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -============================================================ -json-schema-typed@8.0.2 -(https://github.com/RemyRylan/json-schema-typed.git) - -BSD 2-Clause License - -Original source code is copyright (c) 2019-2025 Remy Rylan - - -All JSON Schema documentation and descriptions are copyright (c): - -2009 [draft-0] IETF Trust , Kris Zyp , -and SitePen (USA) . - -2009 [draft-1] IETF Trust , Kris Zyp , -and SitePen (USA) . - -2010 [draft-2] IETF Trust , Kris Zyp , -and SitePen (USA) . - -2010 [draft-3] IETF Trust , Kris Zyp , -Gary Court , and SitePen (USA) . - -2013 [draft-4] IETF Trust ), Francis Galiegue -, Kris Zyp , Gary Court -, and SitePen (USA) . - -2018 [draft-7] IETF Trust , Austin Wright , -Henry Andrews , Geraint Luff , and -Cloudflare, Inc. . - -2019 [draft-2019-09] IETF Trust , Austin Wright -, Henry Andrews , Ben Hutton -, and Greg Dennis . - -2020 [draft-2020-12] IETF Trust , Austin Wright -, Henry Andrews , Ben Hutton -, and Greg Dennis . - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - ============================================================ pkce-challenge@5.0.0 (git+https://github.com/crouchcd/pkce-challenge.git) diff --git a/packages/vscode-ide-companion/package.json b/packages/vscode-ide-companion/package.json index 4d30977369..9fdd1f290f 100644 --- a/packages/vscode-ide-companion/package.json +++ b/packages/vscode-ide-companion/package.json @@ -123,23 +123,23 @@ "validate:notices": "node ./scripts/validate-notices.js" }, "devDependencies": { - "@types/cors": "^2.8.19", - "@types/express": "^5.0.3", + "@types/cors": "2.8.19", + "@types/express": "5.0.3", "@types/node": "20.x", - "@types/vscode": "^1.99.0", - "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.31.1", - "@vscode/vsce": "^3.6.0", - "esbuild": "^0.25.3", - "eslint": "^9.25.1", - "npm-run-all2": "^8.0.2", - "typescript": "^5.8.3", - "vitest": "^3.2.4" + "@types/vscode": "1.99.0", + "@typescript-eslint/eslint-plugin": "8.31.1", + "@typescript-eslint/parser": "8.31.1", + "@vscode/vsce": "3.6.0", + "esbuild": "0.25.3", + "eslint": "9.25.1", + "npm-run-all2": "8.0.2", + "typescript": "5.8.3", + "vitest": "3.2.4" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.23.0", - "cors": "^2.8.5", - "express": "^5.1.0", - "zod": "^3.25.76" + "@modelcontextprotocol/sdk": "1.23.0", + "cors": "2.8.5", + "express": "5.1.0", + "zod": "3.25.76" } } diff --git a/third_party/get-ripgrep/package.json b/third_party/get-ripgrep/package.json index 80e01ae7ac..421866e52d 100644 --- a/third_party/get-ripgrep/package.json +++ b/third_party/get-ripgrep/package.json @@ -22,22 +22,22 @@ "author": "Lvce Editor", "license": "MIT", "dependencies": { - "@lvce-editor/verror": "^1.6.0", - "execa": "^9.5.2", - "extract-zip": "^2.0.1", - "fs-extra": "^11.3.0", - "got": "^14.4.5", - "path-exists": "^5.0.0", - "tempy": "^3.1.0", - "xdg-basedir": "^5.1.0" + "@lvce-editor/verror": "1.6.0", + "execa": "9.5.2", + "extract-zip": "2.0.1", + "fs-extra": "11.3.0", + "got": "14.4.5", + "path-exists": "5.0.0", + "tempy": "3.1.0", + "xdg-basedir": "5.1.0" }, "devDependencies": { - "@types/fs-extra": "^11.0.4", - "@types/jest": "^29.5.14", - "@types/node": "^22.13.0", - "jest": "^29.7.0", - "prettier": "^3.4.2", - "typescript": "^5.7.3" + "@types/fs-extra": "11.0.4", + "@types/jest": "29.5.14", + "@types/node": "22.13.0", + "jest": "29.7.0", + "prettier": "3.4.2", + "typescript": "5.7.3" }, "prettier": { "semi": false,