diff options
Diffstat (limited to 'packages/cli/src')
| -rw-r--r-- | packages/cli/src/ui/hooks/useAtCompletion.test.ts | 38 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useAtCompletion.ts | 3 |
2 files changed, 41 insertions, 0 deletions
diff --git a/packages/cli/src/ui/hooks/useAtCompletion.test.ts b/packages/cli/src/ui/hooks/useAtCompletion.test.ts index 58602d99..43289992 100644 --- a/packages/cli/src/ui/hooks/useAtCompletion.test.ts +++ b/packages/cli/src/ui/hooks/useAtCompletion.test.ts @@ -50,6 +50,7 @@ describe('useAtCompletion', () => { respectGitIgnore: true, respectGeminiIgnore: true, })), + getEnableRecursiveFileSearch: () => true, } as unknown as Config; vi.clearAllMocks(); }); @@ -431,5 +432,42 @@ describe('useAtCompletion', () => { await cleanupTmpDir(rootDir1); await cleanupTmpDir(rootDir2); }); + + it('should perform a non-recursive search when enableRecursiveFileSearch is false', async () => { + const structure: FileSystemStructure = { + 'file.txt': '', + src: { + 'index.js': '', + }, + }; + testRootDir = await createTmpDir(structure); + + const nonRecursiveConfig = { + getEnableRecursiveFileSearch: () => false, + getFileFilteringOptions: vi.fn(() => ({ + respectGitIgnore: true, + respectGeminiIgnore: true, + })), + } as unknown as Config; + + const { result } = renderHook(() => + useTestHarnessForAtCompletion( + true, + '', + nonRecursiveConfig, + testRootDir, + ), + ); + + await waitFor(() => { + expect(result.current.suggestions.length).toBeGreaterThan(0); + }); + + // Should only contain top-level items + expect(result.current.suggestions.map((s) => s.value)).toEqual([ + 'src/', + 'file.txt', + ]); + }); }); }); diff --git a/packages/cli/src/ui/hooks/useAtCompletion.ts b/packages/cli/src/ui/hooks/useAtCompletion.ts index e63a707f..82439c14 100644 --- a/packages/cli/src/ui/hooks/useAtCompletion.ts +++ b/packages/cli/src/ui/hooks/useAtCompletion.ts @@ -165,6 +165,9 @@ export function useAtCompletion(props: UseAtCompletionProps): void { config?.getFileFilteringOptions()?.respectGeminiIgnore ?? true, cache: true, cacheTtl: 30, // 30 seconds + maxDepth: !(config?.getEnableRecursiveFileSearch() ?? true) + ? 0 + : undefined, }); await searcher.initialize(); fileSearch.current = searcher; |
