docs(website): add provider pages and refresh docs
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import { LandingPage } from "~/components/landing-page";
|
||||
import { getAgentPage } from "~/data/agent-pages";
|
||||
import { pageMeta } from "~/meta";
|
||||
|
||||
export function agentRouteOptions(slug: string) {
|
||||
const page = getAgentPage(slug);
|
||||
return {
|
||||
head: () => ({ meta: pageMeta(page.metaTitle, page.metaDescription) }),
|
||||
component: function AgentLandingPage() {
|
||||
return <LandingPage title={page.title} subtitle={page.subtitle} />;
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -33,6 +33,7 @@ const SVG_OVERFLOW_VISIBLE_STYLE = { overflow: "visible" as const };
|
||||
const PHONE_PERSPECTIVE_STYLE = { minHeight: 480, perspective: 1200 };
|
||||
import { CursorFieldProvider } from "~/components/butterfly";
|
||||
import { CommandDialog } from "~/components/command-dialog";
|
||||
import { AGENT_PAGES } from "~/data/agent-pages";
|
||||
import {
|
||||
appStoreUrl,
|
||||
playStoreUrl,
|
||||
@@ -142,6 +143,9 @@ const OPENCODE_BADGE_ICON = <OpenCodeIcon className="h-6 w-6" />;
|
||||
const COPILOT_BADGE_ICON = <CopilotIcon className="h-6 w-6" />;
|
||||
const PI_BADGE_ICON = <PiIcon className="h-6 w-6" />;
|
||||
|
||||
const FEATURED_AGENT_COUNT = 5;
|
||||
const ADDITIONAL_AGENT_COUNT = AGENT_PAGES.length - FEATURED_AGENT_COUNT;
|
||||
|
||||
function AgentBadge({ name, icon }: { name: string; icon: React.ReactNode }) {
|
||||
const [hovered, setHovered] = React.useState(false);
|
||||
const handleMouseEnter = React.useCallback(() => setHovered(true), []);
|
||||
@@ -222,7 +226,7 @@ function MultiProviderSection() {
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4 sm:w-2/3">
|
||||
<div className="grid grid-cols-2 sm:grid-cols-3 gap-4 sm:w-full">
|
||||
{providers.slice(3).map((p) => (
|
||||
<div
|
||||
key={p.name}
|
||||
@@ -232,6 +236,12 @@ function MultiProviderSection() {
|
||||
<span className="font-medium">{p.name}</span>
|
||||
</div>
|
||||
))}
|
||||
<a
|
||||
href="/agents"
|
||||
className="flex items-center justify-center gap-3 rounded-xl border border-dashed border-white/10 bg-white/[0.01] px-5 py-4 text-white/50 hover:text-white/80 hover:border-white/20 hover:bg-white/[0.03] transition-colors"
|
||||
>
|
||||
<span className="font-medium">+{ADDITIONAL_AGENT_COUNT} more</span>
|
||||
</a>
|
||||
</div>
|
||||
</FeatureSection>
|
||||
);
|
||||
@@ -910,6 +920,12 @@ function GetStarted() {
|
||||
<AgentBadge name="Copilot" icon={COPILOT_BADGE_ICON} />
|
||||
<AgentBadge name="Pi" icon={PI_BADGE_ICON} />
|
||||
</div>
|
||||
<a
|
||||
href="/agents"
|
||||
className="text-xs text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
+{ADDITIONAL_AGENT_COUNT} more
|
||||
</a>
|
||||
</div>
|
||||
</motion.div>
|
||||
);
|
||||
|
||||
@@ -72,6 +72,12 @@ export function SiteFooter({ width = "default" }: SiteFooterProps) {
|
||||
>
|
||||
OpenCode
|
||||
</a>
|
||||
<a
|
||||
href="/agents"
|
||||
className="block text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
All providers
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div className="space-y-3">
|
||||
|
||||
@@ -0,0 +1,379 @@
|
||||
// Source of truth for per-agent marketing landing pages.
|
||||
// To add a new agent, append an entry here and create a 4-line route file at
|
||||
// `src/routes/<slug>.tsx`. The sitemap (vite.config) reads `AGENT_PAGE_SLUGS`.
|
||||
|
||||
export interface AgentPage {
|
||||
slug: string;
|
||||
name: string;
|
||||
title: string;
|
||||
subtitle: string;
|
||||
metaTitle: string;
|
||||
metaDescription: string;
|
||||
}
|
||||
|
||||
export const AGENT_PAGES = [
|
||||
{
|
||||
slug: "claude-code",
|
||||
name: "Claude Code",
|
||||
title: "Ship with Claude Code from your phone",
|
||||
subtitle:
|
||||
"Launch agents, check on progress, and merge from anywhere. Your Claude Code setup, your machine, your pocket.",
|
||||
metaTitle: "Claude Code Mobile App – Ship from your phone | Paseo",
|
||||
metaDescription:
|
||||
"Run Claude Code from your phone. Launch agents, check on progress, review diffs, and merge — all from your pocket. Self-hosted, your code stays on your machine.",
|
||||
},
|
||||
{
|
||||
slug: "codex",
|
||||
name: "Codex",
|
||||
title: "Run Codex from anywhere",
|
||||
subtitle:
|
||||
"Kick off Codex agents on your machine from your phone. Check in on the train, review on the couch, merge from the park.",
|
||||
metaTitle: "Codex Mobile App – Run Codex from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run OpenAI Codex from your phone. Kick off agents, monitor progress, and ship code without being at your desk. Self-hosted, your code never leaves your machine.",
|
||||
},
|
||||
{
|
||||
slug: "opencode",
|
||||
name: "OpenCode",
|
||||
title: "Run OpenCode from your phone",
|
||||
subtitle:
|
||||
"Launch agents, check on builds, and ship code from anywhere. Same setup, same machine, just not at your desk.",
|
||||
metaTitle: "OpenCode Mobile App – Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run OpenCode from your phone. Launch agents, watch them work, and ship code from wherever you are. Self-hosted, open source, your code stays local.",
|
||||
},
|
||||
{
|
||||
slug: "copilot",
|
||||
name: "GitHub Copilot",
|
||||
title: "GitHub Copilot, mobile",
|
||||
subtitle:
|
||||
"Drive Copilot from your phone. Kick off changes, watch them land, ship without sitting down at your desk.",
|
||||
metaTitle: "GitHub Copilot Mobile App – Drive Copilot from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Control GitHub Copilot from your phone. Launch sessions, monitor progress, merge from anywhere. Your machine, your account, your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "pi",
|
||||
name: "Pi",
|
||||
title: "Run Pi from your phone",
|
||||
subtitle: "Tiny agent, full control. Launch Pi from anywhere and check in when it matters.",
|
||||
metaTitle: "Pi Mobile App – Run pi from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run the pi coding agent from your phone. Launch sessions on your machine, check progress, merge from your pocket. Self-hosted and open source.",
|
||||
},
|
||||
{
|
||||
slug: "cursor",
|
||||
name: "Cursor",
|
||||
title: "Cursor, in your pocket",
|
||||
subtitle: "Send tasks to Cursor on your machine, watch them run, review the diff on the train.",
|
||||
metaTitle: "Cursor Mobile App – Drive Cursor from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Cursor from your phone. Launch tasks, monitor output, review diffs, and merge — all from your pocket. Self-hosted, your code stays local.",
|
||||
},
|
||||
{
|
||||
slug: "gemini",
|
||||
name: "Gemini CLI",
|
||||
title: "Run Gemini from anywhere",
|
||||
subtitle: "Kick off Google's Gemini CLI from your phone. Real coding work, no laptop required.",
|
||||
metaTitle: "Gemini CLI Mobile App – Run Gemini from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Google's Gemini CLI from your phone. Launch agents, monitor progress, and ship from anywhere. Self-hosted, your code never leaves your machine.",
|
||||
},
|
||||
{
|
||||
slug: "hermes",
|
||||
name: "Hermes Agent",
|
||||
title: "Hermes Agent, on your phone",
|
||||
subtitle:
|
||||
"Drive Nous Research's Hermes Agent from anywhere. Your machine does the work, your pocket runs the show.",
|
||||
metaTitle: "Hermes Agent Mobile App – Drive Hermes from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Nous Research's Hermes Agent from your phone. Launch sessions, monitor progress, ship code from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "qwen-code",
|
||||
name: "Qwen Code",
|
||||
title: "Qwen Code from anywhere",
|
||||
subtitle: "Send Alibaba's Qwen agent to work on your machine while you're not at your desk.",
|
||||
metaTitle: "Qwen Code Mobile App – Run Qwen from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Alibaba's Qwen Code from your phone. Launch agents on your machine, monitor progress, and merge from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "kimi",
|
||||
name: "Kimi Code CLI",
|
||||
title: "Kimi Code from your phone",
|
||||
subtitle:
|
||||
"Moonshot AI's Kimi Code CLI on your machine, controlled from anywhere. Same setup, no laptop.",
|
||||
metaTitle: "Kimi Code Mobile App – Run Kimi Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Moonshot AI's Kimi Code CLI from your phone. Launch sessions, monitor progress, ship from your pocket. Self-hosted and private.",
|
||||
},
|
||||
{
|
||||
slug: "amp",
|
||||
name: "Amp",
|
||||
title: "Amp, mobile",
|
||||
subtitle:
|
||||
"Drive the frontier coding agent from your phone. Kick off work, monitor progress, merge from anywhere.",
|
||||
metaTitle: "Amp Mobile App – Run Amp from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Amp, the frontier coding agent, from your phone. Launch tasks on your machine, watch them ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "auggie",
|
||||
name: "Auggie CLI",
|
||||
title: "Auggie, in your pocket",
|
||||
subtitle:
|
||||
"Run Augment Code's agent from your phone. Industry-leading context, anywhere you are.",
|
||||
metaTitle: "Auggie Mobile App – Drive Augment Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Augment Code's Auggie CLI from your phone. Launch sessions on your machine, monitor progress, ship code from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "cline",
|
||||
name: "Cline",
|
||||
title: "Cline from anywhere",
|
||||
subtitle:
|
||||
"Autonomous coding agent on your machine, controlled from your phone. Watch it work, jump in when needed.",
|
||||
metaTitle: "Cline Mobile App – Run Cline from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Cline, the autonomous coding agent, from your phone. Launch tasks, monitor output, review diffs from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "codebuddy",
|
||||
name: "Codebuddy Code",
|
||||
title: "Codebuddy from your phone",
|
||||
subtitle:
|
||||
"Run Tencent Cloud's intelligent coding tool from anywhere. Your dev box, your pocket.",
|
||||
metaTitle: "Codebuddy Code Mobile App – Run Codebuddy from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Tencent Cloud's Codebuddy Code from your phone. Launch sessions on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "cortex-code",
|
||||
name: "Cortex Code",
|
||||
title: "Cortex Code, mobile",
|
||||
subtitle:
|
||||
"Snowflake's coding agent on your machine, driven from your phone. No laptop required.",
|
||||
metaTitle: "Cortex Code Mobile App – Run Cortex Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Snowflake's Cortex Code from your phone. Launch agents, monitor progress, and ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "corust",
|
||||
name: "Corust Agent",
|
||||
title: "Corust, in your pocket",
|
||||
subtitle: "Build Rust with a seasoned partner on your machine, driven from your phone.",
|
||||
metaTitle: "Corust Mobile App – Drive Corust agent from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run the Corust Rust-focused coding agent from your phone. Launch tasks on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "crow",
|
||||
name: "crow-cli",
|
||||
title: "crow-cli from your phone",
|
||||
subtitle:
|
||||
"Minimal native coding agent on your machine, controlled from anywhere. Lean, ACP-native, mobile.",
|
||||
metaTitle: "crow-cli Mobile App – Run crow-cli from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive crow-cli, the minimal ACP-native coding agent, from your phone. Launch tasks on your machine, monitor from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "deepagents",
|
||||
name: "DeepAgents",
|
||||
title: "DeepAgents from your phone",
|
||||
subtitle:
|
||||
"LangChain-powered coding agent on your machine, driven from anywhere. Batteries included.",
|
||||
metaTitle: "DeepAgents Mobile App – Run DeepAgents from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run the LangChain DeepAgents coding agent from your phone. Launch sessions, monitor progress, and ship code from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "dimcode",
|
||||
name: "DimCode",
|
||||
title: "DimCode from anywhere",
|
||||
subtitle: "Leading models, one command — driven from your phone. Your machine does the work.",
|
||||
metaTitle: "DimCode Mobile App – Run DimCode from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive DimCode, the multi-model coding agent, from your phone. Launch tasks on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "dirac",
|
||||
name: "Dirac",
|
||||
title: "Dirac, mobile",
|
||||
subtitle:
|
||||
"Hash-anchored parallel edits on your machine, driven from your pocket. Faster, cheaper, fully open source.",
|
||||
metaTitle: "Dirac Mobile App – Run Dirac from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run the Dirac coding agent from your phone. Hash-anchored parallel edits, AST manipulation, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "factory-droid",
|
||||
name: "Factory Droid",
|
||||
title: "Factory Droid from anywhere",
|
||||
subtitle:
|
||||
"Drive Factory's coding agent from your phone. Kick it off, check in, ship from your pocket.",
|
||||
metaTitle: "Factory Droid Mobile App – Run Droid from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Factory AI's Droid coding agent from your phone. Launch sessions on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "fast-agent",
|
||||
name: "fast-agent",
|
||||
title: "fast-agent, mobile",
|
||||
subtitle:
|
||||
"Multi-provider agent on your machine, controlled from anywhere. Send work, get results.",
|
||||
metaTitle: "fast-agent Mobile App – Run fast-agent from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive fast-agent, the multi-provider coding agent, from your phone. Launch tasks on your machine, monitor from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "glm",
|
||||
name: "GLM Agent",
|
||||
title: "GLM Agent from your phone",
|
||||
subtitle:
|
||||
"Zhipu AI's GLM coding agent on your machine, driven from anywhere. Streaming, mid-session model switching, mobile.",
|
||||
metaTitle: "GLM Agent Mobile App – Run GLM from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Zhipu AI's GLM coding agent from your phone. Launch sessions, monitor progress, and ship code from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "goose",
|
||||
name: "goose",
|
||||
title: "Run goose from your phone",
|
||||
subtitle:
|
||||
"Block's open-source agent on your laptop, driven from anywhere. Local, extensible, mobile.",
|
||||
metaTitle: "goose Mobile App – Run goose from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Block's goose, the local open-source AI agent, from your phone. Launch tasks on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "junie",
|
||||
name: "Junie",
|
||||
title: "Junie, on your phone",
|
||||
subtitle:
|
||||
"JetBrains' coding agent on your dev box, controlled from your pocket. Real work, no IDE required.",
|
||||
metaTitle: "Junie Mobile App – Run Junie from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive JetBrains' Junie coding agent from your phone. Launch sessions on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "kilo",
|
||||
name: "Kilo Code",
|
||||
title: "Kilo Code from anywhere",
|
||||
subtitle: "Kilo Code on your machine, driven from your phone. Send tasks, watch them ship.",
|
||||
metaTitle: "Kilo Code Mobile App – Run Kilo Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Kilo Code, the open-source coding agent, from your phone. Launch tasks on your machine via Kilo CLI, monitor progress, merge from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "minion-code",
|
||||
name: "Minion Code",
|
||||
title: "Minion Code, mobile",
|
||||
subtitle:
|
||||
"Minion-framework agent on your machine, controlled from your phone. Rich tooling, full freedom.",
|
||||
metaTitle: "Minion Code Mobile App – Run Minion Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Minion Code, the Minion-framework coding agent, from your phone. Launch sessions on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "mistral-vibe",
|
||||
name: "Mistral Vibe",
|
||||
title: "Mistral Vibe from your phone",
|
||||
subtitle:
|
||||
"Mistral's open-source coding assistant, driven from anywhere. Your machine, your pocket.",
|
||||
metaTitle: "Mistral Vibe Mobile App – Run Mistral Vibe from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Mistral's open-source Vibe coding assistant from your phone. Launch sessions on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "nova",
|
||||
name: "Nova",
|
||||
title: "Nova, in your pocket",
|
||||
subtitle:
|
||||
"Compass AI's software engineer on your machine, controlled from your phone. Send work, ship code.",
|
||||
metaTitle: "Nova Mobile App – Run Nova from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Compass AI's Nova coding agent from your phone. Launch sessions on your machine, monitor progress, merge from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "poolside",
|
||||
name: "Poolside",
|
||||
title: "Poolside, mobile",
|
||||
subtitle:
|
||||
"Drive Poolside's coding agent from anywhere. Kick off the work, watch it land, merge on the move.",
|
||||
metaTitle: "Poolside Mobile App – Run Poolside from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Poolside's coding agent from your phone. Launch tasks on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "qoder",
|
||||
name: "Qoder CLI",
|
||||
title: "Qoder from your phone",
|
||||
subtitle:
|
||||
"Agentic coding assistant on your machine, controlled from anywhere. No laptop required.",
|
||||
metaTitle: "Qoder Mobile App – Run Qoder from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Qoder, the agentic coding assistant, from your phone. Launch sessions on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "sigit",
|
||||
name: "siGit Code",
|
||||
title: "siGit Code, mobile",
|
||||
subtitle:
|
||||
"Local-first coding agent on your machine, driven from your phone. Optionally on-device LLM inference.",
|
||||
metaTitle: "siGit Code Mobile App – Run siGit from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run siGit Code, the local-first coding agent, from your phone. Launch sessions on your machine, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "stakpak",
|
||||
name: "Stakpak",
|
||||
title: "Stakpak DevOps from anywhere",
|
||||
subtitle:
|
||||
"Open-source DevOps agent on your machine, controlled from your phone. Rust speed, enterprise security.",
|
||||
metaTitle: "Stakpak Mobile App – Run Stakpak from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Stakpak, the Rust-based DevOps agent, from your phone. Launch tasks on your machine, monitor from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "vtcode",
|
||||
name: "VT Code",
|
||||
title: "VT Code, mobile",
|
||||
subtitle:
|
||||
"Multi-provider coding agent on your machine. Send tasks from anywhere, ship from your pocket.",
|
||||
metaTitle: "VT Code Mobile App – Run VT Code from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run VT Code, the open-source multi-provider coding agent, from your phone. Launch sessions, monitor progress, ship from anywhere.",
|
||||
},
|
||||
{
|
||||
slug: "agoragentic",
|
||||
name: "Agoragentic",
|
||||
title: "Agoragentic from your phone",
|
||||
subtitle: "174+ AI capabilities on your machine, driven from anywhere. Browse, invoke, ship.",
|
||||
metaTitle: "Agoragentic Mobile App – Run Agoragentic from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Drive Agoragentic, the AI agent marketplace, from your phone. Launch sessions on your machine, ship from your pocket.",
|
||||
},
|
||||
{
|
||||
slug: "autohand",
|
||||
name: "Autohand Code",
|
||||
title: "Autohand Code, mobile",
|
||||
subtitle:
|
||||
"Autohand's coding agent on your machine, controlled from your phone. Real work, no laptop.",
|
||||
metaTitle: "Autohand Code Mobile App – Run Autohand from anywhere | Paseo",
|
||||
metaDescription:
|
||||
"Run Autohand AI's coding agent from your phone. Launch sessions on your machine, monitor progress, ship from anywhere.",
|
||||
},
|
||||
] as const satisfies readonly AgentPage[];
|
||||
|
||||
export const AGENT_PAGE_SLUGS: readonly string[] = AGENT_PAGES.map((p) => p.slug);
|
||||
|
||||
const AGENT_PAGE_MAP_INTERNAL: Record<string, AgentPage> = Object.fromEntries(
|
||||
AGENT_PAGES.map((p) => [p.slug, p]),
|
||||
);
|
||||
|
||||
export function getAgentPage(slug: string): AgentPage {
|
||||
const page = AGENT_PAGE_MAP_INTERNAL[slug];
|
||||
if (!page) throw new Error(`Unknown agent page slug: ${slug}`);
|
||||
return page;
|
||||
}
|
||||
@@ -9,31 +9,160 @@
|
||||
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
||||
|
||||
import { Route as rootRouteImport } from "./routes/__root";
|
||||
import { Route as VtcodeRouteImport } from "./routes/vtcode";
|
||||
import { Route as StakpakRouteImport } from "./routes/stakpak";
|
||||
import { Route as SigitRouteImport } from "./routes/sigit";
|
||||
import { Route as QwenCodeRouteImport } from "./routes/qwen-code";
|
||||
import { Route as QoderRouteImport } from "./routes/qoder";
|
||||
import { Route as PrivacyRouteImport } from "./routes/privacy";
|
||||
import { Route as PoolsideRouteImport } from "./routes/poolside";
|
||||
import { Route as PiRouteImport } from "./routes/pi";
|
||||
import { Route as OpencodeRouteImport } from "./routes/opencode";
|
||||
import { Route as NovaRouteImport } from "./routes/nova";
|
||||
import { Route as MistralVibeRouteImport } from "./routes/mistral-vibe";
|
||||
import { Route as MinionCodeRouteImport } from "./routes/minion-code";
|
||||
import { Route as KimiRouteImport } from "./routes/kimi";
|
||||
import { Route as KiloRouteImport } from "./routes/kilo";
|
||||
import { Route as JunieRouteImport } from "./routes/junie";
|
||||
import { Route as HermesRouteImport } from "./routes/hermes";
|
||||
import { Route as GooseRouteImport } from "./routes/goose";
|
||||
import { Route as GlmRouteImport } from "./routes/glm";
|
||||
import { Route as GeminiRouteImport } from "./routes/gemini";
|
||||
import { Route as FastAgentRouteImport } from "./routes/fast-agent";
|
||||
import { Route as FactoryDroidRouteImport } from "./routes/factory-droid";
|
||||
import { Route as DownloadRouteImport } from "./routes/download";
|
||||
import { Route as DocsRouteImport } from "./routes/docs";
|
||||
import { Route as DiracRouteImport } from "./routes/dirac";
|
||||
import { Route as DimcodeRouteImport } from "./routes/dimcode";
|
||||
import { Route as DeepagentsRouteImport } from "./routes/deepagents";
|
||||
import { Route as CursorRouteImport } from "./routes/cursor";
|
||||
import { Route as CrowRouteImport } from "./routes/crow";
|
||||
import { Route as CorustRouteImport } from "./routes/corust";
|
||||
import { Route as CortexCodeRouteImport } from "./routes/cortex-code";
|
||||
import { Route as CopilotRouteImport } from "./routes/copilot";
|
||||
import { Route as CodexRouteImport } from "./routes/codex";
|
||||
import { Route as CodebuddyRouteImport } from "./routes/codebuddy";
|
||||
import { Route as CloudRouteImport } from "./routes/cloud";
|
||||
import { Route as ClineRouteImport } from "./routes/cline";
|
||||
import { Route as ClaudeCodeRouteImport } from "./routes/claude-code";
|
||||
import { Route as ChangelogRouteImport } from "./routes/changelog";
|
||||
import { Route as BlogRouteImport } from "./routes/blog";
|
||||
import { Route as AutohandRouteImport } from "./routes/autohand";
|
||||
import { Route as AuggieRouteImport } from "./routes/auggie";
|
||||
import { Route as AmpRouteImport } from "./routes/amp";
|
||||
import { Route as AgoragenticRouteImport } from "./routes/agoragentic";
|
||||
import { Route as AgentsRouteImport } from "./routes/agents";
|
||||
import { Route as IndexRouteImport } from "./routes/index";
|
||||
import { Route as DocsIndexRouteImport } from "./routes/docs/index";
|
||||
import { Route as BlogIndexRouteImport } from "./routes/blog/index";
|
||||
import { Route as DocsSplatRouteImport } from "./routes/docs/$";
|
||||
import { Route as BlogSplatRouteImport } from "./routes/blog/$";
|
||||
|
||||
const VtcodeRoute = VtcodeRouteImport.update({
|
||||
id: "/vtcode",
|
||||
path: "/vtcode",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const StakpakRoute = StakpakRouteImport.update({
|
||||
id: "/stakpak",
|
||||
path: "/stakpak",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const SigitRoute = SigitRouteImport.update({
|
||||
id: "/sigit",
|
||||
path: "/sigit",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const QwenCodeRoute = QwenCodeRouteImport.update({
|
||||
id: "/qwen-code",
|
||||
path: "/qwen-code",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const QoderRoute = QoderRouteImport.update({
|
||||
id: "/qoder",
|
||||
path: "/qoder",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const PrivacyRoute = PrivacyRouteImport.update({
|
||||
id: "/privacy",
|
||||
path: "/privacy",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const PoolsideRoute = PoolsideRouteImport.update({
|
||||
id: "/poolside",
|
||||
path: "/poolside",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const PiRoute = PiRouteImport.update({
|
||||
id: "/pi",
|
||||
path: "/pi",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const OpencodeRoute = OpencodeRouteImport.update({
|
||||
id: "/opencode",
|
||||
path: "/opencode",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const NovaRoute = NovaRouteImport.update({
|
||||
id: "/nova",
|
||||
path: "/nova",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const MistralVibeRoute = MistralVibeRouteImport.update({
|
||||
id: "/mistral-vibe",
|
||||
path: "/mistral-vibe",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const MinionCodeRoute = MinionCodeRouteImport.update({
|
||||
id: "/minion-code",
|
||||
path: "/minion-code",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const KimiRoute = KimiRouteImport.update({
|
||||
id: "/kimi",
|
||||
path: "/kimi",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const KiloRoute = KiloRouteImport.update({
|
||||
id: "/kilo",
|
||||
path: "/kilo",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const JunieRoute = JunieRouteImport.update({
|
||||
id: "/junie",
|
||||
path: "/junie",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const HermesRoute = HermesRouteImport.update({
|
||||
id: "/hermes",
|
||||
path: "/hermes",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const GooseRoute = GooseRouteImport.update({
|
||||
id: "/goose",
|
||||
path: "/goose",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const GlmRoute = GlmRouteImport.update({
|
||||
id: "/glm",
|
||||
path: "/glm",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const GeminiRoute = GeminiRouteImport.update({
|
||||
id: "/gemini",
|
||||
path: "/gemini",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const FastAgentRoute = FastAgentRouteImport.update({
|
||||
id: "/fast-agent",
|
||||
path: "/fast-agent",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const FactoryDroidRoute = FactoryDroidRouteImport.update({
|
||||
id: "/factory-droid",
|
||||
path: "/factory-droid",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const DownloadRoute = DownloadRouteImport.update({
|
||||
id: "/download",
|
||||
path: "/download",
|
||||
@@ -44,16 +173,66 @@ const DocsRoute = DocsRouteImport.update({
|
||||
path: "/docs",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const DiracRoute = DiracRouteImport.update({
|
||||
id: "/dirac",
|
||||
path: "/dirac",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const DimcodeRoute = DimcodeRouteImport.update({
|
||||
id: "/dimcode",
|
||||
path: "/dimcode",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const DeepagentsRoute = DeepagentsRouteImport.update({
|
||||
id: "/deepagents",
|
||||
path: "/deepagents",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CursorRoute = CursorRouteImport.update({
|
||||
id: "/cursor",
|
||||
path: "/cursor",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CrowRoute = CrowRouteImport.update({
|
||||
id: "/crow",
|
||||
path: "/crow",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CorustRoute = CorustRouteImport.update({
|
||||
id: "/corust",
|
||||
path: "/corust",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CortexCodeRoute = CortexCodeRouteImport.update({
|
||||
id: "/cortex-code",
|
||||
path: "/cortex-code",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CopilotRoute = CopilotRouteImport.update({
|
||||
id: "/copilot",
|
||||
path: "/copilot",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CodexRoute = CodexRouteImport.update({
|
||||
id: "/codex",
|
||||
path: "/codex",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CodebuddyRoute = CodebuddyRouteImport.update({
|
||||
id: "/codebuddy",
|
||||
path: "/codebuddy",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const CloudRoute = CloudRouteImport.update({
|
||||
id: "/cloud",
|
||||
path: "/cloud",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const ClineRoute = ClineRouteImport.update({
|
||||
id: "/cline",
|
||||
path: "/cline",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const ClaudeCodeRoute = ClaudeCodeRouteImport.update({
|
||||
id: "/claude-code",
|
||||
path: "/claude-code",
|
||||
@@ -69,6 +248,31 @@ const BlogRoute = BlogRouteImport.update({
|
||||
path: "/blog",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const AutohandRoute = AutohandRouteImport.update({
|
||||
id: "/autohand",
|
||||
path: "/autohand",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const AuggieRoute = AuggieRouteImport.update({
|
||||
id: "/auggie",
|
||||
path: "/auggie",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const AmpRoute = AmpRouteImport.update({
|
||||
id: "/amp",
|
||||
path: "/amp",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const AgoragenticRoute = AgoragenticRouteImport.update({
|
||||
id: "/agoragentic",
|
||||
path: "/agoragentic",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const AgentsRoute = AgentsRouteImport.update({
|
||||
id: "/agents",
|
||||
path: "/agents",
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any);
|
||||
const IndexRoute = IndexRouteImport.update({
|
||||
id: "/",
|
||||
path: "/",
|
||||
@@ -97,15 +301,49 @@ const BlogSplatRoute = BlogSplatRouteImport.update({
|
||||
|
||||
export interface FileRoutesByFullPath {
|
||||
"/": typeof IndexRoute;
|
||||
"/agents": typeof AgentsRoute;
|
||||
"/agoragentic": typeof AgoragenticRoute;
|
||||
"/amp": typeof AmpRoute;
|
||||
"/auggie": typeof AuggieRoute;
|
||||
"/autohand": typeof AutohandRoute;
|
||||
"/blog": typeof BlogRouteWithChildren;
|
||||
"/changelog": typeof ChangelogRoute;
|
||||
"/claude-code": typeof ClaudeCodeRoute;
|
||||
"/cline": typeof ClineRoute;
|
||||
"/cloud": typeof CloudRoute;
|
||||
"/codebuddy": typeof CodebuddyRoute;
|
||||
"/codex": typeof CodexRoute;
|
||||
"/copilot": typeof CopilotRoute;
|
||||
"/cortex-code": typeof CortexCodeRoute;
|
||||
"/corust": typeof CorustRoute;
|
||||
"/crow": typeof CrowRoute;
|
||||
"/cursor": typeof CursorRoute;
|
||||
"/deepagents": typeof DeepagentsRoute;
|
||||
"/dimcode": typeof DimcodeRoute;
|
||||
"/dirac": typeof DiracRoute;
|
||||
"/docs": typeof DocsRouteWithChildren;
|
||||
"/download": typeof DownloadRoute;
|
||||
"/factory-droid": typeof FactoryDroidRoute;
|
||||
"/fast-agent": typeof FastAgentRoute;
|
||||
"/gemini": typeof GeminiRoute;
|
||||
"/glm": typeof GlmRoute;
|
||||
"/goose": typeof GooseRoute;
|
||||
"/hermes": typeof HermesRoute;
|
||||
"/junie": typeof JunieRoute;
|
||||
"/kilo": typeof KiloRoute;
|
||||
"/kimi": typeof KimiRoute;
|
||||
"/minion-code": typeof MinionCodeRoute;
|
||||
"/mistral-vibe": typeof MistralVibeRoute;
|
||||
"/nova": typeof NovaRoute;
|
||||
"/opencode": typeof OpencodeRoute;
|
||||
"/pi": typeof PiRoute;
|
||||
"/poolside": typeof PoolsideRoute;
|
||||
"/privacy": typeof PrivacyRoute;
|
||||
"/qoder": typeof QoderRoute;
|
||||
"/qwen-code": typeof QwenCodeRoute;
|
||||
"/sigit": typeof SigitRoute;
|
||||
"/stakpak": typeof StakpakRoute;
|
||||
"/vtcode": typeof VtcodeRoute;
|
||||
"/blog/$": typeof BlogSplatRoute;
|
||||
"/docs/$": typeof DocsSplatRoute;
|
||||
"/blog/": typeof BlogIndexRoute;
|
||||
@@ -113,13 +351,47 @@ export interface FileRoutesByFullPath {
|
||||
}
|
||||
export interface FileRoutesByTo {
|
||||
"/": typeof IndexRoute;
|
||||
"/agents": typeof AgentsRoute;
|
||||
"/agoragentic": typeof AgoragenticRoute;
|
||||
"/amp": typeof AmpRoute;
|
||||
"/auggie": typeof AuggieRoute;
|
||||
"/autohand": typeof AutohandRoute;
|
||||
"/changelog": typeof ChangelogRoute;
|
||||
"/claude-code": typeof ClaudeCodeRoute;
|
||||
"/cline": typeof ClineRoute;
|
||||
"/cloud": typeof CloudRoute;
|
||||
"/codebuddy": typeof CodebuddyRoute;
|
||||
"/codex": typeof CodexRoute;
|
||||
"/copilot": typeof CopilotRoute;
|
||||
"/cortex-code": typeof CortexCodeRoute;
|
||||
"/corust": typeof CorustRoute;
|
||||
"/crow": typeof CrowRoute;
|
||||
"/cursor": typeof CursorRoute;
|
||||
"/deepagents": typeof DeepagentsRoute;
|
||||
"/dimcode": typeof DimcodeRoute;
|
||||
"/dirac": typeof DiracRoute;
|
||||
"/download": typeof DownloadRoute;
|
||||
"/factory-droid": typeof FactoryDroidRoute;
|
||||
"/fast-agent": typeof FastAgentRoute;
|
||||
"/gemini": typeof GeminiRoute;
|
||||
"/glm": typeof GlmRoute;
|
||||
"/goose": typeof GooseRoute;
|
||||
"/hermes": typeof HermesRoute;
|
||||
"/junie": typeof JunieRoute;
|
||||
"/kilo": typeof KiloRoute;
|
||||
"/kimi": typeof KimiRoute;
|
||||
"/minion-code": typeof MinionCodeRoute;
|
||||
"/mistral-vibe": typeof MistralVibeRoute;
|
||||
"/nova": typeof NovaRoute;
|
||||
"/opencode": typeof OpencodeRoute;
|
||||
"/pi": typeof PiRoute;
|
||||
"/poolside": typeof PoolsideRoute;
|
||||
"/privacy": typeof PrivacyRoute;
|
||||
"/qoder": typeof QoderRoute;
|
||||
"/qwen-code": typeof QwenCodeRoute;
|
||||
"/sigit": typeof SigitRoute;
|
||||
"/stakpak": typeof StakpakRoute;
|
||||
"/vtcode": typeof VtcodeRoute;
|
||||
"/blog/$": typeof BlogSplatRoute;
|
||||
"/docs/$": typeof DocsSplatRoute;
|
||||
"/blog": typeof BlogIndexRoute;
|
||||
@@ -128,15 +400,49 @@ export interface FileRoutesByTo {
|
||||
export interface FileRoutesById {
|
||||
__root__: typeof rootRouteImport;
|
||||
"/": typeof IndexRoute;
|
||||
"/agents": typeof AgentsRoute;
|
||||
"/agoragentic": typeof AgoragenticRoute;
|
||||
"/amp": typeof AmpRoute;
|
||||
"/auggie": typeof AuggieRoute;
|
||||
"/autohand": typeof AutohandRoute;
|
||||
"/blog": typeof BlogRouteWithChildren;
|
||||
"/changelog": typeof ChangelogRoute;
|
||||
"/claude-code": typeof ClaudeCodeRoute;
|
||||
"/cline": typeof ClineRoute;
|
||||
"/cloud": typeof CloudRoute;
|
||||
"/codebuddy": typeof CodebuddyRoute;
|
||||
"/codex": typeof CodexRoute;
|
||||
"/copilot": typeof CopilotRoute;
|
||||
"/cortex-code": typeof CortexCodeRoute;
|
||||
"/corust": typeof CorustRoute;
|
||||
"/crow": typeof CrowRoute;
|
||||
"/cursor": typeof CursorRoute;
|
||||
"/deepagents": typeof DeepagentsRoute;
|
||||
"/dimcode": typeof DimcodeRoute;
|
||||
"/dirac": typeof DiracRoute;
|
||||
"/docs": typeof DocsRouteWithChildren;
|
||||
"/download": typeof DownloadRoute;
|
||||
"/factory-droid": typeof FactoryDroidRoute;
|
||||
"/fast-agent": typeof FastAgentRoute;
|
||||
"/gemini": typeof GeminiRoute;
|
||||
"/glm": typeof GlmRoute;
|
||||
"/goose": typeof GooseRoute;
|
||||
"/hermes": typeof HermesRoute;
|
||||
"/junie": typeof JunieRoute;
|
||||
"/kilo": typeof KiloRoute;
|
||||
"/kimi": typeof KimiRoute;
|
||||
"/minion-code": typeof MinionCodeRoute;
|
||||
"/mistral-vibe": typeof MistralVibeRoute;
|
||||
"/nova": typeof NovaRoute;
|
||||
"/opencode": typeof OpencodeRoute;
|
||||
"/pi": typeof PiRoute;
|
||||
"/poolside": typeof PoolsideRoute;
|
||||
"/privacy": typeof PrivacyRoute;
|
||||
"/qoder": typeof QoderRoute;
|
||||
"/qwen-code": typeof QwenCodeRoute;
|
||||
"/sigit": typeof SigitRoute;
|
||||
"/stakpak": typeof StakpakRoute;
|
||||
"/vtcode": typeof VtcodeRoute;
|
||||
"/blog/$": typeof BlogSplatRoute;
|
||||
"/docs/$": typeof DocsSplatRoute;
|
||||
"/blog/": typeof BlogIndexRoute;
|
||||
@@ -146,15 +452,49 @@ export interface FileRouteTypes {
|
||||
fileRoutesByFullPath: FileRoutesByFullPath;
|
||||
fullPaths:
|
||||
| "/"
|
||||
| "/agents"
|
||||
| "/agoragentic"
|
||||
| "/amp"
|
||||
| "/auggie"
|
||||
| "/autohand"
|
||||
| "/blog"
|
||||
| "/changelog"
|
||||
| "/claude-code"
|
||||
| "/cline"
|
||||
| "/cloud"
|
||||
| "/codebuddy"
|
||||
| "/codex"
|
||||
| "/copilot"
|
||||
| "/cortex-code"
|
||||
| "/corust"
|
||||
| "/crow"
|
||||
| "/cursor"
|
||||
| "/deepagents"
|
||||
| "/dimcode"
|
||||
| "/dirac"
|
||||
| "/docs"
|
||||
| "/download"
|
||||
| "/factory-droid"
|
||||
| "/fast-agent"
|
||||
| "/gemini"
|
||||
| "/glm"
|
||||
| "/goose"
|
||||
| "/hermes"
|
||||
| "/junie"
|
||||
| "/kilo"
|
||||
| "/kimi"
|
||||
| "/minion-code"
|
||||
| "/mistral-vibe"
|
||||
| "/nova"
|
||||
| "/opencode"
|
||||
| "/pi"
|
||||
| "/poolside"
|
||||
| "/privacy"
|
||||
| "/qoder"
|
||||
| "/qwen-code"
|
||||
| "/sigit"
|
||||
| "/stakpak"
|
||||
| "/vtcode"
|
||||
| "/blog/$"
|
||||
| "/docs/$"
|
||||
| "/blog/"
|
||||
@@ -162,13 +502,47 @@ export interface FileRouteTypes {
|
||||
fileRoutesByTo: FileRoutesByTo;
|
||||
to:
|
||||
| "/"
|
||||
| "/agents"
|
||||
| "/agoragentic"
|
||||
| "/amp"
|
||||
| "/auggie"
|
||||
| "/autohand"
|
||||
| "/changelog"
|
||||
| "/claude-code"
|
||||
| "/cline"
|
||||
| "/cloud"
|
||||
| "/codebuddy"
|
||||
| "/codex"
|
||||
| "/copilot"
|
||||
| "/cortex-code"
|
||||
| "/corust"
|
||||
| "/crow"
|
||||
| "/cursor"
|
||||
| "/deepagents"
|
||||
| "/dimcode"
|
||||
| "/dirac"
|
||||
| "/download"
|
||||
| "/factory-droid"
|
||||
| "/fast-agent"
|
||||
| "/gemini"
|
||||
| "/glm"
|
||||
| "/goose"
|
||||
| "/hermes"
|
||||
| "/junie"
|
||||
| "/kilo"
|
||||
| "/kimi"
|
||||
| "/minion-code"
|
||||
| "/mistral-vibe"
|
||||
| "/nova"
|
||||
| "/opencode"
|
||||
| "/pi"
|
||||
| "/poolside"
|
||||
| "/privacy"
|
||||
| "/qoder"
|
||||
| "/qwen-code"
|
||||
| "/sigit"
|
||||
| "/stakpak"
|
||||
| "/vtcode"
|
||||
| "/blog/$"
|
||||
| "/docs/$"
|
||||
| "/blog"
|
||||
@@ -176,15 +550,49 @@ export interface FileRouteTypes {
|
||||
id:
|
||||
| "__root__"
|
||||
| "/"
|
||||
| "/agents"
|
||||
| "/agoragentic"
|
||||
| "/amp"
|
||||
| "/auggie"
|
||||
| "/autohand"
|
||||
| "/blog"
|
||||
| "/changelog"
|
||||
| "/claude-code"
|
||||
| "/cline"
|
||||
| "/cloud"
|
||||
| "/codebuddy"
|
||||
| "/codex"
|
||||
| "/copilot"
|
||||
| "/cortex-code"
|
||||
| "/corust"
|
||||
| "/crow"
|
||||
| "/cursor"
|
||||
| "/deepagents"
|
||||
| "/dimcode"
|
||||
| "/dirac"
|
||||
| "/docs"
|
||||
| "/download"
|
||||
| "/factory-droid"
|
||||
| "/fast-agent"
|
||||
| "/gemini"
|
||||
| "/glm"
|
||||
| "/goose"
|
||||
| "/hermes"
|
||||
| "/junie"
|
||||
| "/kilo"
|
||||
| "/kimi"
|
||||
| "/minion-code"
|
||||
| "/mistral-vibe"
|
||||
| "/nova"
|
||||
| "/opencode"
|
||||
| "/pi"
|
||||
| "/poolside"
|
||||
| "/privacy"
|
||||
| "/qoder"
|
||||
| "/qwen-code"
|
||||
| "/sigit"
|
||||
| "/stakpak"
|
||||
| "/vtcode"
|
||||
| "/blog/$"
|
||||
| "/docs/$"
|
||||
| "/blog/"
|
||||
@@ -193,19 +601,88 @@ export interface FileRouteTypes {
|
||||
}
|
||||
export interface RootRouteChildren {
|
||||
IndexRoute: typeof IndexRoute;
|
||||
AgentsRoute: typeof AgentsRoute;
|
||||
AgoragenticRoute: typeof AgoragenticRoute;
|
||||
AmpRoute: typeof AmpRoute;
|
||||
AuggieRoute: typeof AuggieRoute;
|
||||
AutohandRoute: typeof AutohandRoute;
|
||||
BlogRoute: typeof BlogRouteWithChildren;
|
||||
ChangelogRoute: typeof ChangelogRoute;
|
||||
ClaudeCodeRoute: typeof ClaudeCodeRoute;
|
||||
ClineRoute: typeof ClineRoute;
|
||||
CloudRoute: typeof CloudRoute;
|
||||
CodebuddyRoute: typeof CodebuddyRoute;
|
||||
CodexRoute: typeof CodexRoute;
|
||||
CopilotRoute: typeof CopilotRoute;
|
||||
CortexCodeRoute: typeof CortexCodeRoute;
|
||||
CorustRoute: typeof CorustRoute;
|
||||
CrowRoute: typeof CrowRoute;
|
||||
CursorRoute: typeof CursorRoute;
|
||||
DeepagentsRoute: typeof DeepagentsRoute;
|
||||
DimcodeRoute: typeof DimcodeRoute;
|
||||
DiracRoute: typeof DiracRoute;
|
||||
DocsRoute: typeof DocsRouteWithChildren;
|
||||
DownloadRoute: typeof DownloadRoute;
|
||||
FactoryDroidRoute: typeof FactoryDroidRoute;
|
||||
FastAgentRoute: typeof FastAgentRoute;
|
||||
GeminiRoute: typeof GeminiRoute;
|
||||
GlmRoute: typeof GlmRoute;
|
||||
GooseRoute: typeof GooseRoute;
|
||||
HermesRoute: typeof HermesRoute;
|
||||
JunieRoute: typeof JunieRoute;
|
||||
KiloRoute: typeof KiloRoute;
|
||||
KimiRoute: typeof KimiRoute;
|
||||
MinionCodeRoute: typeof MinionCodeRoute;
|
||||
MistralVibeRoute: typeof MistralVibeRoute;
|
||||
NovaRoute: typeof NovaRoute;
|
||||
OpencodeRoute: typeof OpencodeRoute;
|
||||
PiRoute: typeof PiRoute;
|
||||
PoolsideRoute: typeof PoolsideRoute;
|
||||
PrivacyRoute: typeof PrivacyRoute;
|
||||
QoderRoute: typeof QoderRoute;
|
||||
QwenCodeRoute: typeof QwenCodeRoute;
|
||||
SigitRoute: typeof SigitRoute;
|
||||
StakpakRoute: typeof StakpakRoute;
|
||||
VtcodeRoute: typeof VtcodeRoute;
|
||||
}
|
||||
|
||||
declare module "@tanstack/react-router" {
|
||||
interface FileRoutesByPath {
|
||||
"/vtcode": {
|
||||
id: "/vtcode";
|
||||
path: "/vtcode";
|
||||
fullPath: "/vtcode";
|
||||
preLoaderRoute: typeof VtcodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/stakpak": {
|
||||
id: "/stakpak";
|
||||
path: "/stakpak";
|
||||
fullPath: "/stakpak";
|
||||
preLoaderRoute: typeof StakpakRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/sigit": {
|
||||
id: "/sigit";
|
||||
path: "/sigit";
|
||||
fullPath: "/sigit";
|
||||
preLoaderRoute: typeof SigitRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/qwen-code": {
|
||||
id: "/qwen-code";
|
||||
path: "/qwen-code";
|
||||
fullPath: "/qwen-code";
|
||||
preLoaderRoute: typeof QwenCodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/qoder": {
|
||||
id: "/qoder";
|
||||
path: "/qoder";
|
||||
fullPath: "/qoder";
|
||||
preLoaderRoute: typeof QoderRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/privacy": {
|
||||
id: "/privacy";
|
||||
path: "/privacy";
|
||||
@@ -213,6 +690,20 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof PrivacyRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/poolside": {
|
||||
id: "/poolside";
|
||||
path: "/poolside";
|
||||
fullPath: "/poolside";
|
||||
preLoaderRoute: typeof PoolsideRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/pi": {
|
||||
id: "/pi";
|
||||
path: "/pi";
|
||||
fullPath: "/pi";
|
||||
preLoaderRoute: typeof PiRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/opencode": {
|
||||
id: "/opencode";
|
||||
path: "/opencode";
|
||||
@@ -220,6 +711,90 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof OpencodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/nova": {
|
||||
id: "/nova";
|
||||
path: "/nova";
|
||||
fullPath: "/nova";
|
||||
preLoaderRoute: typeof NovaRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/mistral-vibe": {
|
||||
id: "/mistral-vibe";
|
||||
path: "/mistral-vibe";
|
||||
fullPath: "/mistral-vibe";
|
||||
preLoaderRoute: typeof MistralVibeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/minion-code": {
|
||||
id: "/minion-code";
|
||||
path: "/minion-code";
|
||||
fullPath: "/minion-code";
|
||||
preLoaderRoute: typeof MinionCodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/kimi": {
|
||||
id: "/kimi";
|
||||
path: "/kimi";
|
||||
fullPath: "/kimi";
|
||||
preLoaderRoute: typeof KimiRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/kilo": {
|
||||
id: "/kilo";
|
||||
path: "/kilo";
|
||||
fullPath: "/kilo";
|
||||
preLoaderRoute: typeof KiloRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/junie": {
|
||||
id: "/junie";
|
||||
path: "/junie";
|
||||
fullPath: "/junie";
|
||||
preLoaderRoute: typeof JunieRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/hermes": {
|
||||
id: "/hermes";
|
||||
path: "/hermes";
|
||||
fullPath: "/hermes";
|
||||
preLoaderRoute: typeof HermesRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/goose": {
|
||||
id: "/goose";
|
||||
path: "/goose";
|
||||
fullPath: "/goose";
|
||||
preLoaderRoute: typeof GooseRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/glm": {
|
||||
id: "/glm";
|
||||
path: "/glm";
|
||||
fullPath: "/glm";
|
||||
preLoaderRoute: typeof GlmRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/gemini": {
|
||||
id: "/gemini";
|
||||
path: "/gemini";
|
||||
fullPath: "/gemini";
|
||||
preLoaderRoute: typeof GeminiRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/fast-agent": {
|
||||
id: "/fast-agent";
|
||||
path: "/fast-agent";
|
||||
fullPath: "/fast-agent";
|
||||
preLoaderRoute: typeof FastAgentRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/factory-droid": {
|
||||
id: "/factory-droid";
|
||||
path: "/factory-droid";
|
||||
fullPath: "/factory-droid";
|
||||
preLoaderRoute: typeof FactoryDroidRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/download": {
|
||||
id: "/download";
|
||||
path: "/download";
|
||||
@@ -234,6 +809,62 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof DocsRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/dirac": {
|
||||
id: "/dirac";
|
||||
path: "/dirac";
|
||||
fullPath: "/dirac";
|
||||
preLoaderRoute: typeof DiracRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/dimcode": {
|
||||
id: "/dimcode";
|
||||
path: "/dimcode";
|
||||
fullPath: "/dimcode";
|
||||
preLoaderRoute: typeof DimcodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/deepagents": {
|
||||
id: "/deepagents";
|
||||
path: "/deepagents";
|
||||
fullPath: "/deepagents";
|
||||
preLoaderRoute: typeof DeepagentsRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/cursor": {
|
||||
id: "/cursor";
|
||||
path: "/cursor";
|
||||
fullPath: "/cursor";
|
||||
preLoaderRoute: typeof CursorRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/crow": {
|
||||
id: "/crow";
|
||||
path: "/crow";
|
||||
fullPath: "/crow";
|
||||
preLoaderRoute: typeof CrowRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/corust": {
|
||||
id: "/corust";
|
||||
path: "/corust";
|
||||
fullPath: "/corust";
|
||||
preLoaderRoute: typeof CorustRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/cortex-code": {
|
||||
id: "/cortex-code";
|
||||
path: "/cortex-code";
|
||||
fullPath: "/cortex-code";
|
||||
preLoaderRoute: typeof CortexCodeRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/copilot": {
|
||||
id: "/copilot";
|
||||
path: "/copilot";
|
||||
fullPath: "/copilot";
|
||||
preLoaderRoute: typeof CopilotRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/codex": {
|
||||
id: "/codex";
|
||||
path: "/codex";
|
||||
@@ -241,6 +872,13 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof CodexRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/codebuddy": {
|
||||
id: "/codebuddy";
|
||||
path: "/codebuddy";
|
||||
fullPath: "/codebuddy";
|
||||
preLoaderRoute: typeof CodebuddyRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/cloud": {
|
||||
id: "/cloud";
|
||||
path: "/cloud";
|
||||
@@ -248,6 +886,13 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof CloudRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/cline": {
|
||||
id: "/cline";
|
||||
path: "/cline";
|
||||
fullPath: "/cline";
|
||||
preLoaderRoute: typeof ClineRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/claude-code": {
|
||||
id: "/claude-code";
|
||||
path: "/claude-code";
|
||||
@@ -269,6 +914,41 @@ declare module "@tanstack/react-router" {
|
||||
preLoaderRoute: typeof BlogRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/autohand": {
|
||||
id: "/autohand";
|
||||
path: "/autohand";
|
||||
fullPath: "/autohand";
|
||||
preLoaderRoute: typeof AutohandRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/auggie": {
|
||||
id: "/auggie";
|
||||
path: "/auggie";
|
||||
fullPath: "/auggie";
|
||||
preLoaderRoute: typeof AuggieRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/amp": {
|
||||
id: "/amp";
|
||||
path: "/amp";
|
||||
fullPath: "/amp";
|
||||
preLoaderRoute: typeof AmpRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/agoragentic": {
|
||||
id: "/agoragentic";
|
||||
path: "/agoragentic";
|
||||
fullPath: "/agoragentic";
|
||||
preLoaderRoute: typeof AgoragenticRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/agents": {
|
||||
id: "/agents";
|
||||
path: "/agents";
|
||||
fullPath: "/agents";
|
||||
preLoaderRoute: typeof AgentsRouteImport;
|
||||
parentRoute: typeof rootRouteImport;
|
||||
};
|
||||
"/": {
|
||||
id: "/";
|
||||
path: "/";
|
||||
@@ -333,15 +1013,49 @@ const DocsRouteWithChildren = DocsRoute._addFileChildren(DocsRouteChildren);
|
||||
|
||||
const rootRouteChildren: RootRouteChildren = {
|
||||
IndexRoute: IndexRoute,
|
||||
AgentsRoute: AgentsRoute,
|
||||
AgoragenticRoute: AgoragenticRoute,
|
||||
AmpRoute: AmpRoute,
|
||||
AuggieRoute: AuggieRoute,
|
||||
AutohandRoute: AutohandRoute,
|
||||
BlogRoute: BlogRouteWithChildren,
|
||||
ChangelogRoute: ChangelogRoute,
|
||||
ClaudeCodeRoute: ClaudeCodeRoute,
|
||||
ClineRoute: ClineRoute,
|
||||
CloudRoute: CloudRoute,
|
||||
CodebuddyRoute: CodebuddyRoute,
|
||||
CodexRoute: CodexRoute,
|
||||
CopilotRoute: CopilotRoute,
|
||||
CortexCodeRoute: CortexCodeRoute,
|
||||
CorustRoute: CorustRoute,
|
||||
CrowRoute: CrowRoute,
|
||||
CursorRoute: CursorRoute,
|
||||
DeepagentsRoute: DeepagentsRoute,
|
||||
DimcodeRoute: DimcodeRoute,
|
||||
DiracRoute: DiracRoute,
|
||||
DocsRoute: DocsRouteWithChildren,
|
||||
DownloadRoute: DownloadRoute,
|
||||
FactoryDroidRoute: FactoryDroidRoute,
|
||||
FastAgentRoute: FastAgentRoute,
|
||||
GeminiRoute: GeminiRoute,
|
||||
GlmRoute: GlmRoute,
|
||||
GooseRoute: GooseRoute,
|
||||
HermesRoute: HermesRoute,
|
||||
JunieRoute: JunieRoute,
|
||||
KiloRoute: KiloRoute,
|
||||
KimiRoute: KimiRoute,
|
||||
MinionCodeRoute: MinionCodeRoute,
|
||||
MistralVibeRoute: MistralVibeRoute,
|
||||
NovaRoute: NovaRoute,
|
||||
OpencodeRoute: OpencodeRoute,
|
||||
PiRoute: PiRoute,
|
||||
PoolsideRoute: PoolsideRoute,
|
||||
PrivacyRoute: PrivacyRoute,
|
||||
QoderRoute: QoderRoute,
|
||||
QwenCodeRoute: QwenCodeRoute,
|
||||
SigitRoute: SigitRoute,
|
||||
StakpakRoute: StakpakRoute,
|
||||
VtcodeRoute: VtcodeRoute,
|
||||
};
|
||||
export const routeTree = rootRouteImport
|
||||
._addFileChildren(rootRouteChildren)
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
import { createFileRoute, Link } from "@tanstack/react-router";
|
||||
import { CursorFieldProvider } from "~/components/butterfly";
|
||||
import { SiteFooter } from "~/components/site-footer";
|
||||
import { SiteHeader } from "~/components/site-header";
|
||||
import { AGENT_PAGES } from "~/data/agent-pages";
|
||||
import { pageMeta } from "~/meta";
|
||||
import "~/styles.css";
|
||||
|
||||
export const Route = createFileRoute("/agents")({
|
||||
head: () => ({
|
||||
meta: pageMeta(
|
||||
"Supported agents – Every coding agent Paseo runs | Paseo",
|
||||
"Run Claude Code, Codex, OpenCode, Cursor CLI, Gemini CLI, Hermes Agent, Qwen Code, Kimi Code, and 28 more coding agents from your phone. Self-hosted, your code stays on your machine.",
|
||||
),
|
||||
}),
|
||||
component: AgentsPage,
|
||||
});
|
||||
|
||||
function AgentsPage() {
|
||||
return (
|
||||
<CursorFieldProvider>
|
||||
<div className="bg-background">
|
||||
<div className="p-6 md:px-32 md:pt-20 max-w-7xl mx-auto">
|
||||
<nav className="mb-16">
|
||||
<SiteHeader />
|
||||
</nav>
|
||||
<header className="space-y-4 max-w-2xl">
|
||||
<h1 className="text-3xl md:text-5xl font-medium tracking-tight">
|
||||
Every agent Paseo supports
|
||||
</h1>
|
||||
<p className="text-white/70 text-lg leading-relaxed">
|
||||
Paseo runs the native CLI for {AGENT_PAGES.length} coding agents — your skills, your
|
||||
config, your MCP servers, all intact. Drive any of them from your phone.
|
||||
</p>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
<main className="px-6 md:px-32 pb-24 max-w-7xl mx-auto">
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
|
||||
{AGENT_PAGES.map((agent) => (
|
||||
<Link
|
||||
key={agent.slug}
|
||||
to={`/${agent.slug}`}
|
||||
className="block rounded-xl border border-white/10 bg-white/[0.02] p-5 hover:border-white/20 hover:bg-white/[0.04] transition-colors"
|
||||
>
|
||||
<h2 className="font-medium text-white">{agent.name}</h2>
|
||||
<p className="mt-1 text-sm text-white/60 leading-relaxed">{agent.subtitle}</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<p className="mt-10 text-sm text-white/50">
|
||||
Want to add another?{" "}
|
||||
<a href="/docs/custom-providers" className="underline hover:text-white/80">
|
||||
Configure any ACP-compatible agent
|
||||
</a>{" "}
|
||||
in <code className="font-mono text-white/60">~/.paseo/config.json</code>.
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<SiteFooter />
|
||||
</div>
|
||||
</CursorFieldProvider>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/agoragentic")(agentRouteOptions("agoragentic"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/amp")(agentRouteOptions("amp"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/auggie")(agentRouteOptions("auggie"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/autohand")(agentRouteOptions("autohand"));
|
||||
@@ -1,22 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { LandingPage } from "~/components/landing-page";
|
||||
import { pageMeta } from "~/meta";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/claude-code")({
|
||||
head: () => ({
|
||||
meta: pageMeta(
|
||||
"Claude Code Mobile App – Ship from your phone | Paseo",
|
||||
"Run Claude Code from your phone. Launch agents, check on progress, review diffs, and merge — all from your pocket. Self-hosted, your code stays on your machine.",
|
||||
),
|
||||
}),
|
||||
component: ClaudeCodePage,
|
||||
});
|
||||
|
||||
function ClaudeCodePage() {
|
||||
return (
|
||||
<LandingPage
|
||||
title="Ship with Claude Code from your phone"
|
||||
subtitle="Launch agents, check on progress, and merge from anywhere. Your Claude Code setup, your machine, your pocket."
|
||||
/>
|
||||
);
|
||||
}
|
||||
export const Route = createFileRoute("/claude-code")(agentRouteOptions("claude-code"));
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/cline")(agentRouteOptions("cline"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/codebuddy")(agentRouteOptions("codebuddy"));
|
||||
@@ -1,22 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { LandingPage } from "~/components/landing-page";
|
||||
import { pageMeta } from "~/meta";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/codex")({
|
||||
head: () => ({
|
||||
meta: pageMeta(
|
||||
"Codex Mobile App – Run Codex from anywhere | Paseo",
|
||||
"Run OpenAI Codex from your phone. Kick off agents, monitor progress, and ship code without being at your desk. Self-hosted, your code never leaves your machine.",
|
||||
),
|
||||
}),
|
||||
component: CodexPage,
|
||||
});
|
||||
|
||||
function CodexPage() {
|
||||
return (
|
||||
<LandingPage
|
||||
title="Run Codex from anywhere"
|
||||
subtitle="Kick off Codex agents on your machine from your phone. Check in on the train, review on the couch, merge from the park."
|
||||
/>
|
||||
);
|
||||
}
|
||||
export const Route = createFileRoute("/codex")(agentRouteOptions("codex"));
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/copilot")(agentRouteOptions("copilot"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/cortex-code")(agentRouteOptions("cortex-code"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/corust")(agentRouteOptions("corust"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/crow")(agentRouteOptions("crow"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/cursor")(agentRouteOptions("cursor"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/deepagents")(agentRouteOptions("deepagents"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/dimcode")(agentRouteOptions("dimcode"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/dirac")(agentRouteOptions("dirac"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/factory-droid")(agentRouteOptions("factory-droid"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/fast-agent")(agentRouteOptions("fast-agent"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/gemini")(agentRouteOptions("gemini"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/glm")(agentRouteOptions("glm"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/goose")(agentRouteOptions("goose"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/hermes")(agentRouteOptions("hermes"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/junie")(agentRouteOptions("junie"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/kilo")(agentRouteOptions("kilo"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/kimi")(agentRouteOptions("kimi"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/minion-code")(agentRouteOptions("minion-code"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/mistral-vibe")(agentRouteOptions("mistral-vibe"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/nova")(agentRouteOptions("nova"));
|
||||
@@ -1,22 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { LandingPage } from "~/components/landing-page";
|
||||
import { pageMeta } from "~/meta";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/opencode")({
|
||||
head: () => ({
|
||||
meta: pageMeta(
|
||||
"OpenCode Mobile App – Code from anywhere | Paseo",
|
||||
"Run OpenCode from your phone. Launch agents, watch them work, and ship code from wherever you are. Self-hosted, open source, your code stays local.",
|
||||
),
|
||||
}),
|
||||
component: OpenCodePage,
|
||||
});
|
||||
|
||||
function OpenCodePage() {
|
||||
return (
|
||||
<LandingPage
|
||||
title="Run OpenCode from your phone"
|
||||
subtitle="Launch agents, check on builds, and ship code from anywhere. Same setup, same machine, just not at your desk."
|
||||
/>
|
||||
);
|
||||
}
|
||||
export const Route = createFileRoute("/opencode")(agentRouteOptions("opencode"));
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/pi")(agentRouteOptions("pi"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/poolside")(agentRouteOptions("poolside"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/qoder")(agentRouteOptions("qoder"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/qwen-code")(agentRouteOptions("qwen-code"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/sigit")(agentRouteOptions("sigit"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/stakpak")(agentRouteOptions("stakpak"));
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { agentRouteOptions } from "~/components/agent-route";
|
||||
|
||||
export const Route = createFileRoute("/vtcode")(agentRouteOptions("vtcode"));
|
||||
@@ -31,15 +31,36 @@ function discoverDocsRoutes(): string[] {
|
||||
return [...routes].sort();
|
||||
}
|
||||
|
||||
function discoverAgentRoutes(): string[] {
|
||||
const routesDir = path.join(__dirname, "src/routes");
|
||||
const reserved = new Set([
|
||||
"__root",
|
||||
"agents",
|
||||
"blog",
|
||||
"changelog",
|
||||
"cloud",
|
||||
"docs",
|
||||
"download",
|
||||
"index",
|
||||
"privacy",
|
||||
]);
|
||||
return fs
|
||||
.readdirSync(routesDir, { withFileTypes: true })
|
||||
.filter((entry) => entry.isFile() && entry.name.endsWith(".tsx"))
|
||||
.map((entry) => entry.name.replace(/\.tsx$/, ""))
|
||||
.filter((name) => !reserved.has(name))
|
||||
.sort()
|
||||
.map((slug) => `/${slug}`);
|
||||
}
|
||||
|
||||
const sitemapPages = [
|
||||
"/",
|
||||
"/agents",
|
||||
"/changelog",
|
||||
"/claude-code",
|
||||
"/cloud",
|
||||
"/codex",
|
||||
"/download",
|
||||
"/opencode",
|
||||
"/privacy",
|
||||
...discoverAgentRoutes(),
|
||||
...discoverDocsRoutes(),
|
||||
].map((routePath) => ({
|
||||
path: routePath,
|
||||
@@ -54,6 +75,9 @@ export default defineConfig((): UserConfig => {
|
||||
fs: {
|
||||
allow: [repoRoot],
|
||||
},
|
||||
watch: {
|
||||
ignored: ["**/.tanstack/**"],
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
cloudflare({ viteEnvironment: { name: "ssr" } }),
|
||||
|
||||
Reference in New Issue
Block a user