Skip to content

feat: refine import parsing logic to avoid false positives - #1

Open
ksprashu wants to merge 6 commits into
mainfrom
fix/2967-gemini-md-import-bug
Open

feat: refine import parsing logic to avoid false positives#1
ksprashu wants to merge 6 commits into
mainfrom
fix/2967-gemini-md-import-bug

Conversation

@ksprashu

Copy link
Copy Markdown
Owner

The previous import parsing logic was too broad and would incorrectly identify strings like npm packages, python decorators, and email addresses as import paths. This change refines the logic to be more specific, requiring import paths to start with `./`, `../`, `/`, or not contain a `/` at all.

This change also adds tests to verify that the new logic correctly ignores these false positives.

Fixes google-gemini#2967

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Summary of Changes

Hello @ksprashu, 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 refines the import parsing logic within the "memoryImportProcessor" to prevent false positives. The changes ensure that strings resembling imports, such as npm package names in code blocks, Python decorators, or email addresses, are no longer incorrectly identified as import paths, thereby improving the accuracy and robustness of the import processing mechanism.

Highlights

  • Refined Import Parsing Logic: The "findImports" function in "memoryImportProcessor.ts" has been updated with more precise validation rules for identifying import paths.
  • Prevention of False Positives: The new logic specifically prevents misidentification of patterns like npm-style package names, Python decorators, and email addresses as valid import paths.
  • Enhanced Test Coverage: New test cases have been added to "memoryImportProcessor.test.ts" to explicitly verify that these non-import patterns are correctly ignored by the import processor.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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.

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

Copy link
Copy Markdown

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 refines the import parsing logic to prevent false positives from strings like npm package names, Python decorators, or email addresses. The changes to the validation logic in memoryImportProcessor.ts are effective at this, and are supported by new tests. However, I've identified a critical regression in the new logic that prevents valid imports from subdirectories (e.g., @foo/bar.md) from being recognized. I've provided a suggestion to fix this while maintaining the benefit of avoiding false positives.

Comment on lines +124 to +127
(importPath.startsWith('./') ||
importPath.startsWith('../') ||
importPath.startsWith('/') ||
!importPath.includes('/'))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

The new validation logic is a great improvement for avoiding false positives. However, it introduces a regression where valid imports for files in subdirectories without an explicit ./ prefix are no longer recognized. For example, an import like @components/button.md would be ignored because its path contains a / but doesn't start with ./, ../, or /.

To fix this while still avoiding false positives like npm packages, we can refine the logic to also allow paths that contain a slash if they appear to have a file extension (i.e., contain a . in their final path segment).

I'd also recommend adding a new test case to cover this scenario, for example with an import like @foo/bar.md.

      (importPath.startsWith('./') ||
        importPath.startsWith('../') ||
        importPath.startsWith('/') ||
        !importPath.includes('/') ||
        importPath.split('/').pop()!.includes('.'))

@github-actions

github-actions Bot commented Aug 24, 2025

Copy link
Copy Markdown

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 73.95% 73.95% 80.53% 80.23%
Core 77.19% 77.19% 77.7% 83.74%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   73.95 |    80.23 |   80.53 |   73.95 |                   
 src               |   57.92 |    81.25 |   61.53 |   57.92 |                   
  gemini.tsx       |   41.66 |    72.22 |    62.5 |   41.66 | ...66,376-378,392 
  ...ractiveCli.ts |   91.34 |    77.77 |   33.33 |   91.34 | 35-38,57-59,87-89 
  ...ActiveAuth.ts |     100 |      100 |     100 |     100 |                   
 src/commands      |   94.11 |      100 |      50 |   94.11 |                   
  mcp.ts           |   94.11 |      100 |      50 |   94.11 | 26                
 src/commands/mcp  |   95.62 |       80 |    90.9 |   95.62 |                   
  add.ts           |    97.4 |    83.33 |     100 |    97.4 | 109-112,119       
  list.ts          |   90.56 |    80.76 |      80 |   90.56 | ...10-112,137-138 
  remove.ts        |     100 |    66.66 |     100 |     100 | 19-23             
 src/config        |   92.28 |    81.57 |    87.8 |   92.28 |                   
  auth.ts          |   83.78 |    94.11 |     100 |   83.78 | 20-29             
  config.ts        |   97.45 |    88.13 |      70 |   97.45 | ...55,435,600-604 
  extension.ts     |   82.67 |    84.37 |     100 |   82.67 | ...03-107,116-117 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  sandboxConfig.ts |   51.35 |    16.66 |   66.66 |   51.35 | ...43,53-69,74-91 
  settings.ts      |   86.02 |    79.59 |   93.75 |   86.02 | ...57-458,542-543 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   90.67 |    76.92 |     100 |   90.67 | ...20,125-130,148 
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/services      |    70.5 |    86.66 |   77.77 |    70.5 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   92.22 |     92.1 |     100 |   92.22 | 171-176,250-257   
  ...omptLoader.ts |   34.37 |    72.72 |      50 |   34.37 | ...43-244,247-251 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.56 |    94.11 |     100 |   97.56 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.36 |    93.61 |     100 |   97.36 | 77-78,202-203     
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   91.22 |    83.33 |      80 |   91.22 |                   
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 31-34,36-38,44-46 
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   58.68 |     72.6 |   63.15 |   58.68 |                   
  App.tsx          |   57.33 |     62.5 |   38.46 |   57.33 | ...1207,1233-1262 
  ...tionNudge.tsx |    8.33 |      100 |       0 |    8.33 | 26-98             
  colors.ts        |   79.59 |      100 |   66.66 |   79.59 | ...43,45-46,48-49 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   95.65 |    95.65 |     100 |   95.65 | 29-30             
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/commands   |   85.83 |    82.15 |   89.47 |   85.83 |                   
  aboutCommand.ts  |     100 |    71.42 |     100 |     100 | 23-29,35          
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  bugCommand.ts    |   79.72 |     37.5 |     100 |   79.72 | 33-36,43,81-90    
  chatCommand.ts   |   94.23 |    83.33 |     100 |   94.23 | ...10-211,213-214 
  clearCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...essCommand.ts |     100 |    88.88 |     100 |     100 | 69                
  copyCommand.ts   |     100 |      100 |     100 |     100 |                   
  corgiCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...ryCommand.tsx |   70.12 |    73.07 |     100 |   70.12 | ...22-123,158-166 
  docsCommand.ts   |     100 |      100 |     100 |     100 |                   
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |    62.6 |    66.66 |      60 |    62.6 | ...38-248,256-266 
  initCommand.ts   |     100 |      100 |     100 |     100 |                   
  mcpCommand.ts    |   82.29 |    82.95 |   83.33 |   82.29 | ...83-384,437-444 
  memoryCommand.ts |   99.09 |    92.85 |     100 |   99.09 | 93                
  ...acyCommand.ts |     100 |      100 |     100 |     100 |                   
  quitCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...oreCommand.ts |      92 |    87.09 |     100 |      92 | ...,82-87,128-129 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   83.55 |    66.66 |     100 |   83.55 | ...56-159,162-165 
  statsCommand.ts  |   84.48 |       75 |     100 |   84.48 | 24-32             
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  vimCommand.ts    |   44.44 |      100 |       0 |   44.44 | 14-24             
 src/ui/components |   66.22 |    79.38 |    70.9 |   66.22 |                   
  AboutBox.tsx     |     100 |       50 |     100 |     100 | 108               
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  AuthDialog.tsx   |   90.34 |    96.42 |      75 |   90.34 | 74-79,108-115     
  ...nProgress.tsx |   16.66 |      100 |       0 |   16.66 | 18-62             
  ...Indicator.tsx |   15.15 |      100 |       0 |   15.15 | 17-47             
  ...ryDisplay.tsx |   89.47 |    33.33 |     100 |   89.47 | 20-21             
  ...ryDisplay.tsx |   92.04 |    94.44 |     100 |   92.04 | 79-84,89          
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...gProfiler.tsx |      24 |      100 |       0 |      24 | 13-36             
  ...esDisplay.tsx |   10.52 |      100 |       0 |   10.52 | 24-82             
  ...ngsDialog.tsx |    7.29 |      100 |       0 |    7.29 | 27-172            
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   84.82 |    82.35 |     100 |   84.82 | ...,89-91,136-143 
  ...ngSpinner.tsx |   86.66 |       75 |     100 |   86.66 | 31-32             
  Header.tsx       |   87.23 |    57.14 |     100 |   87.23 | 36-39,55,64       
  Help.tsx         |    3.27 |      100 |       0 |    3.27 | 17-173            
  ...emDisplay.tsx |   70.83 |    56.25 |     100 |   70.83 | ...59-64,86-93,96 
  InputPrompt.tsx  |   77.82 |    74.85 |     100 |   77.82 | ...75-777,785-796 
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...geDisplay.tsx |   25.92 |      100 |       0 |   25.92 | 14-36             
  ...tsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  PrepareLabel.tsx |      60 |       80 |     100 |      60 | 35-48             
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngsDialog.tsx |   56.41 |       70 |      75 |   56.41 | ...94,701,707-708 
  ...ionDialog.tsx |    85.5 |      100 |   33.33 |    85.5 | 37-40,45-52       
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      60 |       25 |     100 |      60 | 24-27,33-40       
  StatsDisplay.tsx |    98.5 |    93.33 |     100 |    98.5 | 179-181           
  ...nsDisplay.tsx |   84.44 |    68.42 |     100 |   84.44 | ...07-111,121-123 
  ThemeDialog.tsx  |    5.33 |      100 |       0 |    5.33 | 34-310            
  Tips.tsx         |      16 |      100 |       0 |      16 | 17-45             
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 30-31             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
 ...nents/messages |   64.03 |    82.17 |   57.14 |   64.03 |                   
  ...onMessage.tsx |   20.68 |      100 |       0 |   20.68 | 23-51             
  DiffRenderer.tsx |   96.42 |    83.14 |     100 |   96.42 | ...18-219,223,285 
  ErrorMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...niMessage.tsx |   18.75 |      100 |       0 |   18.75 | 21-49             
  ...geContent.tsx |   19.04 |      100 |       0 |   19.04 | 25-43             
  InfoMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...onMessage.tsx |   37.55 |     62.5 |      20 |   37.55 | ...65-200,244-272 
  ...upMessage.tsx |   10.11 |      100 |       0 |   10.11 | 27-126            
  ToolMessage.tsx  |   87.76 |       80 |     100 |   87.76 | ...,91-95,169-171 
  UserMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...llMessage.tsx |   36.36 |      100 |       0 |   36.36 | 17-25             
 ...ponents/shared |    80.9 |     76.2 |   95.34 |    80.9 |                   
  MaxSizedBox.tsx  |   81.14 |     82.2 |   88.88 |   81.14 | ...08-509,614-615 
  ...tonSelect.tsx |   86.18 |    66.66 |     100 |   86.18 | ...52,155-156,226 
  text-buffer.ts   |   77.79 |    77.97 |   96.66 |   77.79 | ...1799,1826,1876 
  ...er-actions.ts |   86.71 |    67.79 |     100 |   86.71 | ...08-609,810-812 
 src/ui/contexts   |   83.12 |    84.37 |     100 |   83.12 |                   
  ...ssContext.tsx |   81.11 |    86.73 |     100 |   81.11 | ...19-324,418-420 
  ...owContext.tsx |   91.07 |    81.81 |     100 |   91.07 | 46-47,59-61       
  ...onContext.tsx |    94.2 |      100 |     100 |    94.2 | 106-109           
  ...gsContext.tsx |   83.33 |       50 |     100 |   83.33 | 17-18             
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...deContext.tsx |   76.08 |       50 |     100 |   76.08 | 46-47,51-58,76-77 
 src/ui/editors    |   93.18 |    85.71 |   66.66 |   93.18 |                   
  ...ngsManager.ts |   93.18 |    85.71 |   66.66 |   93.18 | 48,62-63          
 src/ui/hooks      |   80.13 |    81.19 |   88.73 |   80.13 |                   
  ...dProcessor.ts |   78.76 |    80.19 |     100 |   78.76 | ...51-454,465-483 
  ...dProcessor.ts |   96.32 |    76.31 |     100 |   96.32 | ...13-214,219-220 
  ...dProcessor.ts |   81.68 |    71.59 |   71.42 |   81.68 | ...89-393,459-487 
  ...Completion.ts |   92.77 |    89.47 |     100 |   92.77 | ...91-192,225-228 
  ...uthCommand.ts |    7.46 |      100 |       0 |    7.46 | 18-92             
  ...tIndicator.ts |     100 |      100 |     100 |     100 |                   
  ...ketedPaste.ts |     100 |      100 |     100 |     100 |                   
  ...ompletion.tsx |   90.61 |    70.73 |     100 |   90.61 | ...26-227,229-230 
  useCompletion.ts |    92.4 |     87.5 |     100 |    92.4 | ...,95-96,100-101 
  ...leMessages.ts |   98.68 |       95 |     100 |   98.68 | 55                
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |      100 |     100 |     100 |                   
  ...miniStream.ts |   73.74 |    71.53 |     100 |   73.74 | ...27-828,858-960 
  ...BranchName.ts |   91.66 |    84.61 |     100 |   91.66 | 57-63             
  ...oryManager.ts |   98.41 |    93.33 |     100 |   98.41 | 43                
  ...putHistory.ts |    92.5 |    85.71 |     100 |    92.5 | 62-63,71,93-95    
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |     100 |      100 |     100 |     100 |                   
  ...gIndicator.ts |     100 |      100 |     100 |     100 |                   
  useLogger.ts     |      25 |      100 |       0 |      25 | 14-32             
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...raseCycler.ts |   95.45 |       75 |     100 |   95.45 | ...64-165,183-185 
  ...cySettings.ts |   85.08 |       75 |     100 |   85.08 | ...15-116,127-138 
  ...Completion.ts |    34.4 |    43.75 |     100 |    34.4 | ...25-226,235-241 
  ...lScheduler.ts |   78.82 |    94.44 |     100 |   78.82 | ...00-203,289-299 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...ompletion.tsx |     100 |     92.3 |     100 |     100 | 78                
  ...ngsCommand.ts |    87.5 |      100 |     100 |    87.5 | 13,17             
  ...ellHistory.ts |   91.66 |       80 |     100 |   91.66 | ...69,117-118,128 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-75              
  ...Completion.ts |      94 |    92.53 |     100 |      94 | 58-61,69-72,93    
  ...tateAndRef.ts |   13.63 |      100 |       0 |   13.63 | 16-36             
  ...rminalSize.ts |   18.18 |      100 |       0 |   18.18 | 12-32             
  ...emeCommand.ts |   46.98 |       75 |     100 |   46.98 | ...4,70-71,77-100 
  useTimer.ts      |   88.09 |    85.71 |     100 |   88.09 | 44-45,51-53       
  vim.ts           |   83.57 |     79.5 |     100 |   83.57 | ...38,742-750,759 
 src/ui/privacy    |   14.52 |      100 |       0 |   14.52 |                   
  ...acyNotice.tsx |   10.38 |      100 |       0 |   10.38 | 21-117            
  ...acyNotice.tsx |   14.28 |      100 |       0 |   14.28 | 16-59             
  ...acyNotice.tsx |   12.19 |      100 |       0 |   12.19 | 16-62             
  ...acyNotice.tsx |   30.76 |      100 |       0 |   30.76 | 19-36,39-41       
 src/ui/themes     |   98.92 |    66.39 |     100 |   98.92 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |     100 |      100 |     100 |     100 |                   
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |    86.6 |    76.27 |     100 |    86.6 | ...91-297,302-303 
  theme.ts         |     100 |     41.3 |     100 |     100 | 225-240           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   65.71 |    79.04 |   82.25 |   65.71 |                   
  ...Colorizer.tsx |   79.31 |    80.64 |     100 |   79.31 | ...51-154,190-216 
  ...olePatcher.ts |      96 |       75 |     100 |      96 | 59-60             
  ...nRenderer.tsx |   52.85 |    27.27 |     100 |   52.85 | ...26-132,142-144 
  ...wnDisplay.tsx |   85.88 |    87.69 |     100 |   85.88 | ...73-281,314-337 
  ...eRenderer.tsx |   78.09 |    76.19 |     100 |   78.09 | 55-83             
  ...boardUtils.ts |   32.25 |     37.5 |     100 |   32.25 | ...55-114,129-145 
  commandUtils.ts  |      92 |    86.11 |     100 |      92 | ...-95,99,101-102 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   90.47 |    95.83 |     100 |   90.47 | 57-60             
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |   13.88 |      100 |      50 |   13.88 | 16-97             
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |       4 |      100 |       0 |       4 | 40-342            
  textUtils.ts     |   94.11 |    82.35 |     100 |   94.11 | 17-18             
  updateCheck.ts   |     100 |    80.95 |     100 |     100 | 26-38             
 src/utils         |      48 |    91.77 |   85.48 |      48 |                   
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   65.38 |      100 |   66.66 |   65.38 | 28-37             
  ...ScopeUtils.ts |   97.67 |     87.5 |     100 |   97.67 | 62                
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |   94.66 |    82.35 |     100 |   94.66 | 75-78             
  ...AutoUpdate.ts |   81.14 |    95.83 |   66.66 |   81.14 | 85-99,125-132     
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  license.ts       |     100 |      100 |     100 |     100 |                   
  package.ts       |   88.88 |       80 |     100 |   88.88 | 33-34             
  readStdin.ts     |   79.24 |       90 |      80 |   79.24 | 31-38,50-52       
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |       0 |        0 |       0 |       0 | 1-953             
  settingsUtils.ts |   83.49 |    92.13 |   96.66 |   83.49 | ...74-416,455-456 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |   23.07 |      100 |       0 |   23.07 | 14-40             
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  version.ts       |     100 |       50 |     100 |     100 | 11                
 ...ed-integration |   25.31 |        0 |       0 |   25.31 |                   
  acp.ts           |    3.29 |        0 |       0 |    3.29 | ...53-289,292-339 
  ...temService.ts |   19.35 |      100 |       0 |   19.35 | 15-19,22-34,37-46 
  schema.ts        |     100 |      100 |     100 |     100 |                   
  ...ntegration.ts |    3.19 |        0 |       0 |    3.19 | ...07-849,864-914 
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   77.19 |    83.74 |    77.7 |   77.19 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |     100 |      100 |     100 |     100 |                   
  promises.ts      |     100 |      100 |     100 |     100 |                   
 src/code_assist   |   71.67 |    76.19 |   78.57 |   71.67 |                   
  codeAssist.ts    |   17.85 |      100 |       0 |   17.85 | 13-36             
  converter.ts     |   94.93 |    93.02 |     100 |   94.93 | ...83,197,214-215 
  oauth2.ts        |   77.94 |    65.45 |   91.66 |   77.94 | ...18-424,429-430 
  server.ts        |   50.29 |       80 |   53.84 |   50.29 | ...73-214,217-220 
  setup.ts         |   64.49 |    69.44 |      80 |   64.49 | ...17-218,229-235 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   75.84 |    88.28 |   50.89 |   75.84 |                   
  config.ts        |   74.46 |    87.09 |   44.94 |   74.46 | ...13,819-820,831 
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   83.52 |    94.44 |   73.91 |   83.52 | ...08-109,112-113 
 src/core          |   79.88 |    83.23 |   76.47 |   79.88 |                   
  client.ts        |   81.68 |    80.98 |   77.77 |   81.68 | ...05,907-908,911 
  ...tGenerator.ts |   92.92 |       80 |     100 |   92.92 | 85-86,138,158-161 
  ...lScheduler.ts |   81.53 |    81.67 |    87.5 |   81.53 | ...59,894,974-978 
  geminiChat.ts    |   74.83 |     81.6 |   63.33 |   74.83 | ...69-670,673-674 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   82.94 |    81.81 |     100 |   82.94 | ...44-348,388-399 
  ...tGenerator.ts |   16.78 |      100 |      20 |   16.78 | ...47-178,181-182 
  ...olExecutor.ts |     100 |      100 |      50 |     100 |                   
  prompts.ts       |   95.76 |    96.96 |      50 |   95.76 | 37-38,304-361     
  subagent.ts      |   92.73 |    85.89 |     100 |   92.73 | ...91-599,642-643 
  tokenLimits.ts   |   14.28 |      100 |       0 |   14.28 | 15-32             
  turn.ts          |   85.71 |    88.23 |     100 |   85.71 | ...59-260,273-274 
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/ide           |   55.41 |     79.2 |   66.66 |   55.41 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |   49.35 |      100 |      50 |   49.35 | 23-62             
  ide-client.ts    |   59.58 |    73.07 |   64.28 |   59.58 | ...88-496,521-529 
  ide-installer.ts |   55.76 |    53.33 |     100 |   55.76 | ...91,113-125,134 
  ideContext.ts    |   83.65 |      100 |     100 |   83.65 | 74-90             
  process-utils.ts |     7.6 |      100 |       0 |     7.6 | 22-157            
 src/mcp           |   73.91 |    66.87 |   81.08 |   73.91 |                   
  ...h-provider.ts |   86.36 |      100 |   33.33 |   86.36 | ...85,89,93,97-98 
  ...h-provider.ts |   74.19 |    51.64 |     100 |   74.19 | ...04-808,815-817 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  oauth-utils.ts   |   54.72 |    69.23 |      90 |   54.72 | ...16-240,265-314 
 src/mocks         |     100 |      100 |     100 |     100 |                   
  msw.ts           |     100 |      100 |     100 |     100 |                   
 src/prompts       |   26.41 |      100 |      25 |   26.41 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |   28.57 |      100 |   28.57 |   28.57 | ...42,48-55,68-73 
 src/services      |   88.43 |    86.63 |   91.52 |   88.43 |                   
  ...ingService.ts |   76.73 |     61.9 |     100 |   76.73 | ...06-408,435-437 
  ...eryService.ts |   93.33 |    88.46 |   85.71 |   93.33 | 31,39,84,109-110  
  ...temService.ts |     100 |      100 |     100 |     100 |                   
  gitService.ts    |      70 |    93.33 |      60 |      70 | ...14-124,127-131 
  ...ionService.ts |   99.25 |    97.14 |     100 |   99.25 | 295-296           
  ...ionService.ts |   92.19 |    88.15 |     100 |   92.19 | ...67-368,444-458 
 src/telemetry     |   66.86 |    80.72 |   68.75 |   66.86 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   26.47 |      100 |       0 |   26.47 | ...80,83-84,87-88 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-63              
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-125             
  loggers.ts       |   66.14 |       75 |    64.7 |   66.14 | ...92-410,438-453 
  metrics.ts       |   64.86 |    93.54 |      50 |   64.86 | ...73-275,281-283 
  sdk.ts           |   78.37 |    44.44 |     100 |   78.37 | ...83,188-189,191 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |   76.68 |    79.16 |   80.76 |   76.68 | ...79-388,391-402 
  uiTelemetry.ts   |    99.3 |    95.83 |     100 |    99.3 | 126               
 ...learcut-logger |   71.23 |    76.05 |   68.96 |   71.23 |                   
  ...cut-logger.ts |   68.26 |    75.71 |   68.96 |   68.26 | ...55-856,859-862 
  ...tadata-key.ts |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   91.87 |    91.66 |   81.81 |   91.87 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
  tools.ts         |   89.25 |       90 |      80 |   89.25 | ...59,127,131-132 
 src/tools         |   73.53 |    82.49 |   80.85 |   73.53 |                   
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  edit.ts          |    82.6 |    87.35 |   85.71 |    82.6 | ...50-451,541-584 
  glob.ts          |    91.6 |    82.69 |    87.5 |    91.6 | ...31-232,323-324 
  grep.ts          |   59.25 |    82.14 |      80 |   59.25 | ...09-613,623-624 
  ls.ts            |   97.37 |    91.66 |     100 |   97.37 | 144-149           
  ...nt-manager.ts |   79.74 |    83.33 |      80 |   79.74 | ...98-105,113-114 
  mcp-client.ts    |   31.05 |    78.26 |      50 |   31.05 | ...1353,1357-1360 
  mcp-tool.ts      |    94.9 |    92.85 |   94.11 |    94.9 | 197-207,269-270   
  memoryTool.ts    |   84.56 |    83.67 |   88.88 |   84.56 | ...29-244,386-404 
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 94,101            
  read-file.ts     |   98.66 |    96.96 |    87.5 |   98.66 | 69-70             
  ...many-files.ts |   79.95 |    78.37 |   85.71 |   79.95 | ...88-489,496-497 
  ripGrep.ts       |    89.6 |    86.02 |    92.3 |    89.6 | ...39-440,461-462 
  shell.ts         |    84.9 |    76.38 |    90.9 |    84.9 | ...80-381,392-393 
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   70.62 |    66.03 |   73.07 |   70.62 | ...07-409,432-440 
  tools.ts         |   85.78 |     87.8 |   73.33 |   85.78 | ...53-354,370-376 
  web-fetch.ts     |   60.38 |    54.05 |    90.9 |   60.38 | ...40-341,348-349 
  web-search.ts    |     100 |     93.1 |     100 |     100 | 109-110           
  write-file.ts    |   82.82 |    79.68 |      75 |   82.82 | ...57-460,472-508 
 src/utils         |   86.48 |    87.81 |   91.89 |   86.48 |                   
  LruCache.ts      |   70.96 |     62.5 |     100 |   70.96 | 20-22,28,30-34    
  bfsFileSearch.ts |   89.02 |    90.47 |     100 |   89.02 | 86-94             
  browser.ts       |    7.69 |      100 |       0 |    7.69 | 17-56             
  editCorrector.ts |    77.3 |    61.11 |   91.66 |    77.3 | ...65-677,711,725 
  editor.ts        |   97.63 |    94.54 |     100 |   97.63 | 154,224,227-228   
  ...entContext.ts |     100 |      100 |     100 |     100 |                   
  errorParsing.ts  |     100 |     92.3 |     100 |     100 | 76,80,86          
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   39.02 |       60 |      75 |   39.02 | 21-25,41-57,61-67 
  fetch.ts         |   34.04 |      100 |       0 |   34.04 | 22-27,31-57       
  fileUtils.ts     |   94.65 |    89.87 |     100 |   94.65 | ...08-113,322-328 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...eUtilities.ts |   96.03 |    95.83 |     100 |   96.03 | 28-29,57-58       
  ...rStructure.ts |   95.96 |    94.93 |     100 |   95.96 | ...14-117,345-347 
  getPty.ts        |    12.5 |      100 |       0 |    12.5 | 21-34             
  ...noreParser.ts |     100 |    89.47 |     100 |     100 | 27,47             
  gitUtils.ts      |   51.21 |     90.9 |      50 |   51.21 | 40-41,50-73       
  ...rePatterns.ts |     100 |    96.55 |     100 |     100 | 248               
  ...ionManager.ts |     100 |       90 |     100 |     100 | 23                
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...yDiscovery.ts |   85.48 |       75 |   77.77 |   85.48 | ...81-382,385-386 
  ...tProcessor.ts |   94.96 |    91.46 |   91.66 |   94.96 | ...99-305,382-383 
  ...Inspectors.ts |     100 |      100 |     100 |     100 |                   
  ...kerChecker.ts |   83.33 |    83.33 |     100 |   83.33 | 64-65,75-80,88-94 
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  paths.ts         |   86.13 |    87.87 |     100 |   86.13 | ...,89-90,101-102 
  ...rDetection.ts |    64.4 |    76.19 |     100 |    64.4 | ...4,88-89,99-100 
  retry.ts         |   62.55 |    73.21 |     100 |   62.55 | ...58-278,323-338 
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...aValidator.ts |    82.6 |       50 |     100 |    82.6 | 27-28,30-31       
  ...r-launcher.ts |   76.52 |     87.5 |   66.66 |   76.52 | ...33,135,153-191 
  session.ts       |     100 |      100 |     100 |     100 |                   
  shell-utils.ts   |   95.94 |     94.4 |     100 |   95.94 | ...90-191,238-240 
  summarizer.ts    |     100 |    88.88 |     100 |     100 | 91                
  ...emEncoding.ts |      98 |    94.11 |     100 |      98 | 106-107           
  testUtils.ts     |   84.44 |    72.72 |   83.33 |   84.44 | 27-28,34-35,70-72 
  textUtils.ts     |    12.5 |      100 |       0 |    12.5 | 15-34             
  ...untManager.ts |   97.14 |    94.44 |     100 |   97.14 | 36-38             
  ...aceContext.ts |   96.82 |    95.12 |    92.3 |   96.82 | 94-95,109-110     
 ...ils/filesearch |   96.11 |    91.26 |     100 |   96.11 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |   96.22 |     92.3 |     100 |   96.22 | 66-67             
  fileSearch.ts    |   92.98 |    86.76 |     100 |   92.98 | ...19-220,222-223 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |     92.3 |     100 |     100 | 46                
-------------------|---------|----------|---------|---------|-------------------

For detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run.

ksprashu and others added 5 commits August 24, 2025 21:58
This commit addresses a regression where valid imports for files in subdirectories without an explicit ./ prefix were not recognized (e.g., @components/button.md).

The logic is refined to allow paths that contain a slash if they also include a file extension in their final path segment. This fixes the regression while still avoiding false positives from things like npm package scopes.

This change is based on a code review suggestion from Gemini Code Assist.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This change prevents decorators (e.g., `@my-decorator`) from being incorrectly identified as file imports during memory processing.

- Updated the import detection logic to correctly differentiate between decorators and valid import paths.

- Added a new test case to ensure that decorators are ignored and do not trigger file read operations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Import processor regex matches code inside markdown code blocks

1 participant