Skip to content

Refactor atCommandProcessor#18461

Merged
scidomino merged 1 commit intomainfrom
tomm_handle_at
Feb 6, 2026
Merged

Refactor atCommandProcessor#18461
scidomino merged 1 commit intomainfrom
tomm_handle_at

Conversation

@scidomino
Copy link
Copy Markdown
Collaborator

@scidomino scidomino commented Feb 6, 2026

Summary

Refactor atCommandProcessor into modular components.

Details

The only change is that we no longer debug log lone "@" symbols.

Related Issues

For #17135

How to Validate

Try @-including agents, mcp resources and files.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

@scidomino scidomino changed the title refactor atCommandProcessor Refactor atCommandProcessor Feb 6, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @scidomino, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on a substantial refactoring of the atCommandProcessor module. The aim is to enhance the maintainability and clarity of the code responsible for interpreting and processing user queries containing @ commands. By breaking down a large function into specialized sub-functions, the changes make the command processing flow easier to understand, debug, and extend, without altering the external behavior or functionality of the feature.

Highlights

  • Code Refactoring: The core handleAtCommand function has been significantly refactored into several smaller, more focused helper functions to improve modularity and readability. This includes new functions for categorizing @ commands, resolving file paths, constructing the initial query, and reading different types of content (MCP resources and local files).
  • Improved Logic Separation: The logic for identifying agents, resources, and files from @ commands is now encapsulated in categorizeAtCommands. File path resolution, including globbing and ignore rules, is handled by resolveFilePaths. Content reading for MCP resources and local files is delegated to readMcpResources and readLocalFiles respectively.
  • Centralized Error and Debug Reporting: Error handling and the display of tool calls have been centralized within the refactored structure. A new reportIgnoredFiles function has been added to specifically handle and log information about files that were ignored during processing.
  • Test Adjustments: Corresponding test cases in atCommandProcessor.test.ts have been updated, specifically removing assertions for a debug message related to 'Lone @ detected', reflecting changes in how these scenarios are handled or logged.
Changelog
  • packages/cli/src/ui/hooks/atCommandProcessor.test.ts
    • Removed assertions for 'Lone @ detected' debug messages, aligning tests with the refactored debug message handling.
  • packages/cli/src/ui/hooks/atCommandProcessor.ts
    • Decoupled handleAtCommand into categorizeAtCommands, resolveFilePaths, constructInitialQuery, readMcpResources, readLocalFiles, and reportIgnoredFiles.
    • Introduced categorizeAtCommands to classify @ commands into agent, resource, or file types.
    • Created resolveFilePaths to manage file path resolution, glob pattern matching, and file ignore rules.
    • Implemented constructInitialQuery to dynamically build the query string based on resolved @ commands.
    • Extracted readMcpResources to handle the retrieval of content from MCP resources.
    • Extracted readLocalFiles to manage reading content from local files using the ReadManyFilesTool.
    • Added reportIgnoredFiles to provide structured logging for ignored files.
    • Updated error handling and tool call display logic for better consistency and reporting.
    • Refactored convertResourceContentsToParts to use flatMap for a more concise implementation.
    • Removed the DiscoveredMCPResource import as it is no longer directly used in the main function.
Activity
  • The pull request description contains boilerplate text and does not provide specific details about the changes or any prior activity. Based on the title, the author scidomino is initiating a refactoring effort.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 6, 2026

Size Change: -634 B (0%)

Total Size: 23.8 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 23.8 MB -634 B (0%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-closed.sb 3.29 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B

compressed-size-action

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the atCommandProcessor by breaking down the monolithic handleAtCommand function into smaller, more modular helper functions and introducing new data structures like ResolvedFile and IgnoredFile, which enhances readability and testability. It also includes performance improvements through parallel processing. However, the refactor preserves and introduces a prompt injection vulnerability within atCommandProcessor where untrusted filenames from the workspace are directly concatenated into the LLM prompt without proper sanitization. This critical issue could allow a malicious repository to compromise the LLM session by injecting instructions that bypass system boundaries or trick the model into performing unauthorized actions.

Comment thread packages/cli/src/ui/hooks/atCommandProcessor.ts
@scidomino scidomino marked this pull request as ready for review February 6, 2026 19:40
@scidomino scidomino requested a review from a team as a code owner February 6, 2026 19:40
@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label Feb 6, 2026
@scidomino scidomino added this pull request to the merge queue Feb 6, 2026
Merged via the queue into main with commit e844d4f Feb 6, 2026
30 checks passed
@scidomino scidomino deleted the tomm_handle_at branch February 6, 2026 21:02
aswinashok44 pushed a commit to aswinashok44/gemini-cli that referenced this pull request Feb 9, 2026
kuishou68 pushed a commit to iOfficeAI/aioncli that referenced this pull request Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status/need-issue Pull requests that need to have an associated issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants