Files
greywall-landing-page/components/problem.tsx
2026-03-09 17:35:31 -04:00

135 lines
7.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { ShieldCheck, ShieldOff } from 'lucide-react'
export function Problem() {
return (
<section className="pb-12 sm:pb-16 px-4 sm:px-6">
<div className="mx-auto max-w-5xl">
<div className="mb-12 sm:mb-16">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-5">
{/* Without Greywall */}
<div className="flex flex-col">
<div className="flex items-center gap-2 mb-3">
<ShieldOff className="h-4 w-4 text-red-400/70" />
<span className="text-xs font-sans uppercase tracking-wider text-red-400/70 font-medium">
Without Greywall
</span>
</div>
<div className="code-block p-5 sm:p-6 flex-1">
<div className="flex items-center gap-2 mb-5">
<div className="w-3 h-3 rounded-full bg-red-500/70" />
<div className="w-3 h-3 rounded-full bg-yellow-500/70" />
<div className="w-3 h-3 rounded-full bg-green-500/70" />
<span className="ml-2 text-xs font-mono text-muted-foreground">~/project</span>
</div>
<div className="space-y-3 font-mono text-[11px] sm:text-xs">
<div>
<span className="text-muted-foreground">$ </span>
<span className="text-greyhaven-offwhite">claude </span>
<span className="text-red-400/80">--dangerously-skip-permissions</span>
</div>
<div className="border-l-2 border-primary/40 pl-3">
<div className="text-primary font-semibold text-[11px] uppercase tracking-wider mb-1">You</div>
<div className="text-greyhaven-offwhite">add rate limiting to the API client</div>
</div>
<div className="border-l-2 border-muted-foreground/30 pl-3">
<div className="text-muted-foreground font-semibold text-[11px] uppercase tracking-wider mb-1">Agent</div>
<div className="text-muted-foreground italic">thinking...</div>
</div>
<div className="pl-4 space-y-1.5 text-muted-foreground/60">
<div><span className="text-muted-foreground/40">$ </span><span className="text-red-400/80">cat .env</span></div>
<div><span className="text-muted-foreground/40">$ </span><span className="text-red-400/80">curl -H &quot;Authorization: Bearer sk-prod-...&quot; https://api.stripe.com/v1/charges</span></div>
</div>
<div className="border-l-2 border-muted-foreground/30 pl-3">
<div className="text-muted-foreground font-semibold text-[11px] uppercase tracking-wider mb-1">Agent</div>
<div className="text-greyhaven-offwhite">Done! I read your .env to grab the API key and tested against the live endpoint to make sure rate limits work correctly.</div>
</div>
<div className="border-l-2 border-primary/40 pl-3">
<div className="text-primary font-semibold text-[11px] uppercase tracking-wider mb-1">You</div>
<div className="text-greyhaven-offwhite">what are these charges on my Stripe??? (°°) </div>
</div>
</div>
</div>
<p className="text-xs text-muted-foreground font-serif mt-3 leading-relaxed">
The agent read your production Stripe key from .env and hit the live API to &quot;test&quot; its work. Helpful intent, real damage.
</p>
</div>
{/* With Greywall */}
<div className="flex flex-col">
<div className="flex items-center gap-2 mb-3">
<ShieldCheck className="h-4 w-4 text-primary" />
<span className="text-xs font-sans uppercase tracking-wider text-primary font-medium">
With Greywall
</span>
</div>
<div className="code-block p-5 sm:p-6 border-primary/20 flex-1">
<div className="flex items-center gap-2 mb-5">
<div className="w-3 h-3 rounded-full bg-red-500/70" />
<div className="w-3 h-3 rounded-full bg-yellow-500/70" />
<div className="w-3 h-3 rounded-full bg-green-500/70" />
<span className="ml-2 text-xs font-mono text-muted-foreground">~/project</span>
</div>
<div className="space-y-3 font-mono text-[11px] sm:text-xs">
<div>
<span className="text-muted-foreground">$ </span>
<span className="text-primary">greywall --</span>
<span className="text-greyhaven-offwhite"> claude </span>
<span className="text-primary">--dangerously-skip-permissions</span>
</div>
<div className="border-l-2 border-primary/40 pl-3">
<div className="text-primary font-semibold text-[11px] uppercase tracking-wider mb-1">You</div>
<div className="text-greyhaven-offwhite">add rate limiting to the API client</div>
</div>
<div className="border-l-2 border-muted-foreground/30 pl-3">
<div className="text-muted-foreground font-semibold text-[11px] uppercase tracking-wider mb-1">Agent</div>
<div className="text-muted-foreground italic">thinking...</div>
</div>
<div className="pl-4 space-y-1.5">
<div><span className="text-muted-foreground/40">$ </span><span className="text-muted-foreground">cat .env</span></div>
<div className="text-red-400/80 pl-4">&larr; Operation not permitted</div>
<div><span className="text-muted-foreground/40">$ </span><span className="text-muted-foreground">curl -H &quot;Authorization: ...&quot; https://api.stripe.com/v1/charges</span></div>
<div className="text-red-400/80 pl-4">&larr; Connection denied by proxy</div>
</div>
<div className="border-l-2 border-muted-foreground/30 pl-3">
<div className="text-muted-foreground font-semibold text-[11px] uppercase tracking-wider mb-1">Agent</div>
<div className="text-greyhaven-offwhite">Added rate limiting. I couldn&apos;t access .env, so I used placeholder values in the tests.</div>
</div>
<div className="border-l-2 border-primary/40 pl-3">
<div className="text-primary font-semibold text-[11px] uppercase tracking-wider mb-1">You</div>
<div className="text-greyhaven-offwhite">( )</div>
</div>
</div>
</div>
<p className="text-xs text-muted-foreground font-serif mt-3 leading-relaxed">
Kernel-enforced. The agent adapts and does the job without accessing secrets or production systems.
</p>
</div>
</div>
</div>
{/* Resolution: Verification creates trust */}
<div className="text-center max-w-3xl mx-auto">
<blockquote className="font-serif text-xl sm:text-2xl md:text-3xl font-semibold tracking-tight leading-snug mb-6">
<span className="text-primary">&ldquo;</span>The act of verification creates trust.<span className="text-primary">&rdquo;</span>
</blockquote>
<p className="text-muted-foreground font-serif text-base sm:text-lg leading-relaxed max-w-2xl mx-auto">
Greywall gives you two pillars: <span className="text-foreground font-medium">control</span> over
what agents can reach, and <span className="text-foreground font-medium">clarity</span> into
every operation they perform.
</p>
</div>
</div>
</section>
)
}