summaryrefslogtreecommitdiff
path: root/continuedev
diff options
context:
space:
mode:
Diffstat (limited to 'continuedev')
-rw-r--r--continuedev/src/continuedev/libs/constants/default_config.py4
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/terminal.py32
-rw-r--r--continuedev/src/continuedev/server/ide_protocol.py4
3 files changed, 39 insertions, 1 deletions
diff --git a/continuedev/src/continuedev/libs/constants/default_config.py b/continuedev/src/continuedev/libs/constants/default_config.py
index c72e4bcf..76d66c02 100644
--- a/continuedev/src/continuedev/libs/constants/default_config.py
+++ b/continuedev/src/continuedev/libs/constants/default_config.py
@@ -19,6 +19,7 @@ from continuedev.src.continuedev.plugins.steps.main import EditHighlightedCodeSt
from continuedev.src.continuedev.plugins.context_providers.search import SearchContextProvider
from continuedev.src.continuedev.plugins.context_providers.diff import DiffContextProvider
from continuedev.src.continuedev.plugins.context_providers.url import URLContextProvider
+from continuedev.src.continuedev.plugins.context_providers.terminal import TerminalContextProvider
config = ContinueConfig(
allow_anonymous_telemetry=True,
@@ -78,7 +79,8 @@ config = ContinueConfig(
preset_urls = [
# Add any common urls you reference here so they appear in autocomplete
]
- )
+ ),
+ TerminalContextProvider(),
],
)
"""
diff --git a/continuedev/src/continuedev/plugins/context_providers/terminal.py b/continuedev/src/continuedev/plugins/context_providers/terminal.py
new file mode 100644
index 00000000..c7e91945
--- /dev/null
+++ b/continuedev/src/continuedev/plugins/context_providers/terminal.py
@@ -0,0 +1,32 @@
+from typing import List
+
+from ...core.context import ContextProvider
+from ...core.main import ContextItem, ContextItemDescription, ContextItemId
+
+
+class TerminalContextProvider(ContextProvider):
+ title = "terminal"
+
+ workspace_dir: str = None
+
+ def _terminal_context_item(self, content: str = ""):
+ return ContextItem(
+ content=content,
+ description=ContextItemDescription(
+ name="Terminal",
+ description="Reference the contents of the VS Code terminal",
+ 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._terminal_context_item()]
+
+ async def get_item(self, id: ContextItemId, query: str) -> ContextItem:
+ if not id.item_id == self.title:
+ raise Exception("Invalid item id")
+
+ terminal_contents = await self.sdk.ide.getTerminalContents()
+
+ return self._terminal_context_item(terminal_contents)
diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py
index f4a39c26..4ef4bde7 100644
--- a/continuedev/src/continuedev/server/ide_protocol.py
+++ b/continuedev/src/continuedev/server/ide_protocol.py
@@ -155,5 +155,9 @@ class AbstractIdeProtocolServer(ABC):
async def fileExists(self, filepath: str) -> str:
"""Check if a file exists"""
+ @abstractmethod
+ async def getTerminalContents(self) -> str:
+ """Get the terminal contents"""
+
workspace_directory: str
unique_id: str