diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-08-25 16:59:02 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-08-25 16:59:02 -0700 |
commit | 0757bd2b556996b9c434ac43e3e4a3b042ef5802 (patch) | |
tree | 80ea56eda32ed816be4320dd00065cc323defc97 | |
parent | e17be65cd6c391f5b7854ca7a6b02bfee90c0039 (diff) | |
download | sncontinue-0757bd2b556996b9c434ac43e3e4a3b042ef5802.tar.gz sncontinue-0757bd2b556996b9c434ac43e3e4a3b042ef5802.tar.bz2 sncontinue-0757bd2b556996b9c434ac43e3e4a3b042ef5802.zip |
feat: :sparkles: filter history by workspace
-rw-r--r-- | continuedev/src/continuedev/core/autopilot.py | 1 | ||||
-rw-r--r-- | continuedev/src/continuedev/core/main.py | 1 | ||||
-rw-r--r-- | extension/react-app/src/components/CheckDiv.tsx | 46 | ||||
-rw-r--r-- | extension/react-app/src/pages/history.tsx | 21 | ||||
-rw-r--r-- | extension/schema/ContinueConfig.d.ts | 7 | ||||
-rw-r--r-- | extension/schema/FullState.d.ts | 6 | ||||
-rw-r--r-- | extension/schema/SessionInfo.d.ts | 2 | ||||
-rw-r--r-- | schema/json/ContinueConfig.json | 13 | ||||
-rw-r--r-- | schema/json/FullState.json | 10 | ||||
-rw-r--r-- | schema/json/SessionInfo.json | 4 |
10 files changed, 102 insertions, 9 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py index 246e2589..4e7a7cc7 100644 --- a/continuedev/src/continuedev/core/autopilot.py +++ b/continuedev/src/continuedev/core/autopilot.py @@ -514,6 +514,7 @@ class Autopilot(ContinueBaseModel): title=title, session_id=self.ide.session_id, date_created=str(time.time()), + workspace_directory=self.ide.workspace_directory, ) create_async_task( diff --git a/continuedev/src/continuedev/core/main.py b/continuedev/src/continuedev/core/main.py index 22651dd9..ec2e2a07 100644 --- a/continuedev/src/continuedev/core/main.py +++ b/continuedev/src/continuedev/core/main.py @@ -275,6 +275,7 @@ class SessionInfo(ContinueBaseModel): session_id: str title: str date_created: str + workspace_directory: Optional[str] = None class ContinueConfig(ContinueBaseModel): diff --git a/extension/react-app/src/components/CheckDiv.tsx b/extension/react-app/src/components/CheckDiv.tsx new file mode 100644 index 00000000..e595d70b --- /dev/null +++ b/extension/react-app/src/components/CheckDiv.tsx @@ -0,0 +1,46 @@ +import { useState } from "react"; +import styled from "styled-components"; +import { defaultBorderRadius, vscBackground, vscForeground } from "."; +import { CheckIcon } from "@heroicons/react/24/outline"; + +interface CheckDivProps { + title: string; + checked: boolean; + onClick: () => void; +} + +const StyledDiv = styled.div<{ checked: boolean }>` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 0.5rem; + border-radius: ${defaultBorderRadius}; + cursor: pointer; + border: 1px solid ${vscForeground}; + + color: ${vscForeground}; + background-color: ${vscBackground}; + + &:hover { + background-color: ${vscForeground}; + color: ${vscBackground}; + } + width: fit-content; + + margin: 0.5rem; + height: 1.4em; +`; + +function CheckDiv(props: CheckDivProps) { + const { title, checked, onClick } = props; + + return ( + <StyledDiv onClick={onClick} checked={checked}> + {checked && <CheckIcon width="1.4em" height="1.4em" />} + {title} + </StyledDiv> + ); +} + +export default CheckDiv; diff --git a/extension/react-app/src/pages/history.tsx b/extension/react-app/src/pages/history.tsx index 2eb895b1..2a3070e6 100644 --- a/extension/react-app/src/pages/history.tsx +++ b/extension/react-app/src/pages/history.tsx @@ -7,6 +7,7 @@ import { useNavigate } from "react-router-dom"; import { secondaryDark, vscBackground } from "../components"; import styled from "styled-components"; import { ArrowLeftIcon } from "@heroicons/react/24/outline"; +import CheckDiv from "../components/CheckDiv"; const Tr = styled.tr` &:hover { @@ -36,6 +37,11 @@ function History() { const [sessions, setSessions] = useState<SessionInfo[]>([]); const client = useContext(GUIClientContext); const apiUrl = useSelector((state: RootStore) => state.config.apiUrl); + const workspacePaths = useSelector( + (state: RootStore) => state.config.workspacePaths + ); + + const [filteringByWorkspace, setFilteringByWorkspace] = useState(false); useEffect(() => { const fetchSessions = async () => { @@ -67,9 +73,24 @@ function History() { /> <h1 className="text-2xl font-bold m-4 inline-block">History</h1> </div> + <CheckDiv + checked={filteringByWorkspace} + onClick={() => setFilteringByWorkspace((prev) => !prev)} + title="Filter by workspace" + /> <table className="w-full"> <tbody> {sessions + .filter((session) => { + if ( + !filteringByWorkspace || + typeof workspacePaths === "undefined" || + typeof session.workspace_directory === "undefined" + ) { + return true; + } + return workspacePaths.includes(session.workspace_directory); + }) .sort( (a, b) => parseDate(b.date_created).getTime() - diff --git a/extension/schema/ContinueConfig.d.ts b/extension/schema/ContinueConfig.d.ts index f4c62191..5341056f 100644 --- a/extension/schema/ContinueConfig.d.ts +++ b/extension/schema/ContinueConfig.d.ts @@ -141,10 +141,17 @@ export interface Policy { */ export interface ContextProvider { title: Title; + sdk?: ContinueSDK1; selected_items?: SelectedItems; [k: string]: unknown; } /** + * To avoid circular imports + */ +export interface ContinueSDK1 { + [k: string]: unknown; +} +/** * A ContextItem is a single item that is stored in the ContextManager. */ export interface ContextItem { diff --git a/extension/schema/FullState.d.ts b/extension/schema/FullState.d.ts index a999ce95..a847a608 100644 --- a/extension/schema/FullState.d.ts +++ b/extension/schema/FullState.d.ts @@ -41,6 +41,7 @@ export type SelectedContextItems = ContextItem[]; export type SessionId = string; export type Title = string; export type DateCreated = string; +export type WorkspaceDirectory = string; export type SystemMessage1 = string; export type Temperature = number; @@ -142,11 +143,12 @@ export interface SessionInfo { session_id: SessionId; title: Title; date_created: DateCreated; + workspace_directory?: WorkspaceDirectory; [k: string]: unknown; } export interface ContinueConfig { - system_message: SystemMessage1; - temperature: Temperature; + system_message?: SystemMessage1; + temperature?: Temperature; [k: string]: unknown; } export interface SavedContextGroups { diff --git a/extension/schema/SessionInfo.d.ts b/extension/schema/SessionInfo.d.ts index ac94e76d..80e3e527 100644 --- a/extension/schema/SessionInfo.d.ts +++ b/extension/schema/SessionInfo.d.ts @@ -9,10 +9,12 @@ export type SessionInfo = SessionInfo1; export type SessionId = string; export type Title = string; export type DateCreated = string; +export type WorkspaceDirectory = string; export interface SessionInfo1 { session_id: SessionId; title: Title; date_created: DateCreated; + workspace_directory?: WorkspaceDirectory; [k: string]: unknown; } diff --git a/schema/json/ContinueConfig.json b/schema/json/ContinueConfig.json index 0e82bf67..b4f104cd 100644 --- a/schema/json/ContinueConfig.json +++ b/schema/json/ContinueConfig.json @@ -115,7 +115,7 @@ } } }, - "ContinueSDK": { + "src__continuedev__core__models__ContinueSDK": { "title": "ContinueSDK", "type": "object", "properties": {} @@ -144,7 +144,7 @@ "$ref": "#/definitions/LLM" }, "sdk": { - "$ref": "#/definitions/ContinueSDK" + "$ref": "#/definitions/src__continuedev__core__models__ContinueSDK" } }, "required": [ @@ -207,6 +207,12 @@ "type": "object", "properties": {} }, + "src__continuedev__core__context__ContinueSDK": { + "title": "ContinueSDK", + "description": "To avoid circular imports", + "type": "object", + "properties": {} + }, "ContextItemId": { "title": "ContextItemId", "description": "A ContextItemId is a unique identifier for a ContextItem.", @@ -286,6 +292,9 @@ "title": "Title", "type": "string" }, + "sdk": { + "$ref": "#/definitions/src__continuedev__core__context__ContinueSDK" + }, "selected_items": { "title": "Selected Items", "default": [], diff --git a/schema/json/FullState.json b/schema/json/FullState.json index 9f75930f..1db72ad9 100644 --- a/schema/json/FullState.json +++ b/schema/json/FullState.json @@ -260,6 +260,10 @@ "date_created": { "title": "Date Created", "type": "string" + }, + "workspace_directory": { + "title": "Workspace Directory", + "type": "string" } }, "required": [ @@ -280,11 +284,7 @@ "title": "Temperature", "type": "number" } - }, - "required": [ - "system_message", - "temperature" - ] + } }, "src__continuedev__core__main__FullState": { "title": "FullState", diff --git a/schema/json/SessionInfo.json b/schema/json/SessionInfo.json index 5857a724..6bccfb2f 100644 --- a/schema/json/SessionInfo.json +++ b/schema/json/SessionInfo.json @@ -17,6 +17,10 @@ "date_created": { "title": "Date Created", "type": "string" + }, + "workspace_directory": { + "title": "Workspace Directory", + "type": "string" } }, "required": [ |