diff --git a/cognee-frontend/public/videos/background-video-blur.mp4 b/cognee-frontend/public/videos/background-video-blur.mp4 new file mode 100644 index 000000000..23d7ecdba Binary files /dev/null and b/cognee-frontend/public/videos/background-video-blur.mp4 differ diff --git a/cognee-frontend/src/app/account/Account.tsx b/cognee-frontend/src/app/account/Account.tsx index 8161a4d26..c5cca42b7 100644 --- a/cognee-frontend/src/app/account/Account.tsx +++ b/cognee-frontend/src/app/account/Account.tsx @@ -1,22 +1,29 @@ +"use client"; + import Link from "next/link"; import { BackIcon } from "@/ui/Icons"; import { CTAButton } from "@/ui/elements"; import Header from "@/ui/Layout/Header"; +import { useAuthenticatedUser } from "@/modules/auth"; export default function Account() { + const { user } = useAuthenticatedUser(); const account = { - name: "John Doe", + name: user ? user.name || user.email : "NN", }; return ( - <> -
-
-
-
-
-
-
+
+
@@ -46,6 +53,6 @@ export default function Account() {
- + ); } diff --git a/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx b/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx index e5f4bb932..cc729473d 100644 --- a/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx +++ b/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx @@ -1,10 +1,11 @@ import { FormEvent, useCallback, useState } from "react"; import { CloseIcon, PlusIcon } from "@/ui/Icons"; import { useModal } from "@/ui/elements/Modal"; -import { CTAButton, GhostButton, IconButton, Modal, Select } from "@/ui/elements"; +import { CTAButton, GhostButton, IconButton, Modal, NeutralButton, Select } from "@/ui/elements"; import addData from "@/modules/ingestion/addData"; import { Dataset } from "@/modules/ingestion/useDatasets"; +import cognifyDataset from "@/modules/datasets/cognifyDataset"; interface AddDataToCogneeProps { datasets: Dataset[]; @@ -39,9 +40,16 @@ export default function AddDataToCognee({ datasets, refreshDatasets }: AddDataTo }, Array.from(filesForUpload) ) - .then(() => { + .then(({ dataset_id, dataset_name }) => { refreshDatasets(); setFilesForUpload(null); + + return cognifyDataset({ + id: dataset_id, + name: dataset_name, + data: [], // not important, just to mimick Dataset + status: "", // not important, just to mimick Dataset + }); }); }, [filesForUpload, refreshDatasets]); @@ -64,20 +72,22 @@ export default function AddDataToCognee({ datasets, refreshDatasets }: AddDataTo
Add new data to a dataset? - +
Please select a dataset to add data in.
If you don't have any, don't worry, we will create one for you.
- + select files - + {filesForUpload?.length && (
@@ -91,7 +101,7 @@ export default function AddDataToCognee({ datasets, refreshDatasets }: AddDataTo )}
- closeAddDataModal()}>cancel + closeAddDataModal()}>cancel {isProcessingDataWithCognee ? "processing..." : "add"} diff --git a/cognee-frontend/src/app/dashboard/Dashboard.tsx b/cognee-frontend/src/app/dashboard/Dashboard.tsx index c5980fb29..a785f8e00 100644 --- a/cognee-frontend/src/app/dashboard/Dashboard.tsx +++ b/cognee-frontend/src/app/dashboard/Dashboard.tsx @@ -93,6 +93,17 @@ export default function Dashboard() { return (
+ +
diff --git a/cognee-frontend/src/app/dashboard/DatasetsAccordion.tsx b/cognee-frontend/src/app/dashboard/DatasetsAccordion.tsx index 55ce23dfa..4b80d831c 100644 --- a/cognee-frontend/src/app/dashboard/DatasetsAccordion.tsx +++ b/cognee-frontend/src/app/dashboard/DatasetsAccordion.tsx @@ -8,8 +8,8 @@ import { CloseIcon, DatasetIcon, MinusIcon, PlusIcon } from "@/ui/Icons"; import useDatasets, { Dataset } from "@/modules/ingestion/useDatasets"; import addData from "@/modules/ingestion/addData"; import cognifyDataset from "@/modules/datasets/cognifyDataset"; -import { DataFile } from '@/modules/ingestion/useData'; -import { LoadingIndicator } from '@/ui/App'; +import { DataFile } from "@/modules/ingestion/useData"; +import { LoadingIndicator } from "@/ui/App"; interface DatasetsChangePayload { datasets: Dataset[] @@ -156,20 +156,16 @@ export default function DatasetsAccordion({ } }; - const { - value: isProcessingFiles, - setTrue: setProcessingFilesInProgress, - setFalse: setProcessingFilesDone, - } = useBoolean(false); + const [datasetInProcessing, setProcessingDataset] = useState(null); const handleAddFiles = (dataset: Dataset, event: ChangeEvent) => { event.stopPropagation(); - if (isProcessingFiles) { + if (datasetInProcessing) { return; } - setProcessingFilesInProgress(); + setProcessingDataset(dataset); if (!event.target.files) { return; @@ -184,12 +180,10 @@ export default function DatasetsAccordion({ return addData(dataset, files) .then(async () => { await getDatasetData(dataset.id); - - const onUpdate = () => {}; - return cognifyDataset(dataset, onUpdate) + return cognifyDataset(dataset) .finally(() => { - setProcessingFilesDone(); + setProcessingDataset(null); }); }); }; @@ -230,7 +224,12 @@ export default function DatasetsAccordion({ isOpen={isDatasetsPanelOpen} openAccordion={openDatasetsPanel} closeAccordion={closeDatasetsPanel} - tools={tools || } + tools={( +
+ {tools} + +
+ )} switchCaretPosition={switchCaretPosition} className={className} contentClassName={contentClassName} @@ -247,7 +246,7 @@ export default function DatasetsAccordion({ key={dataset.id} title={(
- {isProcessingFiles ? : } + {datasetInProcessing?.id == dataset.id ? : } {dataset.name}
)} diff --git a/cognee-frontend/src/app/plan/Plan.tsx b/cognee-frontend/src/app/plan/Plan.tsx index fcca31566..1fc3477ea 100644 --- a/cognee-frontend/src/app/plan/Plan.tsx +++ b/cognee-frontend/src/app/plan/Plan.tsx @@ -5,16 +5,17 @@ import Header from "@/ui/Layout/Header"; export default function Plan() { return ( - <> -
-
-
-
-
-
-
-
-
+
+
@@ -27,25 +28,29 @@ export default function Plan() {
+
+ Affordable and transparent pricing +
+
-
+
Basic
Free
-
+
On-prem Subscription
$2470 /per month
Save 20% yearly
-
+
Cloud Subscription
$25 /per month
(beta pricing)
-
+
Everything in the free plan, plus...
License to use Cognee open source
@@ -56,7 +61,7 @@ export default function Plan() {
-
+
Everything in the free plan, plus...
License to use Cognee open source and Cognee Platform
@@ -69,7 +74,7 @@ export default function Plan() {
-
+
Everything in the free plan, plus...
Fully hosted cloud platform
@@ -83,24 +88,25 @@ export default function Plan() {
- Try for free + Try for free
- Talk to us + Talk to us
- Sign up for Cogwit Beta + Sign up for Cogwit Beta
-
+
Feature Comparison
Basic
On-prem
Cloud
- +
+
Data Sources
28+
28+
@@ -121,37 +127,39 @@ export default function Plan() {
Hands-on
Priority
-
SLA
-
-
1 day
-
Standard
+
SLA
+
+
1 day
+
Standard
-
+
Can I change my plan anytime?
Yes, you can upgrade or downgrade your plan at any time. Changes take effect immediately.
-
+
What happens to my data if I downgrade?
Your data is preserved, but features may be limited based on your new plan constraints.
-
+
Do you offer educational discounts?
Yes, we offer special pricing for educational institutions and students. Contact us for details.
-
+
Is there a free trial for paid plans?
All new accounts start with a 14-day free trial of our Pro plan features.
-
- Need a custom solution? - Contact us +
+
+
Need a custom solution?
+ Contact us +
- +
); } diff --git a/cognee-frontend/src/modules/datasets/cognifyDataset.ts b/cognee-frontend/src/modules/datasets/cognifyDataset.ts index 7842334af..301405c2f 100644 --- a/cognee-frontend/src/modules/datasets/cognifyDataset.ts +++ b/cognee-frontend/src/modules/datasets/cognifyDataset.ts @@ -1,13 +1,13 @@ import { fetch } from "@/utils"; -import getDatasetGraph from "./getDatasetGraph"; +// import getDatasetGraph from "./getDatasetGraph"; import { Dataset } from "../ingestion/useDatasets"; -interface GraphData { - nodes: { id: string; label: string; properties?: object }[]; - edges: { source: string; target: string; label: string }[]; -} +// interface GraphData { +// nodes: { id: string; label: string; properties?: object }[]; +// edges: { source: string; target: string; label: string }[]; +// } -export default async function cognifyDataset(dataset: Dataset, onUpdate: (data: GraphData) => void) { +export default async function cognifyDataset(dataset: Dataset) { // const data = await ( return fetch("/v1/cognify", { method: "POST", @@ -19,16 +19,16 @@ export default async function cognifyDataset(dataset: Dataset, onUpdate: (data: runInBackground: false, }), }) - .then((response) => response.json()) - .then(() => { - return getDatasetGraph(dataset) - .then((data) => { - onUpdate({ - nodes: data.nodes, - edges: data.edges, - }); - }); - }); + .then((response) => response.json()); + // .then(() => { + // return getDatasetGraph(dataset) + // .then((data) => { + // onUpdate({ + // nodes: data.nodes, + // edges: data.edges, + // }); + // }); + // }); // ) // const websocket = new WebSocket(`ws://localhost:8000/api/v1/cognify/subscribe/${data.pipeline_run_id}`); diff --git a/cognee-frontend/src/ui/Layout/Header.tsx b/cognee-frontend/src/ui/Layout/Header.tsx index 465153e1a..a615eeb4f 100644 --- a/cognee-frontend/src/ui/Layout/Header.tsx +++ b/cognee-frontend/src/ui/Layout/Header.tsx @@ -27,10 +27,10 @@ export default function Header() { return ( <> -
+
-
Cognee Graph Interface
+
Cognee Local
diff --git a/cognee/api/v1/notebooks/routers/get_notebooks_router.py b/cognee/api/v1/notebooks/routers/get_notebooks_router.py index 3891214b1..5979f68ff 100644 --- a/cognee/api/v1/notebooks/routers/get_notebooks_router.py +++ b/cognee/api/v1/notebooks/routers/get_notebooks_router.py @@ -36,7 +36,9 @@ def get_notebooks_router(): async def create_notebook_endpoint( notebook_data: NotebookData, user: User = Depends(get_authenticated_user) ): - return await create_notebook(user.id, notebook_data.name, notebook_data.cells) + return await create_notebook( + user.id, notebook_data.name, notebook_data.cells, deletable=True + ) @router.put("/{notebook_id}") async def update_notebook_endpoint( diff --git a/cognee/modules/notebooks/methods/create_notebook.py b/cognee/modules/notebooks/methods/create_notebook.py index c94ea6977..b4915da23 100644 --- a/cognee/modules/notebooks/methods/create_notebook.py +++ b/cognee/modules/notebooks/methods/create_notebook.py @@ -15,7 +15,9 @@ async def create_notebook( deletable: Optional[bool], session: AsyncSession, ) -> Notebook: - notebook = Notebook(name=notebook_name, owner_id=user_id, cells=cells, deletable=deletable) + notebook = Notebook( + name=notebook_name, owner_id=user_id, cells=cells, deletable=deletable or True + ) session.add(notebook) diff --git a/cognee/modules/users/methods/get_default_user.py b/cognee/modules/users/methods/get_default_user.py index 10779e028..48073a884 100644 --- a/cognee/modules/users/methods/get_default_user.py +++ b/cognee/modules/users/methods/get_default_user.py @@ -29,7 +29,9 @@ async def get_default_user() -> SimpleNamespace: # We return a SimpleNamespace to have the same user type as our SaaS # SimpleNamespace is just a dictionary which can be accessed through attributes - auth_data = SimpleNamespace(id=user.id, tenant_id=user.tenant_id, roles=[]) + auth_data = SimpleNamespace( + id=user.id, email=user.email, tenant_id=user.tenant_id, roles=[] + ) return auth_data except Exception as error: if "principals" in str(error.args):