diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-05-27 00:11:28 -0400 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-05-27 00:11:28 -0400 |
commit | 1e9bd40415488760a52957cbb015a1c3c4e1383a (patch) | |
tree | d6d6ba2ccce339e578976aa8bed2f77d90c34959 /continuedev/src/continuedev/libs/steps/main.py | |
parent | 741f85b6b2b26e5e007ebf92b336a832af6af5d4 (diff) | |
download | sncontinue-1e9bd40415488760a52957cbb015a1c3c4e1383a.tar.gz sncontinue-1e9bd40415488760a52957cbb015a1c3c4e1383a.tar.bz2 sncontinue-1e9bd40415488760a52957cbb015a1c3c4e1383a.zip |
Refactoring to deal with circularity
Diffstat (limited to 'continuedev/src/continuedev/libs/steps/main.py')
-rw-r--r-- | continuedev/src/continuedev/libs/steps/main.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/continuedev/src/continuedev/libs/steps/main.py b/continuedev/src/continuedev/libs/steps/main.py index 70953e95..555c1180 100644 --- a/continuedev/src/continuedev/libs/steps/main.py +++ b/continuedev/src/continuedev/libs/steps/main.py @@ -51,6 +51,31 @@ class RunCommandStep(Step): return TextObservation(text=stdout) +def ShellCommandsStep(Step): + cmds: List[str] + name: str = "Run Shell Commands" + + async def describe(self, llm: LLM) -> Coroutine[str, None, None]: + return "\n".join(self.cmds) + + async def run(self, sdk: ContinueSDK) -> Coroutine[Observation, None, None]: + cwd = await sdk.ide.getWorkspaceDirectory() + + process = subprocess.Popen( + '/bin/bash', stdin=subprocess.PIPE, stdout=subprocess.PIPE, cwd=cwd) + + stdin_input = "\n".join(self.cmds) + out, err = process.communicate(stdin_input.encode()) + + # TODO: How to await?? + + # If it fails, return the error + if err is not None and err != "": + return TextObservation(text=err) + + return None + + class WaitForUserInputStep(Step): prompt: str name: str = "Waiting for user input" |