chore: format with prettier [skip ci]
This commit is contained in:
parent
dcd10061ac
commit
ebbe76d1c4
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue