diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-07-04 13:43:09 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-07-04 13:43:09 -0700 |
commit | 67e70b868f63e20c2b0cae875993e267a5c32d5e (patch) | |
tree | 9a2d3f32029010d4c4f6a486aa1d9c508ee4bc1a | |
parent | 6d535c02e50bcf0ff80b5c615e4afb01bb36b631 (diff) | |
download | sncontinue-67e70b868f63e20c2b0cae875993e267a5c32d5e.tar.gz sncontinue-67e70b868f63e20c2b0cae875993e267a5c32d5e.tar.bz2 sncontinue-67e70b868f63e20c2b0cae875993e267a5c32d5e.zip |
many fixes
-rw-r--r-- | continuedev/src/continuedev/core/autopilot.py | 11 | ||||
-rw-r--r-- | continuedev/src/continuedev/core/main.py | 7 | ||||
-rw-r--r-- | continuedev/src/continuedev/core/sdk.py | 13 | ||||
-rw-r--r-- | continuedev/src/continuedev/steps/chat.py | 1 | ||||
-rw-r--r-- | extension/package-lock.json | 4 | ||||
-rw-r--r-- | extension/package.json | 4 | ||||
-rw-r--r-- | extension/react-app/src/components/ComboBox.tsx | 10 | ||||
-rw-r--r-- | extension/react-app/src/components/PillButton.tsx | 1 | ||||
-rw-r--r-- | extension/react-app/src/components/UserInputContainer.tsx | 6 | ||||
-rw-r--r-- | extension/react-app/src/tabs/gui.tsx | 5 |
10 files changed, 37 insertions, 25 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py index 05e48f40..313ceded 100644 --- a/continuedev/src/continuedev/core/autopilot.py +++ b/continuedev/src/continuedev/core/autopilot.py @@ -144,9 +144,7 @@ class Autopilot(ContinueBaseModel): async def handle_highlighted_code(self, range_in_files: List[RangeInFileWithContents]): workspace_path = self.continue_sdk.ide.workspace_directory for rif in range_in_files: - rif.filepath = os.path.relpath(rif.filepath, workspace_path) - if rif.filepath.startswith(".."): - rif.filepath = os.path.basename(rif.filepath) + rif.filepath = os.path.basename(rif.filepath) # If current range overlaps with any others, delete them and only keep the new range new_ranges = [] @@ -156,6 +154,13 @@ class Autopilot(ContinueBaseModel): if rif.filepath == new_rif.filepath and rif.range.overlaps_with(new_rif.range): found_overlap = True break + + # Also don't allow multiple ranges in same file with same content. This is useless to the model, and avoids + # the bug where cmd+f causes repeated highlights + if rif.filepath == new_rif.filepath and rif.contents == new_rif.contents: + found_overlap = True + break + if not found_overlap: new_ranges.append(rif) diff --git a/continuedev/src/continuedev/core/main.py b/continuedev/src/continuedev/core/main.py index 9a6617f4..8bad09d1 100644 --- a/continuedev/src/continuedev/core/main.py +++ b/continuedev/src/continuedev/core/main.py @@ -107,11 +107,9 @@ class HistoryNode(ContinueBaseModel): return self.step.chat_context return self.step.chat_context + [ ChatMessage( - role="function", + role="assistant", name=self.step.__class__.__name__, - content=json.dumps({ - "description": self.step.description or "Function complete", - }), + content=self.step.description or f"Ran function {self.step.name}", summary=f"Called function {self.step.name}" )] @@ -200,6 +198,7 @@ class SlashCommandDescription(ContinueBaseModel): name: str description: str + class FullState(ContinueBaseModel): """A full state of the program, including the history""" history: History diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py index 988ac6b0..fe975b99 100644 --- a/continuedev/src/continuedev/core/sdk.py +++ b/continuedev/src/continuedev/core/sdk.py @@ -97,7 +97,18 @@ class ContinueSDK(AbstractContinueSDK): async def _ensure_absolute_path(self, path: str) -> str: if os.path.isabs(path): return path - return os.path.join(self.ide.workspace_directory, path) + + # Else if in workspace + workspace_path = os.path.join(self.ide.workspace_directory, path) + if os.path.exists(workspace_path): + return workspace_path + else: + # Check if it matches any of the open files, then use that absolute path + open_files = await self.ide.getOpenFiles() + for open_file in open_files: + if os.path.basename(open_file) == os.path.basename(path): + return open_file + raise Exception(f"Path {path} does not exist") async def run_step(self, step: Step) -> Coroutine[Observation, None, None]: return await self.__autopilot._run_singular_step(step) diff --git a/continuedev/src/continuedev/steps/chat.py b/continuedev/src/continuedev/steps/chat.py index 49dd98e4..db3f9d7f 100644 --- a/continuedev/src/continuedev/steps/chat.py +++ b/continuedev/src/continuedev/steps/chat.py @@ -149,6 +149,7 @@ class ChatWithFunctions(Step): name: str = "Input" manage_own_chat_context: bool = True description: str = "" + hide: bool = True async def run(self, sdk: ContinueSDK): await sdk.update_ui() diff --git a/extension/package-lock.json b/extension/package-lock.json index c9b8b757..94823004 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.0.106", + "version": "0.0.107", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "continue", - "version": "0.0.106", + "version": "0.0.107", "license": "Apache-2.0", "dependencies": { "@electron/rebuild": "^3.2.10", diff --git a/extension/package.json b/extension/package.json index 184d16e2..6434efc3 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,7 +14,7 @@ "displayName": "Continue", "pricing": "Free", "description": "The open-source coding autopilot", - "version": "0.0.106", + "version": "0.0.107", "publisher": "Continue", "engines": { "vscode": "^1.67.0" @@ -55,7 +55,7 @@ }, "continue.OPENAI_API_KEY": { "type": "password", - "default": "", + "default": null, "description": "The OpenAI API key to use for code generation." }, "continue.dataSwitch": { diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx index bdb8850d..3e1f3e16 100644 --- a/extension/react-app/src/components/ComboBox.tsx +++ b/extension/react-app/src/components/ComboBox.tsx @@ -279,13 +279,9 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => { )} {highlightedCodeSections.map((section, idx) => ( <PillButton - title={ - hoveringButton - ? `${section.filepath} (${section.range.start.line + 1}-${ - section.range.end.line + 1 - })` - : section.filepath - } + title={`${section.filepath} (${section.range.start.line + 1}-${ + section.range.end.line + 1 + })`} onDelete={() => { if (props.deleteContextItems) { props.deleteContextItems([idx]); diff --git a/extension/react-app/src/components/PillButton.tsx b/extension/react-app/src/components/PillButton.tsx index 55fe1ac6..2352c3ad 100644 --- a/extension/react-app/src/components/PillButton.tsx +++ b/extension/react-app/src/components/PillButton.tsx @@ -50,7 +50,6 @@ const PillButton = (props: PillButtonProps) => { borderRight: "1px solid black", paddingRight: "4px", }} - hidden={!isHovered} onClick={() => { props.onDelete?.(); props.onHover?.(false); diff --git a/extension/react-app/src/components/UserInputContainer.tsx b/extension/react-app/src/components/UserInputContainer.tsx index 59453169..44fdba38 100644 --- a/extension/react-app/src/components/UserInputContainer.tsx +++ b/extension/react-app/src/components/UserInputContainer.tsx @@ -6,10 +6,12 @@ import HeaderButtonWithText from "./HeaderButtonWithText"; import { Play, XMark } from "@styled-icons/heroicons-outline"; import { RootStore } from "../redux/store"; import { useSelector } from "react-redux"; +import { HistoryNode } from "../../../schema/HistoryNode"; interface UserInputContainerProps { onDelete: () => void; children: string; + historyNode: HistoryNode; } const StyledDiv = styled.div` @@ -26,7 +28,7 @@ const StyledDiv = styled.div` const UserInputContainer = (props: UserInputContainerProps) => { return ( - <StyledDiv> + <StyledDiv hidden={props.historyNode.step.hide as any}> {props.children} <div style={{ marginLeft: "auto" }}> <HeaderButtonWithText @@ -36,7 +38,7 @@ const UserInputContainer = (props: UserInputContainerProps) => { }} text="Delete" > - <XMark size="1.6em" onClick={props.onDelete} /> + <XMark size="1.6em" /> </HeaderButtonWithText> </div> </StyledDiv> diff --git a/extension/react-app/src/tabs/gui.tsx b/extension/react-app/src/tabs/gui.tsx index c2ff101a..8bfadc05 100644 --- a/extension/react-app/src/tabs/gui.tsx +++ b/extension/react-app/src/tabs/gui.tsx @@ -70,9 +70,7 @@ function GUI(props: GUIProps) { const [usingFastModel, setUsingFastModel] = useState(false); const [waitingForSteps, setWaitingForSteps] = useState(false); const [userInputQueue, setUserInputQueue] = useState<string[]>([]); - const [highlightedRanges, setHighlightedRanges] = useState([ - { filepath: "abc.txt", range: { start: { line: 2 }, end: { line: 4 } } }, - ]); + const [highlightedRanges, setHighlightedRanges] = useState([]); const [availableSlashCommands, setAvailableSlashCommands] = useState< { name: string; description: string }[] >([]); @@ -296,6 +294,7 @@ function GUI(props: GUIProps) { onDelete={() => { client?.deleteAtIndex(index); }} + historyNode={node} > {node.step.description as string} </UserInputContainer> |