diff --git a/src/app/adopt/page.tsx b/src/app/adopt/page.tsx new file mode 100644 index 0000000..a8c8b13 --- /dev/null +++ b/src/app/adopt/page.tsx @@ -0,0 +1,360 @@ +import Link from "next/link"; +import { HomeHeader } from "@/app/home-header"; +import { SiteFooter } from "@/components/site-footer"; +import { getAttributionMetrics } from "@/lib/attribution-health"; + +export const revalidate = 300; + +const ECO_COLORS: Record = { + BANKR: "#6DB874", + Virtuals: "#5B8FA8", + AEON: "#8B5CF6", + EigenCloud: "#F97316", + Base: "#4F46E5", +}; + +const ADOPTERS = [ + { + name: "Aeon", + ecosystem: "AEON", + slug: "aeon", + walletCount: 2, + manifestDeclared: true, + note: "Execution and settlement layer. Treasury and deployer wallets declared via manifest.", + xHandle: "@aeonframework", + }, + { + name: "Luca", + ecosystem: "Base", + slug: "luca", + walletCount: 1, + manifestDeclared: true, + note: "Zetta's financial intelligence layer. Operational wallet declared via manifest.", + xHandle: "@AskLucaAI", + }, + { + name: "Surplus", + ecosystem: "Base", + slug: null, + walletCount: 0, + manifestDeclared: false, + note: "Inference routing layer. Manifest submission in progress.", + xHandle: null, + }, + { + name: "Nipmod", + ecosystem: "BANKR", + slug: null, + walletCount: 0, + manifestDeclared: false, + note: "BANKR ecosystem agent. Wallet declaration in progress.", + xHandle: null, + }, +]; + +export default async function AdoptPage() { + let manifestAdopters = 0; + let walletsDeclared = 0; + let coveragePct = 0; + + try { + const metrics = await getAttributionMetrics(); + manifestAdopters = metrics.manifest_attributed_agents; + walletsDeclared = metrics.books_eligible_wallets; + coveragePct = metrics.attribution_coverage_pct; + } catch { + // defaults remain 0 + } + + const agentTarget = 25; + const walletTarget = 100; + const agentBarPct = Math.min((manifestAdopters / agentTarget) * 100, 100); + const walletBarPct = Math.min((walletsDeclared / walletTarget) * 100, 100); + + return ( +
+ + + {/* Hero */} +
+
+ + Manifest Adoption + +
+

+ Agents declaring financial identity. +

+

+ The Agent Wallet Manifest is the foundation of financial attribution. Every agent here has declared their wallets — making their books readable, their treasury verifiable, and their revenue auditable. +

+
+ + {/* Live stats bar */} +
+
+ {[ + { label: "Manifest Adopters", value: manifestAdopters, color: "#22c55e", sub: "of 25 target" }, + { label: "Wallets Declared", value: walletsDeclared, color: "#6DB874", sub: "of 100 target" }, + { label: "Ecosystems", value: 5, color: "var(--ink)", sub: "active" }, + { label: "Coverage", value: coveragePct + "%", color: "#5B8FA8", sub: "of registry" }, + ].map((stat) => ( +
+

+ {stat.label} +

+

+ {stat.value} +

+

{stat.sub}

+
+ ))} +
+
+ + {/* KPI progress section */} +
+
+

+ 30-Day Adoption Goal +

+ +
+
+
+ Agents with manifest + + {manifestAdopters} / {agentTarget} + +
+
+
+
+
+ +
+
+ Wallets declared + + {walletsDeclared} / {walletTarget} + +
+
+
+
+
+
+
+
+ + {/* Early adopters grid */} +
+

Early Adopters

+
+ {ADOPTERS.map((adopter) => { + const ecoColor = ECO_COLORS[adopter.ecosystem] ?? "#6DB874"; + return ( +
+ {/* Name + badge */} +
+ {adopter.name} + {adopter.manifestDeclared ? ( + + Manifest Declared + + ) : ( + + Pending + + )} +
+ + {/* Tag row */} +
+ + {adopter.ecosystem} + + {adopter.walletCount > 0 && ( + + {adopter.walletCount} wallet{adopter.walletCount !== 1 ? "s" : ""} declared + + )} +
+ + {/* Note */} +

+ {adopter.note} +

+ + {/* Profile link */} + {adopter.slug && ( + + View profile → + + )} +
+ ); + })} +
+
+ + {/* "Your agent should be on this list" panel */} +
+
+
+ {/* Left */} +
+

+ Your agent should be on this list. +

+

+ Declare your wallets, submit your manifest, and your agent's books go live — revenue, expenses, and treasury visible to the whole registry. +

+ Submit Manifest → +
+ + {/* Right: steps */} +
+ {[ + { + num: "01", + title: "Create .agent/wallets.json", + desc: "Declare your treasury, operator, and revenue wallets with roles and chain.", + }, + { + num: "02", + title: "Submit to Zetta Registry", + desc: "Add your agent profile and link the manifest. Zetta verifies and indexes.", + }, + { + num: "03", + title: "Books go live", + desc: "Your revenue, expenses, and net income appear in Luca's reports and the registry.", + }, + ].map((step) => ( +
+
+ {step.num} +
+
+

{step.title}

+

{step.desc}

+
+
+ ))} +
+
+
+
+ + +
+ ); +} diff --git a/src/app/home-header.tsx b/src/app/home-header.tsx index 246920c..ca92286 100644 --- a/src/app/home-header.tsx +++ b/src/app/home-header.tsx @@ -28,14 +28,13 @@ const SOCIAL = [ ]; const NAV_LINKS = [ - { href: "/registry", label: "Registry" }, - { href: "/leaderboard", label: "Leaderboard" }, - { href: "/b20", label: "B20" }, - { href: "/research", label: "Research" }, - { href: "/developer", label: "API" }, - { href: "/docs", label: "Docs" }, - { href: "/luca", label: "Luca" }, - { href: "/registry#verify", label: "Submit Agent" }, + { href: "/registry", label: "Registry" }, + { href: "/leaderboard", label: "Leaderboard" }, + { href: "/adopt", label: "Adopt" }, + { href: "/research", label: "Research" }, + { href: "/developer", label: "API" }, + { href: "/docs", label: "Docs" }, + { href: "/luca", label: "Luca" }, ]; export function HomeHeader() { diff --git a/src/app/how-it-works/page.tsx b/src/app/how-it-works/page.tsx new file mode 100644 index 0000000..32aca1e --- /dev/null +++ b/src/app/how-it-works/page.tsx @@ -0,0 +1,205 @@ +import Link from "next/link"; +import { HomeHeader } from "@/app/home-header"; +import { SiteFooter } from "@/components/site-footer"; + +export default function HowItWorksPage() { + return ( +
+ + + {/* Hero */} +
+

+ Architecture +

+

+ How Zetta works. +

+

+ Zetta turns wallet activity into readable financial books. The Agent Wallet Manifest is the key that unlocks the whole stack. +

+
+ + {/* Stack diagram */} +
+
+ {[ + { + num: "01", + title: "Agent", + desc: "Earns, spends, settles on Base.", + highlight: false, + }, + { + num: "02", + title: "Manifest", + desc: "Declares wallet identity (.agent/wallets.json).", + highlight: true, + }, + { + num: "03", + title: "Registry", + desc: "Indexed, verified, attribution confirmed.", + highlight: false, + }, + { + num: "04", + title: "Books", + desc: "Classified P&L: revenue, expenses, net income.", + highlight: false, + }, + { + num: "05", + title: "Luca", + desc: "Financial intelligence and reporting.", + highlight: false, + }, + ].map((step, i, arr) => ( +
+
+
+ + {step.num} + + + {step.title} + +
+

+ {step.desc} +

+
+ {i < arr.length - 1 && ( + + )} +
+ ))} +
+
+ + {/* "Why the Manifest is Step 1" callout */} +
+
+

+ Why the Manifest is Step 1 +

+

+ Without a declared manifest, Zetta cannot attribute any transaction to your agent. No manifest = no books, no revenue, no treasury profile, no inclusion in Luca's reports or Agent GDP. The manifest is the identity declaration that makes everything downstream possible. +

+
+
+ + {/* Three-column "What each layer does" grid */} +
+

What each layer does

+
+ {[ + { + title: "Attribution Layer", + desc: "Wallets declare which addresses belong to each agent. This is the foundation — no attribution, no books.", + }, + { + title: "Classification Layer", + desc: "Attributed transactions are classified into operating revenue, expenses, treasury movement, and net income.", + }, + { + title: "Intelligence Layer", + desc: "Luca reads attributed books and produces financial verdicts: signals, summaries, confidence levels, trend analysis.", + }, + ].map((layer) => ( +
+

{layer.title}

+

{layer.desc}

+
+ ))} +
+
+ + {/* "What goes in the manifest" code block */} +
+

What goes in the manifest

+
{`{
+  "version": "1.0",
+  "agent": "your-agent-slug",
+  "wallets": [
+    {
+      "address": "0x...",
+      "role": "treasury",
+      "chain": "base",
+      "label": "Main treasury wallet"
+    }
+  ]
+}`}
+
+ + {/* CTA strip */} +
+
+ Submit Your Manifest → + Read the Methodology → +
+
+ + +
+ ); +} diff --git a/src/components/site-footer.tsx b/src/components/site-footer.tsx index 3ba37cd..6453f24 100644 --- a/src/components/site-footer.tsx +++ b/src/components/site-footer.tsx @@ -20,12 +20,14 @@ export function SiteFooter() { Registry Leaderboard B20 Intelligence + Adopt Research API Luca

Resources

+ How It Works Methodology Submit Agent Manifest Guide