Skip to content

Commit 6fe98a2

Browse files
committed
feat(webapp): restore header docs buttons when the agent is unavailable (part 1)
1 parent f3eb503 commit 6fe98a2

11 files changed

Lines changed: 155 additions & 11 deletions

File tree

  • apps/webapp/app/routes
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.batches
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dev-branches
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables
    • _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.limits

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ExclamationTriangleIcon } from "@heroicons/react/20/solid";
1+
import { BookOpenIcon, ExclamationTriangleIcon } from "@heroicons/react/20/solid";
22
import { json } from "@remix-run/node";
33

44
import { useFetcher, useRevalidator } from "@remix-run/react";
@@ -92,6 +92,7 @@ import { requireUserId } from "~/services/session.server";
9292
import { cn } from "~/utils/cn";
9393
import { formatNumberCompact } from "~/utils/numberFormatter";
9494
import {
95+
docsPath,
9596
EnvironmentParamSchema,
9697
v3AgentTaskPath,
9798
v3PlaygroundAgentPath,
@@ -102,6 +103,7 @@ import {
102103
v3TestTaskPath,
103104
} from "~/utils/pathBuilder";
104105
import { sectionAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
106+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
105107
import type { Handle } from "~/utils/handle";
106108

107109
export const handle: Handle = {
@@ -286,6 +288,15 @@ export default function Page() {
286288
<PageTitle title="Tasks" accessory={<TasksHelpTooltip />} />
287289
<PageAccessories>
288290
<AdminDebugTooltip />
291+
<WhenAgentUnavailable>
292+
<LinkButton
293+
variant={"docs/small"}
294+
LeadingIcon={BookOpenIcon}
295+
to={docsPath("/tasks/overview")}
296+
>
297+
Task docs
298+
</LinkButton>
299+
</WhenAgentUnavailable>
289300
</PageAccessories>
290301
</NavBar>
291302
<PageBody scrollable={false}>

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam/route.tsx‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BookOpenIcon } from "@heroicons/react/24/solid";
12
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
23
import { Suspense, useMemo, useState } from "react";
34
import { TypedAwait, typeddefer, useTypedLoaderData } from "remix-typedjson";
@@ -16,7 +17,7 @@ import { statusColor } from "~/components/primitives/charts/statusColors";
1617
import { CopyableText } from "~/components/primitives/CopyableText";
1718
import { DateTime } from "~/components/primitives/DateTime";
1819
import { Header2 } from "~/components/primitives/Headers";
19-
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
20+
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
2021
import { Paragraph } from "~/components/primitives/Paragraph";
2122
import * as Property from "~/components/primitives/PropertyTable";
2223
import { Spinner } from "~/components/primitives/Spinner";
@@ -42,12 +43,14 @@ import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstan
4243
import { getResizableSnapshot } from "~/services/resizablePanel.server";
4344
import { requireUser } from "~/services/session.server";
4445
import {
46+
docsPath,
4547
EnvironmentParamSchema,
4648
v3EnvironmentPath,
4749
v3PlaygroundAgentPath,
4850
} from "~/utils/pathBuilder";
4951
import { parseFiniteInt } from "~/utils/searchParams";
5052
import { agentsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
53+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
5154
import type { Handle } from "~/utils/handle";
5255

5356
export const handle: Handle = {
@@ -227,6 +230,17 @@ export default function Page() {
227230
</span>
228231
}
229232
/>
233+
<PageAccessories>
234+
<WhenAgentUnavailable>
235+
<LinkButton
236+
variant="docs/small"
237+
LeadingIcon={BookOpenIcon}
238+
to={docsPath("ai-chat/overview")}
239+
>
240+
Agents docs
241+
</LinkButton>
242+
</WhenAgentUnavailable>
243+
</PageAccessories>
230244
</NavBar>
231245
<MetricsLayout.Root>
232246
<MetricsLayout.Filters>

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts/route.tsx‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { parseWithZod } from "@conform-to/zod";
44
import {
55
BellAlertIcon,
66
BellSlashIcon,
7+
BookOpenIcon,
78
EnvelopeIcon,
89
LockClosedIcon,
910
PlusIcon,
@@ -24,7 +25,7 @@ import { Button, LinkButton } from "~/components/primitives/Buttons";
2425
import { ClipboardField } from "~/components/primitives/ClipboardField";
2526
import { DetailCell } from "~/components/primitives/DetailCell";
2627
import { Header2, Header3 } from "~/components/primitives/Headers";
27-
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
28+
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
2829
import { Paragraph } from "~/components/primitives/Paragraph";
2930
import {
3031
Table,
@@ -59,12 +60,14 @@ import { requireUserId } from "~/services/session.server";
5960
import { cn } from "~/utils/cn";
6061
import {
6162
EnvironmentParamSchema,
63+
docsPath,
6264
v3BillingPath,
6365
v3NewProjectAlertPath,
6466
v3ProjectAlertsPath,
6567
} from "~/utils/pathBuilder";
6668
import { alertsWorker } from "~/v3/alertsWorker.server";
6769
import { alertsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
70+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
6871
import type { Handle } from "~/utils/handle";
6972

7073
export const handle: Handle = {
@@ -190,6 +193,17 @@ export default function Page() {
190193
<PageContainer>
191194
<NavBar>
192195
<PageTitle title="Alerts" />
196+
<PageAccessories>
197+
<WhenAgentUnavailable>
198+
<LinkButton
199+
LeadingIcon={BookOpenIcon}
200+
to={docsPath("v3/troubleshooting-alerts")}
201+
variant="docs/small"
202+
>
203+
Alerts docs
204+
</LinkButton>
205+
</WhenAgentUnavailable>
206+
</PageAccessories>
193207
</NavBar>
194208
<PageBody scrollable={false}>
195209
{alertChannels.length > 0 ? (

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
BookOpenIcon,
23
CheckCircleIcon,
34
ExclamationTriangleIcon,
45
KeyIcon,
@@ -74,8 +75,9 @@ import {
7475
import { rbac } from "~/services/rbac.server";
7576
import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder";
7677
import { cn } from "~/utils/cn";
77-
import { EnvironmentParamSchema, v3BillingPath } from "~/utils/pathBuilder";
78+
import { docsPath, EnvironmentParamSchema, v3BillingPath } from "~/utils/pathBuilder";
7879
import { sectionAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
80+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
7981
import type { Handle } from "~/utils/handle";
8082

8183
export const handle: Handle = {
@@ -340,6 +342,16 @@ export default function Page() {
340342
</Property.Item>
341343
</Property.Table>
342344
</AdminDebugTooltip>
345+
346+
<WhenAgentUnavailable>
347+
<LinkButton
348+
variant="docs/small"
349+
LeadingIcon={BookOpenIcon}
350+
to={docsPath("/v3/apikeys")}
351+
>
352+
API keys docs
353+
</LinkButton>
354+
</WhenAgentUnavailable>
343355
</PageAccessories>
344356
</NavBar>
345357
<PageBody scrollable={false}>

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.batches/route.tsx‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ExclamationCircleIcon } from "@heroicons/react/20/solid";
2+
import { BookOpenIcon } from "@heroicons/react/24/solid";
23
import { Outlet, useLocation, useNavigation, useParams } from "@remix-run/react";
34

45
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
@@ -55,9 +56,15 @@ import {
5556
runOpsSplitReadEnabled,
5657
type PrismaClientOrTransaction,
5758
} from "~/db.server";
58-
import { EnvironmentParamSchema, v3BatchPath, v3BatchRunsPath } from "~/utils/pathBuilder";
59+
import {
60+
docsPath,
61+
EnvironmentParamSchema,
62+
v3BatchPath,
63+
v3BatchRunsPath,
64+
} from "~/utils/pathBuilder";
5965
import { throwNotFound } from "~/utils/httpErrors";
6066
import { batchesAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
67+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
6168
import type { Handle } from "~/utils/handle";
6269

6370
export const handle: Handle = {
@@ -122,6 +129,15 @@ export default function Page() {
122129
<PageTitle title="Batches" />
123130
<PageAccessories>
124131
<AdminDebugTooltip />
132+
<WhenAgentUnavailable>
133+
<LinkButton
134+
variant={"docs/small"}
135+
LeadingIcon={BookOpenIcon}
136+
to={docsPath("/triggering")}
137+
>
138+
Batches docs
139+
</LinkButton>
140+
</WhenAgentUnavailable>
125141
</PageAccessories>
126142
</NavBar>
127143
<PageBody scrollable={false}>

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { getFormProps, getInputProps, useForm } from "@conform-to/react";
22
import { parseWithZod } from "@conform-to/zod";
33
import { ArrowUpCircleIcon, CheckIcon, EnvelopeIcon, PlusIcon } from "@heroicons/react/20/solid";
4+
import { BookOpenIcon } from "@heroicons/react/24/solid";
45
import { DialogClose } from "@radix-ui/react-dialog";
56
import { useFetcher, useSearchParams } from "@remix-run/react";
67
import { type ActionFunctionArgs, json, type LoaderFunctionArgs } from "@remix-run/server-runtime";
@@ -66,6 +67,7 @@ import { requireUserId } from "~/services/session.server";
6667
import { cn } from "~/utils/cn";
6768
import {
6869
branchesPath,
70+
docsPath,
6971
EnvironmentParamSchema,
7072
ProjectParamSchema,
7173
v3BillingPath,
@@ -78,6 +80,7 @@ import { NewBranchPanel } from "~/routes/resources.branches.create";
7880
import { BranchesOptions } from "~/utils/branches";
7981
import { IconArrowBearRight2 } from "@tabler/icons-react";
8082
import { branchesAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
83+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
8184
import type { Handle } from "~/utils/handle";
8285
import { pageMeta } from "~/utils/pageTitle";
8386

@@ -256,6 +259,17 @@ export default function Page() {
256259
))}
257260
</Property.Table>
258261
</AdminDebugTooltip>
262+
263+
<WhenAgentUnavailable>
264+
<LinkButton
265+
variant={"docs/small"}
266+
LeadingIcon={BookOpenIcon}
267+
to={docsPath("deployment/preview-branches")}
268+
>
269+
Branches docs
270+
</LinkButton>
271+
</WhenAgentUnavailable>
272+
259273
{limits.isAtLimit ? (
260274
<UpgradePanel
261275
limits={limits}

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions/route.tsx‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { PlusIcon } from "@heroicons/react/20/solid";
1+
import { BookOpenIcon, PlusIcon } from "@heroicons/react/20/solid";
22
import { NoSymbolIcon } from "@heroicons/react/24/solid";
33
import { Outlet, useParams } from "@remix-run/react";
44
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
@@ -49,11 +49,13 @@ import { checkPermissions } from "~/services/routeBuilders/permissions.server";
4949
import { requireUserId } from "~/services/session.server";
5050
import { cn } from "~/utils/cn";
5151
import {
52+
docsPath,
5253
EnvironmentParamSchema,
5354
v3BulkActionPath,
5455
v3CreateBulkActionPath,
5556
} from "~/utils/pathBuilder";
5657
import { bulkActionsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
58+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
5759
import type { Handle } from "~/utils/handle";
5860

5961
export const handle: Handle = {
@@ -140,6 +142,15 @@ export default function Page() {
140142
<PageTitle title="Bulk actions" />
141143
<PageAccessories>
142144
<AdminDebugTooltip />
145+
<WhenAgentUnavailable>
146+
<LinkButton
147+
variant={"docs/small"}
148+
LeadingIcon={BookOpenIcon}
149+
to={docsPath("/bulk-actions")}
150+
>
151+
Bulk actions docs
152+
</LinkButton>
153+
</WhenAgentUnavailable>
143154
<LinkButton
144155
variant="primary/small"
145156
LeadingIcon={PlusIcon}

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments/route.tsx‎

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { ArrowPathIcon, ArrowUturnLeftIcon, NoSymbolIcon } from "@heroicons/react/20/solid";
1+
import {
2+
ArrowPathIcon,
3+
ArrowUturnLeftIcon,
4+
BookOpenIcon,
5+
NoSymbolIcon,
6+
} from "@heroicons/react/20/solid";
27
import { Form, Outlet, useLocation, useNavigate, useNavigation, useParams } from "@remix-run/react";
38

49
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
@@ -26,7 +31,7 @@ import {
2631
DialogTrigger,
2732
DialogFooter,
2833
} from "~/components/primitives/Dialog";
29-
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
34+
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
3035
import { PaginationControls } from "~/components/primitives/Pagination";
3136
import { Paragraph } from "~/components/primitives/Paragraph";
3237
import {
@@ -66,6 +71,7 @@ import { titleCase } from "~/utils";
6671
import { cn } from "~/utils/cn";
6772
import {
6873
EnvironmentParamSchema,
74+
docsPath,
6975
v3DeploymentPath,
7076
v3ProjectSettingsIntegrationsPath,
7177
} from "~/utils/pathBuilder";
@@ -75,6 +81,7 @@ import { useAutoRevalidate } from "~/hooks/useAutoRevalidate";
7581
import { env } from "~/env.server";
7682
import { DialogClose } from "@radix-ui/react-dialog";
7783
import { deploymentsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
84+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
7885
import type { Handle } from "~/utils/handle";
7986

8087
export const handle: Handle = {
@@ -199,6 +206,17 @@ export default function Page() {
199206
<PageContainer>
200207
<NavBar>
201208
<PageTitle title="Deployments" />
209+
<PageAccessories>
210+
<WhenAgentUnavailable>
211+
<LinkButton
212+
variant={"docs/small"}
213+
LeadingIcon={BookOpenIcon}
214+
to={docsPath("/cli-deploy")}
215+
>
216+
Deployments docs
217+
</LinkButton>
218+
</WhenAgentUnavailable>
219+
</PageAccessories>
202220
</NavBar>
203221
<PageBody scrollable={false}>
204222
<ResizablePanelGroup orientation="horizontal" className="h-full max-h-full">

‎apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dev-branches/route.tsx‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { CheckIcon, PlusIcon } from "@heroicons/react/20/solid";
2+
import { BookOpenIcon } from "@heroicons/react/24/solid";
23
import { useSearchParams } from "@remix-run/react";
34
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
45
import { useCallback } from "react";
@@ -39,13 +40,14 @@ import { BranchesPresenter } from "~/presenters/v3/BranchesPresenter.server";
3940
import { logger } from "~/services/logger.server";
4041
import { requireUserId } from "~/services/session.server";
4142
import { cn } from "~/utils/cn";
42-
import { branchesDevPath, ProjectParamSchema } from "~/utils/pathBuilder";
43+
import { branchesDevPath, docsPath, ProjectParamSchema } from "~/utils/pathBuilder";
4344
import { ArchiveButton } from "../resources.branches.archive";
4445
import { NewBranchPanel } from "~/routes/resources.branches.create";
4546
import { BranchesOptions } from "~/utils/branches";
4647
import { IconArrowBearRight2 } from "@tabler/icons-react";
4748
import { useAutoRevalidate } from "~/hooks/useAutoRevalidate";
4849
import { branchesAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
50+
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
4951
import type { Handle } from "~/utils/handle";
5052
import { pageMeta } from "~/utils/pageTitle";
5153

@@ -110,6 +112,17 @@ export default function Page() {
110112
))}
111113
</Property.Table>
112114
</AdminDebugTooltip>
115+
116+
<WhenAgentUnavailable>
117+
<LinkButton
118+
variant={"docs/small"}
119+
LeadingIcon={BookOpenIcon}
120+
to={docsPath("deployment/dev-branches")}
121+
>
122+
Dev branches docs
123+
</LinkButton>
124+
</WhenAgentUnavailable>
125+
113126
{limits.isAtLimit ? (
114127
<BranchLimitReachedDialog limits={limits} />
115128
) : (

0 commit comments

Comments
 (0)