diff --git a/ui/src/App.tsx b/ui/src/App.tsx
index ed6c9c51..1cfdd9df 100644
--- a/ui/src/App.tsx
+++ b/ui/src/App.tsx
@@ -1,5 +1,5 @@
import { useEffect, useRef } from "react";
-import { Navigate, Outlet, Route, Routes, useLocation } from "@/lib/router";
+import { Navigate, Outlet, Route, Routes, useLocation, useParams } from "@/lib/router";
import { useQuery } from "@tanstack/react-query";
import { Button } from "@/components/ui/button";
import { Layout } from "./components/Layout";
@@ -108,6 +108,7 @@ function boardRoutes() {
<>
} />
} />
+ } />
} />
} />
} />
@@ -164,6 +165,57 @@ function LegacySettingsRedirect() {
return ;
}
+function OnboardingRoutePage() {
+ const { companies, loading } = useCompany();
+ const { onboardingOpen, openOnboarding } = useDialog();
+ const { companyPrefix } = useParams<{ companyPrefix?: string }>();
+ const opened = useRef(false);
+ const matchedCompany = companyPrefix
+ ? companies.find((company) => company.issuePrefix.toUpperCase() === companyPrefix.toUpperCase()) ?? null
+ : null;
+
+ useEffect(() => {
+ if (loading || opened.current || onboardingOpen) return;
+ opened.current = true;
+ if (matchedCompany) {
+ openOnboarding({ initialStep: 2, companyId: matchedCompany.id });
+ return;
+ }
+ openOnboarding();
+ }, [companyPrefix, loading, matchedCompany, onboardingOpen, openOnboarding]);
+
+ const title = matchedCompany
+ ? `Add another agent to ${matchedCompany.name}`
+ : companies.length > 0
+ ? "Create another company"
+ : "Create your first company";
+ const description = matchedCompany
+ ? "Run onboarding again to add an agent and a starter task for this company."
+ : companies.length > 0
+ ? "Run onboarding again to create another company and seed its first agent."
+ : "Get started by creating a company and your first agent.";
+
+ return (
+
+
+
{title}
+
{description}
+
+
+
+
+
+ );
+}
+
function CompanyRootRedirect() {
const { companies, selectedCompany, loading } = useCompany();
const { onboardingOpen } = useDialog();
@@ -242,6 +294,7 @@ export function App() {
}>
} />
+ } />
} />
}>
} />