chore: format with prettier [skip ci]

This commit is contained in:
github-actions[bot] 2026-06-28 22:12:43 +00:00
parent dcd10061ac
commit ebbe76d1c4
4 changed files with 188 additions and 157 deletions

View File

@ -145,7 +145,14 @@ function ChevronIcon({ className = "" }: { className?: string }) {
function GridIcon({ className = "" }: { className?: string }) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" aria-hidden="true">
<svg
className={className}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.8"
aria-hidden="true"
>
<path d="M4 4h6v6H4z" />
<path d="M14 4h6v6h-6z" />
<path d="M4 14h6v6H4z" />
@ -166,7 +173,14 @@ function MoreIcon({ className = "" }: { className?: string }) {
function SettingsIcon({ className = "" }: { className?: string }) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" aria-hidden="true">
<svg
className={className}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.8"
aria-hidden="true"
>
<path d="M12 15.5A3.5 3.5 0 1 0 12 8a3.5 3.5 0 0 0 0 7.5Z" />
<path d="M19.4 15a1.7 1.7 0 0 0 .34 1.88l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.7 1.7 0 0 0-1.88-.34 1.7 1.7 0 0 0-1.03 1.56V21a2 2 0 0 1-4 0v-.08a1.7 1.7 0 0 0-1.03-1.56 1.7 1.7 0 0 0-1.88.34l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-1.56-1.03H3a2 2 0 0 1 0-4h.08A1.7 1.7 0 0 0 4.6 8.94a1.7 1.7 0 0 0-.34-1.88l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.7 1.7 0 0 0 1.88.34H9A1.7 1.7 0 0 0 10 3V3a2 2 0 0 1 4 0v.08a1.7 1.7 0 0 0 1.03 1.56 1.7 1.7 0 0 0 1.88-.34l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.7 1.7 0 0 0-.34 1.88V9c.22.6.8 1 1.44 1H21a2 2 0 0 1 0 4h-.08A1.7 1.7 0 0 0 19.4 15Z" />
</svg>
@ -175,7 +189,14 @@ function SettingsIcon({ className = "" }: { className?: string }) {
function SidebarIcon({ className = "" }: { className?: string }) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" aria-hidden="true">
<svg
className={className}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="1.8"
aria-hidden="true"
>
<rect x="4" y="5" width="16" height="14" rx="2" />
<path d="M9 5v14" />
</svg>
@ -212,7 +233,9 @@ function HeroDashboardMockup() {
>
<aside className="flex min-h-[640px] flex-col border-b border-[#15171d] bg-[#030304] md:border-b-0 md:border-r">
<div className="flex h-14 items-center justify-between border-b border-[#17191f] px-5">
<div className={`flex items-center gap-2 text-[15px] font-semibold ${sidebarOpen ? "" : "md:justify-center"}`}>
<div
className={`flex items-center gap-2 text-[15px] font-semibold ${sidebarOpen ? "" : "md:justify-center"}`}
>
<img src="/ao-logo.svg" alt="" className="h-5 w-5" draggable="false" />
<span className={sidebarOpen ? "" : "md:hidden"}>Agent Orchestrator</span>
</div>
@ -227,132 +250,133 @@ function HeroDashboardMockup() {
</button>
</div>
{sidebarOpen ? (
<div className="min-h-0 flex-1 overflow-hidden p-3">
<div className="mb-3 flex items-center justify-between px-2 text-[11px] font-bold uppercase tracking-[0.18em] text-[#737b89]">
Projects
<span className="text-lg font-normal leading-none">+</span>
</div>
<div className="space-y-3">
{projects.map((project) => (
<div
key={project.name}
className="group"
>
<button
type="button"
onClick={() => toggleProject(project.name)}
className={`flex w-full cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-left transition-colors ${
activeProject === project.name
? "bg-[#11131a] text-[#eceef2]"
: "text-[#a0a6b2] hover:bg-[#0b0d12] hover:text-[#eceef2]"
}`}
>
<ChevronIcon className={`h-3.5 w-3.5 shrink-0 transition-transform ${openProjects[project.name] ? "rotate-90" : ""}`} />
<span className="min-w-0 flex-1 truncate text-[15px] font-medium">{project.name}</span>
<span className="hidden items-center gap-2 text-[#737b89] group-hover:flex">
<span
role="button"
tabIndex={0}
aria-label={`${project.name} board`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-board`);
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
<div className="min-h-0 flex-1 overflow-hidden p-3">
<div className="mb-3 flex items-center justify-between px-2 text-[11px] font-bold uppercase tracking-[0.18em] text-[#737b89]">
Projects
<span className="text-lg font-normal leading-none">+</span>
</div>
<div className="space-y-3">
{projects.map((project) => (
<div key={project.name} className="group">
<button
type="button"
onClick={() => toggleProject(project.name)}
className={`flex w-full cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-left transition-colors ${
activeProject === project.name
? "bg-[#11131a] text-[#eceef2]"
: "text-[#a0a6b2] hover:bg-[#0b0d12] hover:text-[#eceef2]"
}`}
>
<ChevronIcon
className={`h-3.5 w-3.5 shrink-0 transition-transform ${openProjects[project.name] ? "rotate-90" : ""}`}
/>
<span className="min-w-0 flex-1 truncate text-[15px] font-medium">{project.name}</span>
<span className="hidden items-center gap-2 text-[#737b89] group-hover:flex">
<span
role="button"
tabIndex={0}
aria-label={`${project.name} board`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-board`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-board` ? "text-white" : ""
}`}
>
<GridIcon className="h-3.5 w-3.5" />
</span>
<span
role="button"
tabIndex={0}
aria-label={`${project.name} orchestrator`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-orchestrator`);
setActiveCard(`Spawn ${project.name} orchestrator`);
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-board`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-board` ? "text-white" : ""
}`}
>
<GridIcon className="h-3.5 w-3.5" />
</span>
<span
role="button"
tabIndex={0}
aria-label={`${project.name} orchestrator`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-orchestrator`);
setActiveCard(`Spawn ${project.name} orchestrator`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-orchestrator` ? "text-white" : ""
}`}
>
<NetworkIcon className="h-3.5 w-3.5" />
</span>
<span
role="button"
tabIndex={0}
aria-label={`${project.name} options`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-options`);
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-orchestrator`);
setActiveCard(`Spawn ${project.name} orchestrator`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-orchestrator` ? "text-white" : ""
}`}
>
<NetworkIcon className="h-3.5 w-3.5" />
</span>
<span
role="button"
tabIndex={0}
aria-label={`${project.name} options`}
onClick={(event) => {
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-options`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-options` ? "text-white" : ""
}`}
>
<MoreIcon className="h-3.5 w-3.5" />
</span>
</span>
<span className="min-w-5 rounded-md border border-[#181b22] bg-[#08090c] px-1.5 py-0.5 text-center text-[11px] leading-none text-[#7a828f] group-hover:hidden">
{project.count}
</span>
</button>
{openProjects[project.name] ? (
<div className="mt-2 space-y-1.5 pl-8">
{project.tasks.map((task, index) => (
<button
type="button"
key={task}
className={`flex w-full min-w-0 cursor-pointer items-center gap-2 rounded py-1 text-left text-[13px] transition-colors ${
activeCard === task ? "text-[#eceef2]" : "text-[#9aa1ac] hover:text-[#eceef2]"
}`}
onClick={() => {
setActiveProject(project.name);
setActiveCard(task);
}}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
event.stopPropagation();
setActiveProject(project.name);
setActiveProjectAction(`${project.name}-options`);
}
}}
className={`cursor-pointer rounded p-0.5 transition-colors hover:bg-white/10 hover:text-white ${
activeProjectAction === `${project.name}-options` ? "text-white" : ""
}`}
>
<span
className="h-1.5 w-1.5 shrink-0 rounded-full"
style={{ backgroundColor: index === 1 ? "#ff7070" : index === 2 ? "#89919e" : "#ffad4d" }}
/>
<span className="truncate">{task}</span>
</button>
))}
</div>
) : null}
</div>
))}
<MoreIcon className="h-3.5 w-3.5" />
</span>
</span>
<span className="min-w-5 rounded-md border border-[#181b22] bg-[#08090c] px-1.5 py-0.5 text-center text-[11px] leading-none text-[#7a828f] group-hover:hidden">
{project.count}
</span>
</button>
{openProjects[project.name] ? (
<div className="mt-2 space-y-1.5 pl-8">
{project.tasks.map((task, index) => (
<button
type="button"
key={task}
className={`flex w-full min-w-0 cursor-pointer items-center gap-2 rounded py-1 text-left text-[13px] transition-colors ${
activeCard === task ? "text-[#eceef2]" : "text-[#9aa1ac] hover:text-[#eceef2]"
}`}
onClick={() => {
setActiveProject(project.name);
setActiveCard(task);
}}
>
<span
className="h-1.5 w-1.5 shrink-0 rounded-full"
style={{
backgroundColor: index === 1 ? "#ff7070" : index === 2 ? "#89919e" : "#ffad4d",
}}
/>
<span className="truncate">{task}</span>
</button>
))}
</div>
) : null}
</div>
))}
</div>
</div>
</div>
) : (
<div className="hidden min-h-0 flex-1 flex-col items-center gap-3 p-3 md:flex">
{projects.map((project) => (
@ -373,7 +397,9 @@ function HeroDashboardMockup() {
))}
</div>
)}
<button className={`flex h-14 cursor-pointer items-center gap-3 border-t border-[#15171d] px-5 text-sm text-[#8a92a0] transition-colors hover:bg-[#090b10] hover:text-white ${sidebarOpen ? "" : "md:justify-center md:px-0"}`}>
<button
className={`flex h-14 cursor-pointer items-center gap-3 border-t border-[#15171d] px-5 text-sm text-[#8a92a0] transition-colors hover:bg-[#090b10] hover:text-white ${sidebarOpen ? "" : "md:justify-center md:px-0"}`}
>
<SettingsIcon className="h-4 w-4" />
<span className={sidebarOpen ? "" : "md:hidden"}>Settings</span>
</button>
@ -383,7 +409,9 @@ function HeroDashboardMockup() {
<div className="mb-6 flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between">
<div className="flex items-end gap-3">
<h2 className="text-[23px] font-bold leading-none">Board</h2>
<p className="pb-0.5 text-[13px] text-[#6f7784]">Live agent sessions flowing from work review merge.</p>
<p className="pb-0.5 text-[13px] text-[#6f7784]">
Live agent sessions flowing from work review merge.
</p>
</div>
<div className="flex gap-2">
<button
@ -410,7 +438,10 @@ function HeroDashboardMockup() {
{columns.map((column) => (
<section key={column.title} className="min-h-[510px] rounded-xl bg-[#07080a] p-4">
<div className="mb-5 flex items-center justify-between px-0.5">
<div className="flex items-center gap-2 text-[12px] font-bold uppercase tracking-[0.14em]" style={{ color: column.color }}>
<div
className="flex items-center gap-2 text-[12px] font-bold uppercase tracking-[0.14em]"
style={{ color: column.color }}
>
<span className="h-2 w-2 rounded-full" style={{ backgroundColor: column.color }} />
{column.title}
</div>
@ -437,7 +468,9 @@ function HeroDashboardMockup() {
</div>
<div className="text-[14px] font-semibold leading-[1.45] text-[#f0f1f4]">{card.title}</div>
<div className="mt-4 font-mono text-[11px] text-[#68707d]">{card.branch}</div>
<div className="mt-3 border-t border-[#252933] pt-3 font-mono text-[11px] text-[#68707d]">{card.meta}</div>
<div className="mt-3 border-t border-[#252933] pt-3 font-mono text-[11px] text-[#68707d]">
{card.meta}
</div>
</button>
))}
</div>
@ -475,16 +508,14 @@ export function LandingHero() {
className="mx-auto max-w-[1320px] font-display font-semibold leading-[0.98] text-[#f2f3f5]"
style={{ fontSize: "clamp(38px, 4.35vw, 78px)", letterSpacing: "-0.035em" }}
>
<span className="block">
Stop babysitting coding agents.
</span>
<span className="block">Stop babysitting coding agents.</span>
<span className="mt-2 block">
Start merging <span className="text-[#93b4f8]">real work.</span>
</span>
</h1>
<p className="mx-auto mt-7 max-w-[680px] text-[15px] font-medium leading-[1.75] text-[color:var(--fg-muted)] sm:text-[17px]">
Free, Apache 2.0 licensed, and runs on your laptop. Fork it, inspect it, and ship your first
parallel agent workflow in minutes.
Free, Apache 2.0 licensed, and runs on your laptop. Fork it, inspect it, and ship your first parallel agent
workflow in minutes.
</p>
<div className="mt-8 flex flex-wrap items-center justify-center gap-3">
<a

View File

@ -100,25 +100,27 @@ export function LandingNav() {
}, []);
return (
<header
data-testid="site-nav"
className="pointer-events-none fixed inset-x-0 top-4 z-40 flex justify-center px-4"
>
<div
className="pointer-events-auto grid h-14 w-full max-w-[1040px] grid-cols-[1fr_auto] items-center gap-4 rounded-2xl bg-black/[0.58] px-4 shadow-[0_20px_70px_-52px_rgba(0,0,0,1),inset_0_1px_0_rgba(255,255,255,0.08),inset_0_0_0_1px_rgba(255,255,255,0.055)] backdrop-blur-2xl sm:px-5 md:grid-cols-[1fr_auto_1fr]"
>
<header data-testid="site-nav" className="pointer-events-none fixed inset-x-0 top-4 z-40 flex justify-center px-4">
<div className="pointer-events-auto grid h-14 w-full max-w-[1040px] grid-cols-[1fr_auto] items-center gap-4 rounded-2xl bg-black/[0.58] px-4 shadow-[0_20px_70px_-52px_rgba(0,0,0,1),inset_0_1px_0_rgba(255,255,255,0.08),inset_0_0_0_1px_rgba(255,255,255,0.055)] backdrop-blur-2xl sm:px-5 md:grid-cols-[1fr_auto_1fr]">
<a
href="#top"
data-testid="nav-logo"
className="group inline-flex h-10 shrink-0 items-center gap-3 justify-self-start"
>
<img src="/ao-logo.svg" alt="Agent Orchestrator" className="block h-9 w-9 shrink-0 -translate-y-1 object-contain" />
<img
src="/ao-logo.svg"
alt="Agent Orchestrator"
className="block h-9 w-9 shrink-0 -translate-y-1 object-contain"
/>
<span className="font-display text-[15px] font-bold leading-[1.1] tracking-tight text-[color:var(--fg)]">
Agent Orchestrator
</span>
</a>
<nav className="hidden items-center justify-center gap-1 rounded-xl bg-white/[0.035] p-1 justify-self-center md:flex" aria-label="Primary">
<nav
className="hidden items-center justify-center gap-1 rounded-xl bg-white/[0.035] p-1 justify-self-center md:flex"
aria-label="Primary"
>
{navLinks.map((item) => (
<a
key={item.label}
@ -159,9 +161,7 @@ export function LandingNav() {
</a>
</div>
<div
className="flex items-center gap-2 md:hidden"
>
<div className="flex items-center gap-2 md:hidden">
<a
href="/docs/installation"
data-testid="nav-mobile-cta-btn"

View File

@ -7,9 +7,7 @@ export function LandingVideo() {
>
<div className="container-page">
<div className="mx-auto mb-10 max-w-[1180px] text-left">
<h2
className="inline-block font-mono text-[13px] font-bold uppercase leading-none tracking-[0.18em] text-[color:var(--fg-muted)]"
>
<h2 className="inline-block font-mono text-[13px] font-bold uppercase leading-none tracking-[0.18em] text-[color:var(--fg-muted)]">
See it in action
</h2>
</div>

View File

@ -50,22 +50,22 @@ If you plan to use GitLab or Linear, install and authenticate their CLIs or cred
npm install -g @aoagents/ao
```
</Tab>
<Tab value="pnpm">
</Tab>
<Tab value="pnpm">
```bash
pnpm add -g @aoagents/ao
```
</Tab>
<Tab value="yarn">
</Tab>
<Tab value="yarn">
```bash
yarn global add @aoagents/ao
```
</Tab>
<Tab value="from source">
</Tab>
<Tab value="from source">
```bash
git clone https://github.com/AgentWrapper/agent-orchestrator
@ -75,7 +75,8 @@ pnpm build
pnpm --filter @aoagents/ao link --global
```
</Tab>
</Tab>
</Tabs>
Confirm the command is available:
@ -115,24 +116,24 @@ npm install -g @anthropic-ai/claude-code
claude
```
</Tab>
<Tab value="Codex">
</Tab>
<Tab value="Codex">
```bash
npm install -g @openai/codex
codex
```
</Tab>
<Tab value="Cursor">
</Tab>
<Tab value="Cursor">
```bash
curl https://cursor.com/install -fsS | bash
agent --help
```
</Tab>
<Tab value="Aider">
</Tab>
<Tab value="Aider">
```bash
pip install aider-install
@ -140,15 +141,16 @@ aider-install
aider --help
```
</Tab>
<Tab value="OpenCode">
</Tab>
<Tab value="OpenCode">
```bash
npm install -g opencode-ai
opencode --help
```
</Tab>
</Tab>
</Tabs>
</Step>