summaryrefslogtreecommitdiff
path: root/continuedev/src/continuedev/server
diff options
context:
space:
mode:
authorTy Dunn <ty@tydunn.com>2023-06-16 15:56:01 -0700
committerGitHub <noreply@github.com>2023-06-16 15:56:01 -0700
commitc196431ff1de014827066e3a04c39438c34ebe3d (patch)
treea91625915ea31f00b0991ff3f333925e17bab5a4 /continuedev/src/continuedev/server
parent085c6f846715d55d6638c73d34886ddf2a26d1b5 (diff)
parent55611ef0b6ca014ff091a1cd18fb749ab210b3ec (diff)
downloadsncontinue-c196431ff1de014827066e3a04c39438c34ebe3d.tar.gz
sncontinue-c196431ff1de014827066e3a04c39438c34ebe3d.tar.bz2
sncontinue-c196431ff1de014827066e3a04c39438c34ebe3d.zip
Merge branch 'main' into too-large
Diffstat (limited to 'continuedev/src/continuedev/server')
-rw-r--r--continuedev/src/continuedev/server/ide.py22
-rw-r--r--continuedev/src/continuedev/server/ide_protocol.py4
2 files changed, 14 insertions, 12 deletions
diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py
index c53149d8..c83fbc8a 100644
--- a/continuedev/src/continuedev/server/ide.py
+++ b/continuedev/src/continuedev/server/ide.py
@@ -1,5 +1,4 @@
# This is a separate server from server/main.py
-import asyncio
from functools import cached_property
import json
import os
@@ -10,11 +9,13 @@ from uvicorn.main import Server
from ..libs.util.queue import AsyncSubscriptionQueue
from ..models.filesystem import FileSystem, RangeInFile, EditDiff, RealFileSystem
-from ..models.main import Traceback
from ..models.filesystem_edit import AddDirectory, AddFile, DeleteDirectory, DeleteFile, FileSystemEdit, FileEdit, FileEditWithFullContents, RenameDirectory, RenameFile, SequentialFileSystemEdit
from pydantic import BaseModel
from .gui import SessionManager, session_manager
from .ide_protocol import AbstractIdeProtocolServer
+import asyncio
+import nest_asyncio
+nest_asyncio.apply()
router = APIRouter(prefix="/ide", tags=["ide"])
@@ -135,6 +136,9 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
fileEdits = list(
map(lambda d: FileEditWithFullContents.parse_obj(d), data["fileEdits"]))
self.onFileEdits(fileEdits)
+ elif message_type == "commandOutput":
+ output = data["output"]
+ self.onCommandOutput(output)
elif message_type in ["highlightedCode", "openFiles", "readFile", "editFile", "workspaceDirectory", "getUserSecret", "runCommand", "uniqueId"]:
self.sub_queue.post(message_type, data)
else:
@@ -189,11 +193,6 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
def onAcceptRejectSuggestion(self, suggestionId: str, accepted: bool):
pass
- def onTraceback(self, traceback: Traceback):
- # Same as below, maybe not every autopilot?
- for _, session in self.session_manager.sessions.items():
- session.autopilot.handle_traceback(traceback)
-
def onFileSystemUpdate(self, update: FileSystemEdit):
# Access to Autopilot (so SessionManager)
pass
@@ -211,6 +210,13 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
for _, session in self.session_manager.sessions.items():
session.autopilot.handle_manual_edits(edits)
+ def onCommandOutput(self, output: str):
+ # Send the output to ALL autopilots.
+ # Maybe not ideal behavior
+ for _, session in self.session_manager.sessions.items():
+ asyncio.create_task(
+ session.autopilot.handle_command_output(output))
+
# Request information. Session doesn't matter.
async def getOpenFiles(self) -> List[str]:
resp = await self._send_and_receive_json({}, OpenFilesResponse, "openFiles")
@@ -224,7 +230,7 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
resp = await self._send_and_receive_json({}, UniqueIdResponse, "uniqueId")
return resp.uniqueId
- @cached_property
+ @property
def workspace_directory(self) -> str:
return asyncio.run(self.getWorkspaceDirectory())
diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py
index 1d98f4a1..2dcedc30 100644
--- a/continuedev/src/continuedev/server/ide_protocol.py
+++ b/continuedev/src/continuedev/server/ide_protocol.py
@@ -36,10 +36,6 @@ class AbstractIdeProtocolServer(ABC):
"""Called when the user accepts or rejects a suggestion"""
@abstractmethod
- def onTraceback(self, traceback: Traceback):
- """Called when a traceback is received"""
-
- @abstractmethod
def onFileSystemUpdate(self, update: FileSystemEdit):
"""Called when a file system update is received"""