summaryrefslogtreecommitdiff
path: root/continuedev/src
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-07-31 00:07:47 -0700
committerNate Sesti <sestinj@gmail.com>2023-07-31 00:07:47 -0700
commitfc77dd52708d2a28cc6f138c5f0ee390b6d71a3f (patch)
treee0fe04351404c33a4299e2e7b2d36511d24d321b /continuedev/src
parent396679009fef21e13c1a6095212d1bd68e7f2a86 (diff)
parent8bd76be6c0925e0d5e5f6d239e9c6907df3cfd23 (diff)
downloadsncontinue-fc77dd52708d2a28cc6f138c5f0ee390b6d71a3f.tar.gz
sncontinue-fc77dd52708d2a28cc6f138c5f0ee390b6d71a3f.tar.bz2
sncontinue-fc77dd52708d2a28cc6f138c5f0ee390b6d71a3f.zip
Merge branch 'main' into at-embed
Diffstat (limited to 'continuedev/src')
-rw-r--r--continuedev/src/continuedev/core/autopilot.py3
-rw-r--r--continuedev/src/continuedev/core/context.py6
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/file.py5
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/filetree.py49
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/github.py2
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/google.py2
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/highlighted_code.py2
7 files changed, 59 insertions, 10 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py
index 12339f9b..5ab5f8ae 100644
--- a/continuedev/src/continuedev/core/autopilot.py
+++ b/continuedev/src/continuedev/core/autopilot.py
@@ -77,7 +77,8 @@ class Autopilot(ContinueBaseModel):
HighlightedCodeContextProvider(ide=self.ide),
FileContextProvider(workspace_dir=self.ide.workspace_directory)
])
- await self.context_manager.load_index()
+
+ await self.context_manager.load_index(self.ide.workspace_directory)
class Config:
arbitrary_types_allowed = True
diff --git a/continuedev/src/continuedev/core/context.py b/continuedev/src/continuedev/core/context.py
index 78a747b2..86522ce1 100644
--- a/continuedev/src/continuedev/core/context.py
+++ b/continuedev/src/continuedev/core/context.py
@@ -35,7 +35,7 @@ class ContextProvider(BaseModel):
return self.selected_items
@abstractmethod
- async def provide_context_items(self) -> List[ContextItem]:
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
"""
Provide documents for search index. This is run on startup.
@@ -159,9 +159,9 @@ class ContextManager:
return cls(context_providers)
- async def load_index(self):
+ async def load_index(self, workspace_dir: str):
for _, provider in self.context_providers.items():
- context_items = await provider.provide_context_items()
+ context_items = await provider.provide_context_items(workspace_dir)
documents = [
{
"id": item.description.id.to_string(),
diff --git a/continuedev/src/continuedev/plugins/context_providers/file.py b/continuedev/src/continuedev/plugins/context_providers/file.py
index c85a87a2..31aa5423 100644
--- a/continuedev/src/continuedev/plugins/context_providers/file.py
+++ b/continuedev/src/continuedev/plugins/context_providers/file.py
@@ -50,13 +50,12 @@ class FileContextProvider(ContextProvider):
"""
title = "file"
- workspace_dir: str
ignore_patterns: List[str] = DEFAULT_IGNORE_DIRS + \
list(filter(lambda d: f"**/{d}", DEFAULT_IGNORE_DIRS))
- async def provide_context_items(self) -> List[ContextItem]:
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
filepaths = []
- for root, dir_names, file_names in os.walk(self.workspace_dir):
+ for root, dir_names, file_names in os.walk(workspace_dir):
dir_names[:] = [d for d in dir_names if not any(
fnmatch(d, pattern) for pattern in self.ignore_patterns)]
for file_name in file_names:
diff --git a/continuedev/src/continuedev/plugins/context_providers/filetree.py b/continuedev/src/continuedev/plugins/context_providers/filetree.py
new file mode 100644
index 00000000..c7b4806b
--- /dev/null
+++ b/continuedev/src/continuedev/plugins/context_providers/filetree.py
@@ -0,0 +1,49 @@
+import json
+from typing import List
+import os
+import aiohttp
+
+from ...core.main import ContextItem, ContextItemDescription, ContextItemId
+from ...core.context import ContextProvider
+
+
+def format_file_tree(startpath) -> str:
+ result = ""
+ for root, dirs, files in os.walk(startpath):
+ level = root.replace(startpath, '').count(os.sep)
+ indent = ' ' * 4 * (level)
+ result += '{}{}/'.format(indent, os.path.basename(root)) + "\n"
+ subindent = ' ' * 4 * (level + 1)
+ for f in files:
+ result += '{}{}'.format(subindent, f) + "\n"
+
+ return result
+
+
+class FileTreeContextProvider(ContextProvider):
+ title = "tree"
+
+ workspace_dir: str = None
+
+ def _filetree_context_item(self):
+ return ContextItem(
+ content=format_file_tree(self.workspace_dir),
+ description=ContextItemDescription(
+ name="File Tree",
+ description="Add a formatted file tree of this directory to the context",
+ id=ContextItemId(
+ provider_title=self.title,
+ item_id=self.title
+ )
+ )
+ )
+
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
+ self.workspace_dir = workspace_dir
+ return [self._filetree_context_item()]
+
+ async def get_item(self, id: ContextItemId, query: str) -> ContextItem:
+ if not id.item_id == self.title:
+ raise Exception("Invalid item id")
+
+ return self._filetree_context_item()
diff --git a/continuedev/src/continuedev/plugins/context_providers/github.py b/continuedev/src/continuedev/plugins/context_providers/github.py
index 765a534d..2e7047f2 100644
--- a/continuedev/src/continuedev/plugins/context_providers/github.py
+++ b/continuedev/src/continuedev/plugins/context_providers/github.py
@@ -15,7 +15,7 @@ class GitHubIssuesContextProvider(ContextProvider):
repo_name: str
auth_token: str
- async def provide_context_items(self) -> List[ContextItem]:
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
auth = Auth.Token(self.auth_token)
gh = Github(auth=auth)
diff --git a/continuedev/src/continuedev/plugins/context_providers/google.py b/continuedev/src/continuedev/plugins/context_providers/google.py
index 4ad7c4a1..4b0a59ec 100644
--- a/continuedev/src/continuedev/plugins/context_providers/google.py
+++ b/continuedev/src/continuedev/plugins/context_providers/google.py
@@ -43,7 +43,7 @@ class GoogleContextProvider(ContextProvider):
async with session.post(url, headers=headers, data=payload) as response:
return await response.text()
- async def provide_context_items(self) -> List[ContextItem]:
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
return [self.BASE_CONTEXT_ITEM]
async def get_item(self, id: ContextItemId, query: str, _) -> ContextItem:
diff --git a/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py b/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py
index 664e705e..acd40dc7 100644
--- a/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py
+++ b/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py
@@ -96,7 +96,7 @@ class HighlightedCodeContextProvider(ContextProvider):
hr.item.description.name = self._rif_to_name(
hr.rif, display_filename=basename)
- async def provide_context_items(self) -> List[ContextItem]:
+ async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]:
return []
async def get_item(self, id: ContextItemId, query: str) -> ContextItem: