summaryrefslogtreecommitdiff
path: root/continuedev/src/continuedev/libs/steps/main.py
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-05-27 00:11:28 -0400
committerNate Sesti <sestinj@gmail.com>2023-05-27 00:11:28 -0400
commit1e9bd40415488760a52957cbb015a1c3c4e1383a (patch)
treed6d6ba2ccce339e578976aa8bed2f77d90c34959 /continuedev/src/continuedev/libs/steps/main.py
parent741f85b6b2b26e5e007ebf92b336a832af6af5d4 (diff)
downloadsncontinue-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.py25
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"