summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/ui/hooks/useAtCompletion.test.ts38
-rw-r--r--packages/cli/src/ui/hooks/useAtCompletion.ts3
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;