summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-08-28 20:31:15 -0700
committerNate Sesti <sestinj@gmail.com>2023-08-28 20:31:15 -0700
commit40cfabb8ce8afe20e51ca4bafddc6a0b4755bf2c (patch)
tree73e330973ff154f10053f0bd94eeb2c72a8d28b2
parent36d517e37d87b1bd39d6027577714b60c32e81e9 (diff)
downloadsncontinue-40cfabb8ce8afe20e51ca4bafddc6a0b4755bf2c.tar.gz
sncontinue-40cfabb8ce8afe20e51ca4bafddc6a0b4755bf2c.tar.bz2
sncontinue-40cfabb8ce8afe20e51ca4bafddc6a0b4755bf2c.zip
feat: :sparkles: @terminal context provider
-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
-rw-r--r--docs/docs/context-providers.md12
-rw-r--r--extension/src/activation/activate.ts13
5 files changed, 64 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
diff --git a/docs/docs/context-providers.md b/docs/docs/context-providers.md
index 9af35e4f..3147f90e 100644
--- a/docs/docs/context-providers.md
+++ b/docs/docs/context-providers.md
@@ -96,6 +96,18 @@ GoogleContextProvider(
Note: You can get an API key for free at [serper.dev](https://serper.dev).
+### Terminal
+
+Type '@terminal' to reference the contents of your IDE's terminal.
+
+```python
+from continuedev.src.continuedev.plugins.context_providers.terminal import TerminalContextProvider
+```
+
+```python
+TerminalContextProvider()
+```
+
### Requesting Context Providers
Not seeing what you want? Create an issue [here](https://github.com/continuedev/continue/issues/new?assignees=TyDunn&labels=enhancement&projects=&template=feature-request-%F0%9F%92%AA.md&title=) to request a new ContextProvider.
diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts
index 831d1160..de7464bf 100644
--- a/extension/src/activation/activate.ts
+++ b/extension/src/activation/activate.ts
@@ -49,6 +49,19 @@ export async function activateExtension(context: vscode.ExtensionContext) {
})
.catch((e) => console.log("Error checking for extension updates: ", e));
+ // Add to python.analysis.extraPaths global setting
+ // const pythonConfig = vscode.workspace.getConfiguration("python");
+ // const extraPaths = pythonConfig.get<string[]>("analysis.extraPaths");
+ // const pathToAdd = path.join(os.homedir(), ".continue", "server");
+ // if (extraPaths) {
+ // if (!extraPaths.includes(pathToAdd)) {
+ // extraPaths.push(pathToAdd);
+ // pythonConfig.update("analysis.extraPaths", extraPaths);
+ // }
+ // } else {
+ // pythonConfig.update("analysis.extraPaths", [pathToAdd]);
+ // }
+
// Register commands and providers
registerAllCodeLensProviders(context);
registerAllCommands(context);