summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--continuedev/src/continuedev/core/autopilot.py1
-rw-r--r--continuedev/src/continuedev/core/main.py1
-rw-r--r--extension/react-app/src/components/CheckDiv.tsx46
-rw-r--r--extension/react-app/src/pages/history.tsx21
-rw-r--r--extension/schema/ContinueConfig.d.ts7
-rw-r--r--extension/schema/FullState.d.ts6
-rw-r--r--extension/schema/SessionInfo.d.ts2
-rw-r--r--schema/json/ContinueConfig.json13
-rw-r--r--schema/json/FullState.json10
-rw-r--r--schema/json/SessionInfo.json4
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": [