summaryrefslogtreecommitdiff
path: root/continuedev
diff options
context:
space:
mode:
Diffstat (limited to 'continuedev')
-rw-r--r--continuedev/src/continuedev/core/sdk.py20
-rw-r--r--continuedev/src/continuedev/server/ide.py35
-rw-r--r--continuedev/src/continuedev/server/ide_protocol.py4
-rw-r--r--continuedev/src/continuedev/steps/core/core.py1
-rw-r--r--continuedev/src/continuedev/steps/main.py2
5 files changed, 22 insertions, 40 deletions
diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py
index 5d0f03fe..5ae471c4 100644
--- a/continuedev/src/continuedev/core/sdk.py
+++ b/continuedev/src/continuedev/core/sdk.py
@@ -11,7 +11,6 @@ from .observation import Observation
from ..server.ide_protocol import AbstractIdeProtocolServer
from .main import History, Step
from ..steps.core.core import *
-from .env import get_env_var, make_sure_env_exists
class Autopilot:
@@ -105,24 +104,7 @@ class ContinueSDK:
return await self.run_step(FileSystemEditStep(edit=DeleteDirectory(path=path)))
async def get_user_secret(self, env_var: str, prompt: str) -> str:
- make_sure_env_exists()
-
- val = None
- while val is None:
- try:
- val = get_env_var(env_var)
- if val is not None:
- return val
- except:
- pass
- server_dir = os.getcwd()
- env_path = os.path.join(server_dir, ".env")
- await self.ide.setFileOpen(env_path)
- await self.append_to_file(env_path, f'\n{env_var}="<ENTER SECRET HERE>"')
- await self.run_step(WaitForUserConfirmationStep(prompt=prompt))
- val = get_env_var(env_var)
-
- return val
+ return await self.ide.getUserSecret(env_var)
async def get_config(self) -> ContinueConfig:
dir = await self.ide.getWorkspaceDirectory()
diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py
index 71017ce0..eec5b607 100644
--- a/continuedev/src/continuedev/server/ide.py
+++ b/continuedev/src/continuedev/server/ide.py
@@ -40,46 +40,42 @@ Server.handle_exit = AppStatus.handle_exit
class FileEditsUpdate(BaseModel):
- messageType: str = "fileEdits"
fileEdits: List[FileEditWithFullContents]
class OpenFilesResponse(BaseModel):
- messageType: str = "openFiles"
openFiles: List[str]
class HighlightedCodeResponse(BaseModel):
- messageType: str = "highlightedCode"
highlightedCode: List[RangeInFile]
class ShowSuggestionRequest(BaseModel):
- messageType: str = "showSuggestion"
suggestion: FileEdit
class ShowSuggestionResponse(BaseModel):
- messageType: str = "showSuggestion"
suggestion: FileEdit
accepted: bool
class ReadFileResponse(BaseModel):
- messageType: str = "readFile"
contents: str
class EditFileResponse(BaseModel):
- messageType: str = "editFile"
fileEdit: FileEditWithFullContents
class WorkspaceDirectoryResponse(BaseModel):
- messageType: str = "workspaceDirectory"
workspaceDirectory: str
+class GetUserSecretResponse(BaseModel):
+ value: str
+
+
T = TypeVar("T", bound=BaseModel)
@@ -114,7 +110,7 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
fileEdits = list(
map(lambda d: FileEditWithFullContents.parse_obj(d), data["fileEdits"]))
self.onFileEdits(fileEdits)
- elif message_type in ["highlightedCode", "openFiles", "readFile", "editFile", "workspaceDirectory"]:
+ elif message_type in ["highlightedCode", "openFiles", "readFile", "editFile", "workspaceDirectory", "getUserSecret"]:
self.sub_queue.post(message_type, data)
else:
raise ValueError("Unknown message type", message_type)
@@ -183,31 +179,31 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
# Request information. Session doesn't matter.
async def getOpenFiles(self) -> List[str]:
- resp = await self._send_and_receive_json({
- "messageType": "openFiles"
- }, OpenFilesResponse, "openFiles")
+ resp = await self._send_and_receive_json({}, OpenFilesResponse, "openFiles")
return resp.openFiles
async def getWorkspaceDirectory(self) -> str:
- resp = await self._send_and_receive_json({
- "messageType": "workspaceDirectory"
- }, WorkspaceDirectoryResponse, "workspaceDirectory")
+ resp = await self._send_and_receive_json({}, WorkspaceDirectoryResponse, "workspaceDirectory")
return resp.workspaceDirectory
async def getHighlightedCode(self) -> List[RangeInFile]:
- resp = await self._send_and_receive_json({
- "messageType": "highlightedCode"
- }, HighlightedCodeResponse, "highlightedCode")
+ resp = await self._send_and_receive_json({}, HighlightedCodeResponse, "highlightedCode")
return resp.highlightedCode
async def readFile(self, filepath: str) -> str:
"""Read a file"""
resp = await self._send_and_receive_json({
- "messageType": "readFile",
"filepath": filepath
}, ReadFileResponse, "readFile")
return resp.contents
+ async def getUserSecret(self, key: str) -> str:
+ """Get a user secret"""
+ resp = await self._send_and_receive_json({
+ "key": key
+ }, GetUserSecretResponse, "getUserSecret")
+ return resp.value
+
async def saveFile(self, filepath: str):
"""Save a file"""
await self._send_json("saveFile", {
@@ -222,7 +218,6 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
async def editFile(self, edit: FileEdit) -> FileEditWithFullContents:
"""Edit a file"""
resp = await self._send_and_receive_json({
- "messageType": "editFile",
"edit": edit.dict()
}, EditFileResponse, "editFile")
return resp.fileEdit
diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py
index 4f505e80..8f155415 100644
--- a/continuedev/src/continuedev/server/ide_protocol.py
+++ b/continuedev/src/continuedev/server/ide_protocol.py
@@ -78,3 +78,7 @@ class AbstractIdeProtocolServer(ABC):
@abstractmethod
async def saveFile(self, filepath: str):
"""Save a file"""
+
+ @abstractmethod
+ async def getUserSecret(self, key: str):
+ """Get a user secret"""
diff --git a/continuedev/src/continuedev/steps/core/core.py b/continuedev/src/continuedev/steps/core/core.py
index e54a9a21..0f513f3e 100644
--- a/continuedev/src/continuedev/steps/core/core.py
+++ b/continuedev/src/continuedev/steps/core/core.py
@@ -205,4 +205,5 @@ class WaitForUserConfirmationStep(Step):
async def run(self, sdk: ContinueSDK) -> Coroutine[Observation, None, None]:
self._description = self.prompt
resp = await sdk.wait_for_user_input()
+ self.hide = True
return TextObservation(text=resp)
diff --git a/continuedev/src/continuedev/steps/main.py b/continuedev/src/continuedev/steps/main.py
index bb720b20..dfb4f3be 100644
--- a/continuedev/src/continuedev/steps/main.py
+++ b/continuedev/src/continuedev/steps/main.py
@@ -190,7 +190,7 @@ class FasterEditHighlightedCodeStep(Step):
class StarCoderEditHighlightedCodeStep(Step):
user_input: str
- name: str = "Editing code"
+ name: str = "Editing Code"
hide = False
_prompt: str = "<commit_before>{code}<commit_msg>{user_request}<commit_after>"