diff --git a/ui/src/App.tsx b/ui/src/App.tsx
index 36c30ce6..50483349 100644
--- a/ui/src/App.tsx
+++ b/ui/src/App.tsx
@@ -12,27 +12,13 @@ import { queryKeys } from "./lib/queryKeys";
import { useCompany } from "./context/CompanyContext";
import { useDialog } from "./context/DialogContext";
import { useNexusMode } from "./hooks/useNexusMode";
-import { loadLastInboxTab } from "./lib/inbox";
import { shouldRedirectCompanylessRouteToOnboarding } from "./lib/onboarding-route";
-const Dashboard = lazy(() => import("./pages/Dashboard").then(m => ({ default: m.Dashboard })));
-const Companies = lazy(() => import("./pages/Companies").then(m => ({ default: m.Companies })));
-const Agents = lazy(() => import("./pages/Agents").then(m => ({ default: m.Agents })));
const AgentDetail = lazy(() => import("./pages/AgentDetail").then(m => ({ default: m.AgentDetail })));
const Projects = lazy(() => import("./pages/Projects").then(m => ({ default: m.Projects })));
const ProjectDetail = lazy(() => import("./pages/ProjectDetail").then(m => ({ default: m.ProjectDetail })));
-const Issues = lazy(() => import("./pages/Issues").then(m => ({ default: m.Issues })));
const IssueDetail = lazy(() => import("./pages/IssueDetail").then(m => ({ default: m.IssueDetail })));
-const Routines = lazy(() => import("./pages/Routines").then(m => ({ default: m.Routines })));
-const RoutineDetail = lazy(() => import("./pages/RoutineDetail").then(m => ({ default: m.RoutineDetail })));
const ExecutionWorkspaceDetail = lazy(() => import("./pages/ExecutionWorkspaceDetail").then(m => ({ default: m.ExecutionWorkspaceDetail })));
-const Goals = lazy(() => import("./pages/Goals").then(m => ({ default: m.Goals })));
-const GoalDetail = lazy(() => import("./pages/GoalDetail").then(m => ({ default: m.GoalDetail })));
-const Approvals = lazy(() => import("./pages/Approvals").then(m => ({ default: m.Approvals })));
-const ApprovalDetail = lazy(() => import("./pages/ApprovalDetail").then(m => ({ default: m.ApprovalDetail })));
-const Costs = lazy(() => import("./pages/Costs").then(m => ({ default: m.Costs })));
-const Activity = lazy(() => import("./pages/Activity").then(m => ({ default: m.Activity })));
-const Inbox = lazy(() => import("./pages/Inbox").then(m => ({ default: m.Inbox })));
const CompanySettings = lazy(() => import("./pages/CompanySettings").then(m => ({ default: m.CompanySettings })));
const CompanySkills = lazy(() => import("./pages/CompanySkills").then(m => ({ default: m.CompanySkills })));
const CompanyExport = lazy(() => import("./pages/CompanyExport").then(m => ({ default: m.CompanyExport })));
@@ -43,7 +29,6 @@ const PluginManager = lazy(() => import("./pages/PluginManager").then(m => ({ de
const PluginSettings = lazy(() => import("./pages/PluginSettings").then(m => ({ default: m.PluginSettings })));
const PluginPage = lazy(() => import("./pages/PluginPage").then(m => ({ default: m.PluginPage })));
const RunTranscriptUxLab = lazy(() => import("./pages/RunTranscriptUxLab").then(m => ({ default: m.RunTranscriptUxLab })));
-const OrgChart = lazy(() => import("./pages/OrgChart").then(m => ({ default: m.OrgChart })));
const NewAgent = lazy(() => import("./pages/NewAgent").then(m => ({ default: m.NewAgent })));
const AuthPage = lazy(() => import("./pages/Auth").then(m => ({ default: m.AuthPage })));
const BoardClaimPage = lazy(() => import("./pages/BoardClaim").then(m => ({ default: m.BoardClaimPage })));
@@ -52,7 +37,6 @@ const InviteLandingPage = lazy(() => import("./pages/InviteLanding").then(m => (
const NotFoundPage = lazy(() => import("./pages/NotFound").then(m => ({ default: m.NotFoundPage })));
const PersonalAssistant = lazy(() => import("./pages/PersonalAssistant").then(m => ({ default: m.PersonalAssistant })));
const ContentStudio = lazy(() => import("./pages/ContentStudio").then(m => ({ default: m.ContentStudio })));
-const ConvertPage = lazy(() => import("./pages/ConvertPage").then(m => ({ default: m.ConvertPage })));
function BootstrapPendingPage({
hasActiveInvite = false,
@@ -156,10 +140,8 @@ function CloudAccessGate() {
function boardRoutes() {
return (
<>
-
{error.message}
} - - {filtered && filtered.length === 0 && ( -{filtered.length} agent{filtered.length !== 1 ? "s" : ""}
- )} - - {error &&{error.message}
} - - {agents && agents.length === 0 && ( -- No agents match the selected filter. -
- )} - - {/* Org chart view */} - {effectiveView === "org" && filteredOrg.length > 0 && ( -- No agents match the selected filter. -
- )} - - {effectiveView === "org" && orgTree && orgTree.length === 0 && ( -- No organizational hierarchy defined. -
- )} -Approval not found.
; - - const payload = approval.payload as RecordApproval confirmed
-- Requesting agent was notified to review this approval and linked issues. -
-{approval.id}
-
- {JSON.stringify(payload, null, 2)}
-
- )}
- {approval.decisionNote && (
- Decision note: {approval.decisionNote}
- )} -{error}
} - {linkedIssues && linkedIssues.length > 0 && ( -Linked Issues
-- Linked issues remain open until the requesting agent follows up and closes them. -
-- Resolve this budget stop from the budget controls on /costs. -
- )} - {approval.status === "pending" && ( - - )} - {approval.status === "revision_requested" && ( - - )} - {approval.status === "rejected" && approval.type === "hire_agent" && linkedAgentId && ( - - )} -{`Select a ${VOCAB.company.toLowerCase()} first.`}
; - } - - if (isLoading) { - return{error.message}
} - {actionError &&{actionError}
} - - {filtered.length === 0 && ( -- {statusFilter === "pending" ? "No pending approvals." : "No approvals yet."} -
-{`Loading ${VOCAB.companies.toLowerCase()}...`}
} - {error &&{error.message}
} -- {company.description} -
- )} -- {`Delete this ${VOCAB.company.toLowerCase()} and all its data? This cannot be undone.`} -
-- Inference spend, platform fees, credits, and live quota windows. -
-Select a start and end date to load data.
- ) : showOverviewLoading ? ( -{(overviewError as Error).message}
- ) : ( - <> - {activeBudgetIncidents.length > 0 ? ( -No cost events yet.
- ) : ( - spendData?.byAgent.map((row) => { - const modelRows = agentModelRows.get(row.agentId) ?? []; - const isExpanded = expandedAgents.has(row.agentId); - const hasBreakdown = modelRows.length > 0; - return ( -No project-attributed run costs yet.
- ) : ( - spendData?.byProject.map((row, index) => ( -{(budgetError as Error).message}
- ) : ( - <> -- Resolve hard stops here by raising the budget or explicitly keeping the scope paused. -
-- {scopeType === "company" - ? `${VOCAB.company}-wide monthly policy.` - : scopeType === "agent" - ? "Recurring monthly spend policies for individual agents." - : "Lifetime spend policies for execution-bound projects."} -
-Select a start and end date to load data.
- ) : ( - <> -No cost events in this period.
- ) : ( -Select a start and end date to load data.
- ) : ( - <> -No billable events in this period.
- ) : ( -Select a start and end date to load data.
- ) : financeLoading ? ( -{(financeError as Error).message}
- ) : ( - <> -No finance events yet.
- ) : ( - financeData?.byBiller.map((row) =>{error.message}
} - - {hasNoAgents && ( -- You have no agents. -
-- {data.budgets.activeIncidents} active budget incident{data.budgets.activeIncidents === 1 ? "" : "s"} -
-- {data.budgets.pausedAgents} agents paused · {data.budgets.pausedProjects} projects paused · {data.budgets.pendingApprovals} pending budget approvals -
-No tasks yet.
-{error.message}
; - if (!goal) return null; - - return ( -No sub-goals.
- ) : ( -No linked projects.
- ) : ( -{error.message}
} - - {goals && goals.length === 0 && ( -{approvalsError.message}
} - {actionError &&{actionError}
} - - {!allLoaded && visibleSections.length === 0 && ( -- {error instanceof Error ? error.message : "Routine not found"} -
- ); - } - - const automationEnabled = routine.status === "active"; - const selectedProject = projects?.find((project) => project.id === routine.projectId) ?? null; - const needsRunConfiguration = routineRunNeedsConfiguration({ - variables: routine.variables ?? [], - project: selectedProject, - isolatedWorkspacesEnabled: experimentalSettings?.enableIsolatedWorkspaces === true, - }); - const automationToggleDisabled = updateRoutineStatus.isPending || routine.status === "archived"; - const automationLabel = routine.status === "archived" ? "Archived" : automationEnabled ? "Active" : "Paused"; - const automationLabelClassName = routine.status === "archived" - ? "text-muted-foreground" - : automationEnabled - ? "text-success" - : "text-muted-foreground"; - - return ( -{secretMessage.title}
-{`Save this now. ${VOCAB.appName} will not show the secret value again.`}
-Concurrency
- -{concurrencyPolicyDescriptions[editDraft.concurrencyPolicy]}
-Catch-up
- -{catchUpPolicyDescriptions[editDraft.catchUpPolicy]}
-Add trigger
-{signingModeDescriptions[newTrigger.signingMode]}
-No triggers configured yet.
- ) : ( -No runs yet.
- ) : ( -No activity yet.
- ) : ( -- Recurring work definitions that materialize into auditable execution issues. -
-| Name | -Project | -Agent | -Last run | -Enabled | -- |
|---|---|---|---|---|---|
|
-
-
- {routine.title}
-
- {(isArchived || routine.status === "paused") && (
-
-
- {isArchived ? "archived" : "paused"}
-
- )}
- |
-
- {routine.projectId ? (
-
-
- {projectById.get(routine.projectId)?.name ?? "Unknown"}
-
- ) : (
- —
- )}
- |
-
- {routine.assigneeAgentId ? (() => {
- const agent = agentById.get(routine.assigneeAgentId);
- return agent ? (
-
-
- ) : (
- Unknown
- );
- })() : (
- —
- )}
- |
-
- {formatLastRunTimestamp(routine.lastRun?.triggeredAt)}
- {routine.lastRun ? (
- {routine.lastRun.status.replaceAll("_", " ")}
- ) : null}
- |
- e.stopPropagation()}>
-
-
-
- {isArchived ? "Archived" : enabled ? "On" : "Off"}
-
-
- |
- e.stopPropagation()}>
- |
-