diff --git a/apps/rowboat/app/projects/[projectId]/workflow/error.tsx b/apps/rowboat/app/projects/[projectId]/workflow/error.tsx
new file mode 100644
index 00000000..33e80def
--- /dev/null
+++ b/apps/rowboat/app/projects/[projectId]/workflow/error.tsx
@@ -0,0 +1,11 @@
+"use client";
+import { Alert } from "@heroui/react";
+
+export default function Error(props: { error: Error }) {
+ return
+ There was an error loading the workflow: {props.error.message}
+ ;
+}
\ No newline at end of file
diff --git a/apps/rowboat/app/projects/[projectId]/workflow/page.tsx b/apps/rowboat/app/projects/[projectId]/workflow/page.tsx
index 9fdb221f..4c9ea94a 100644
--- a/apps/rowboat/app/projects/[projectId]/workflow/page.tsx
+++ b/apps/rowboat/app/projects/[projectId]/workflow/page.tsx
@@ -4,14 +4,15 @@ import { USE_RAG, USE_RAG_UPLOADS, USE_RAG_S3_UPLOADS, USE_RAG_SCRAPING, USE_BIL
import { notFound } from "next/navigation";
import { requireActiveBillingSubscription } from '@/app/lib/billing';
import { container } from "@/di/container";
-import { IProjectsRepository } from "@/src/application/repositories/projects.repository.interface";
-import { IDataSourcesRepository } from "@/src/application/repositories/data-sources.repository.interface";
import { getEligibleModels } from "@/app/lib/billing";
import { ModelsResponse } from "@/app/lib/types/billing_types";
+import { requireAuth } from "@/app/lib/auth";
+import { IFetchProjectController } from "@/src/interface-adapters/controllers/projects/fetch-project.controller";
+import { IListDataSourcesController } from "@/src/interface-adapters/controllers/data-sources/list-data-sources.controller";
import { z } from "zod";
-const projectsRepository = container.resolve('projectsRepository');
-const dataSourceRepository = container.resolve('dataSourcesRepository');
+const fetchProjectController = container.resolve('fetchProjectController');
+const listDataSourcesController = container.resolve('listDataSourcesController');
const DEFAULT_MODEL = process.env.PROVIDER_DEFAULT_MODEL || "gpt-4.1";
@@ -25,20 +26,24 @@ export default async function Page(
}
) {
const params = await props.params;
+ const user = await requireAuth();
const customer = await requireActiveBillingSubscription();
console.log('->>> workflow page being rendered');
- const project = await projectsRepository.fetch(params.projectId);
+
+ const project = await fetchProjectController.execute({
+ caller: "user",
+ userId: user._id,
+ projectId: params.projectId,
+ });
if (!project) {
notFound();
}
- const sources = [];
- let cursor = undefined;
- do {
- const result = await dataSourceRepository.list(project.id, undefined, cursor);
- sources.push(...result.items);
- cursor = result.nextCursor;
- } while (cursor);
+ const sources = await listDataSourcesController.execute({
+ caller: "user",
+ userId: user._id,
+ projectId: params.projectId,
+ });
let eligibleModels: z.infer | "*" = '*';
if (USE_BILLING) {