mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-17 03:57:27 +00:00
refactor: share visible file context collection
This commit is contained in:
parent
920827bc11
commit
7628681ed6
2 changed files with 12 additions and 35 deletions
|
|
@ -38,7 +38,6 @@ import ee.carlrobert.codegpt.mcp.McpSessionManager;
|
|||
import ee.carlrobert.codegpt.mcp.McpTool;
|
||||
import ee.carlrobert.codegpt.psistructure.PsiStructureProvider;
|
||||
import ee.carlrobert.codegpt.psistructure.models.ClassStructure;
|
||||
import ee.carlrobert.codegpt.settings.ProxyAISettingsService;
|
||||
import ee.carlrobert.codegpt.settings.service.FeatureType;
|
||||
import ee.carlrobert.codegpt.telemetry.TelemetryAction;
|
||||
import ee.carlrobert.codegpt.toolwindow.ToolWindowInitialState;
|
||||
|
|
@ -68,10 +67,8 @@ import java.awt.BorderLayout;
|
|||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
|
@ -310,30 +307,6 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
return ToolApprovalMode.REQUIRE_APPROVAL;
|
||||
}
|
||||
|
||||
private List<VirtualFile> collectVisibleFiles(
|
||||
List<VirtualFile> inputFiles,
|
||||
ProxyAISettingsService settingsService) {
|
||||
var visibleFiles = new LinkedHashSet<VirtualFile>();
|
||||
inputFiles.forEach(file -> appendVisibleFiles(file, settingsService, visibleFiles));
|
||||
return visibleFiles.stream().toList();
|
||||
}
|
||||
|
||||
private void appendVisibleFiles(
|
||||
VirtualFile file,
|
||||
ProxyAISettingsService settingsService,
|
||||
LinkedHashSet<VirtualFile> output) {
|
||||
if (!file.isValid() || !settingsService.isVirtualFileVisible(file)) {
|
||||
return;
|
||||
}
|
||||
if (!file.isDirectory()) {
|
||||
output.add(file);
|
||||
return;
|
||||
}
|
||||
|
||||
Arrays.stream(file.getChildren())
|
||||
.forEach(child -> appendVisibleFiles(child, settingsService, output));
|
||||
}
|
||||
|
||||
private void initializeConversationAttachedFiles() {
|
||||
restoreConversationAttachedFiles();
|
||||
|
||||
|
|
@ -458,8 +431,7 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
}
|
||||
|
||||
public void includeFiles(List<VirtualFile> referencedFiles) {
|
||||
var settingsService = project.getService(ProxyAISettingsService.class);
|
||||
var visibleReferencedFiles = collectVisibleFiles(referencedFiles, settingsService);
|
||||
var visibleReferencedFiles = ChatContextSupport.collectVisibleFiles(project, referencedFiles);
|
||||
|
||||
userInputPanel.includeFiles(new ArrayList<>(visibleReferencedFiles));
|
||||
ReadAction.nonBlocking(() -> {
|
||||
|
|
|
|||
|
|
@ -34,13 +34,18 @@ object ChatContextSupport {
|
|||
|
||||
@JvmStatic
|
||||
fun getReferencedFiles(project: Project, tags: List<TagDetails>): List<ReferencedFile> {
|
||||
val settingsService = project.getService(ProxyAISettingsService::class.java)
|
||||
val visibleFiles = collectVisibleFiles(
|
||||
tags.mapNotNull(::getVirtualFile),
|
||||
settingsService
|
||||
)
|
||||
return getReferencedVirtualFiles(project, tags).map(ReferencedFile::from)
|
||||
}
|
||||
|
||||
return visibleFiles.map(ReferencedFile::from)
|
||||
@JvmStatic
|
||||
fun getReferencedVirtualFiles(project: Project, tags: List<TagDetails>): List<VirtualFile> {
|
||||
return collectVisibleFiles(project, tags.mapNotNull(::getVirtualFile))
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun collectVisibleFiles(project: Project, inputFiles: List<VirtualFile>): List<VirtualFile> {
|
||||
val settingsService = project.getService(ProxyAISettingsService::class.java)
|
||||
return collectVisibleFiles(inputFiles, settingsService)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue