auramaxx 1.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +26 -0
- package/README.md +112 -0
- package/bin/aurawallet.js +121 -0
- package/docs/ADAPTERS.md +467 -0
- package/docs/API.md +2679 -0
- package/docs/APPS.md +198 -0
- package/docs/ARCHITECTURE.md +350 -0
- package/docs/AUTH.md +698 -0
- package/docs/BEST-PRACTICES.md +121 -0
- package/docs/CLI.md +61 -0
- package/docs/DEVELOPING-APPS.md +452 -0
- package/docs/EXTENSION.md +97 -0
- package/docs/JOBS.md +33 -0
- package/docs/MCP.md +76 -0
- package/docs/PROTOCOL.md +142 -0
- package/docs/SETUP.md +219 -0
- package/docs/WORKSPACE.md +672 -0
- package/docs/agent-auth.md +63 -0
- package/docs/aura-file.md +48 -0
- package/docs/credentials.md +53 -0
- package/docs/external/getting-started.md +65 -0
- package/docs/external/overview.md +45 -0
- package/docs/external/use-cases.md +48 -0
- package/docs/external/why-aura.md +35 -0
- package/docs/jobs/connect-agent.md +77 -0
- package/docs/jobs/migrate-from-dotenv.md +79 -0
- package/docs/jobs/recover-from-lockout.md +72 -0
- package/docs/jobs/secure-ci.md +63 -0
- package/docs/oauth2.md +42 -0
- package/docs/passkeys.md +60 -0
- package/docs/security.md +540 -0
- package/docs/specs/aura-open-protocol.md +61 -0
- package/docs/specs/aura-provider-plugin.md +24 -0
- package/docs/specs/aura-registry-model.md +31 -0
- package/docs/specs/fixtures/invalid-bad-key.aura +1 -0
- package/docs/specs/fixtures/invalid-bad-unicode-escape.aura +1 -0
- package/docs/specs/fixtures/invalid-duplicate-key.aura +2 -0
- package/docs/specs/fixtures/valid-basic.aura +4 -0
- package/docs/specs/fixtures/valid-provider-ref.aura +1 -0
- package/docs/specs/fixtures/valid-quoted-escapes.aura +2 -0
- package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
- package/docs/totp.md +40 -0
- package/docs/wallet/AI.md +508 -0
- package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
- package/docs/wallet/README.md +47 -0
- package/docs/wallet/STRATEGY.md +89 -0
- package/next.config.ts +21 -0
- package/package.json +151 -0
- package/postcss.config.mjs +8 -0
- package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
- package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
- package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +447 -0
- package/public/logo-chevron.svg +31 -0
- package/public/logo-concentric.svg +31 -0
- package/public/logo-crosshatch.svg +39 -0
- package/public/logo-dashed.svg +39 -0
- package/public/logo-horizontal.svg +31 -0
- package/public/logo-m56.svg +64 -0
- package/public/logo.webp +0 -0
- package/scripts/add-app.js +245 -0
- package/scripts/init.sh +57 -0
- package/scripts/migrate-apikeys-to-credentials.ts +35 -0
- package/scripts/sandbox-agent-flow.sh +235 -0
- package/scripts/sandbox.sh +175 -0
- package/scripts/validate-job-docs.mjs +125 -0
- package/server/abi/SwapHelper.json +438 -0
- package/server/cli/approval.ts +447 -0
- package/server/cli/commands/app.ts +204 -0
- package/server/cli/commands/cron.ts +24 -0
- package/server/cli/commands/doctor.ts +1007 -0
- package/server/cli/commands/env.ts +456 -0
- package/server/cli/commands/init.ts +752 -0
- package/server/cli/commands/mcp.ts +125 -0
- package/server/cli/commands/restore.ts +314 -0
- package/server/cli/commands/shell-hook.ts +468 -0
- package/server/cli/commands/start.ts +62 -0
- package/server/cli/commands/status.ts +59 -0
- package/server/cli/commands/stop.ts +14 -0
- package/server/cli/commands/token.ts +180 -0
- package/server/cli/commands/unlock.ts +49 -0
- package/server/cli/commands/vault.ts +417 -0
- package/server/cli/index.ts +328 -0
- package/server/cli/lib/aura-parser.ts +64 -0
- package/server/cli/lib/credential-create.ts +74 -0
- package/server/cli/lib/credential-resolve.ts +254 -0
- package/server/cli/lib/dotenv-migrate.ts +116 -0
- package/server/cli/lib/dotenv-parser.ts +146 -0
- package/server/cli/lib/http.ts +91 -0
- package/server/cli/lib/init-steps.ts +76 -0
- package/server/cli/lib/local-agent-trust.ts +45 -0
- package/server/cli/lib/process.ts +136 -0
- package/server/cli/lib/prompt.ts +85 -0
- package/server/cli/lib/theme.ts +240 -0
- package/server/cli/socket.ts +570 -0
- package/server/cli/transport-client.ts +50 -0
- package/server/cron/index.ts +137 -0
- package/server/cron/job.ts +31 -0
- package/server/cron/jobs/balance-sync.ts +436 -0
- package/server/cron/jobs/incoming-scan.ts +506 -0
- package/server/cron/jobs/native-price.ts +70 -0
- package/server/cron/jobs/orphan-cleanup.ts +40 -0
- package/server/cron/jobs/strategy-runner.ts +175 -0
- package/server/cron/scheduler.ts +125 -0
- package/server/index.ts +406 -0
- package/server/lib/adapters/factory.ts +110 -0
- package/server/lib/adapters/index.ts +19 -0
- package/server/lib/adapters/router.ts +297 -0
- package/server/lib/adapters/telegram.ts +645 -0
- package/server/lib/adapters/types.ts +89 -0
- package/server/lib/adapters/webhook.ts +95 -0
- package/server/lib/address.ts +49 -0
- package/server/lib/agent-auth/contracts.ts +1194 -0
- package/server/lib/agent-profiles.ts +328 -0
- package/server/lib/ai.ts +285 -0
- package/server/lib/api-registry/contracts.ts +86 -0
- package/server/lib/api-registry/validation.ts +172 -0
- package/server/lib/apikey-migration.ts +189 -0
- package/server/lib/app-installer.ts +505 -0
- package/server/lib/app-tokens.ts +247 -0
- package/server/lib/auth.ts +314 -0
- package/server/lib/batch.ts +242 -0
- package/server/lib/cold.ts +874 -0
- package/server/lib/config.ts +381 -0
- package/server/lib/credential-access-audit.ts +85 -0
- package/server/lib/credential-access-policy.ts +110 -0
- package/server/lib/credential-health.ts +343 -0
- package/server/lib/credential-import.ts +487 -0
- package/server/lib/credential-scope.ts +87 -0
- package/server/lib/credential-shares.ts +190 -0
- package/server/lib/credential-transport.ts +342 -0
- package/server/lib/credential-vault.ts +77 -0
- package/server/lib/credentials.ts +333 -0
- package/server/lib/crypto.ts +8 -0
- package/server/lib/db.ts +15 -0
- package/server/lib/defaults.ts +366 -0
- package/server/lib/dex/index.ts +80 -0
- package/server/lib/dex/relay.ts +235 -0
- package/server/lib/dex/types.ts +59 -0
- package/server/lib/dex/uniswap.ts +370 -0
- package/server/lib/e2e-agent/artifacts.ts +36 -0
- package/server/lib/e2e-agent/contracts.ts +112 -0
- package/server/lib/e2e-agent/validation.ts +135 -0
- package/server/lib/encrypt.ts +128 -0
- package/server/lib/error.ts +20 -0
- package/server/lib/events.ts +205 -0
- package/server/lib/hot.ts +357 -0
- package/server/lib/key-fingerprint.ts +28 -0
- package/server/lib/logger.ts +331 -0
- package/server/lib/network.ts +137 -0
- package/server/lib/notifications.ts +219 -0
- package/server/lib/oauth2-refresh.ts +241 -0
- package/server/lib/oursecret.ts +54 -0
- package/server/lib/passkey-credential.ts +360 -0
- package/server/lib/passkey.ts +68 -0
- package/server/lib/permissions.ts +248 -0
- package/server/lib/pino.ts +24 -0
- package/server/lib/policy-preview.ts +138 -0
- package/server/lib/price.ts +338 -0
- package/server/lib/prices.ts +34 -0
- package/server/lib/project-scope.ts +239 -0
- package/server/lib/resolve-action.ts +427 -0
- package/server/lib/resolve.ts +36 -0
- package/server/lib/sessions.ts +632 -0
- package/server/lib/solana/connection.ts +26 -0
- package/server/lib/solana/jupiter.ts +128 -0
- package/server/lib/solana/transfer.ts +108 -0
- package/server/lib/solana/wallet.ts +136 -0
- package/server/lib/strategy/emits.ts +21 -0
- package/server/lib/strategy/engine.ts +1305 -0
- package/server/lib/strategy/executor.ts +115 -0
- package/server/lib/strategy/hook-context.ts +158 -0
- package/server/lib/strategy/hooks.ts +990 -0
- package/server/lib/strategy/index.ts +28 -0
- package/server/lib/strategy/installer.ts +305 -0
- package/server/lib/strategy/loader.ts +256 -0
- package/server/lib/strategy/message.ts +235 -0
- package/server/lib/strategy/repository.ts +218 -0
- package/server/lib/strategy/session-logger.ts +693 -0
- package/server/lib/strategy/sources.ts +288 -0
- package/server/lib/strategy/state.ts +189 -0
- package/server/lib/strategy/templates.ts +403 -0
- package/server/lib/strategy/tick.ts +404 -0
- package/server/lib/strategy/types.ts +230 -0
- package/server/lib/swap.ts +3 -0
- package/server/lib/temp.ts +86 -0
- package/server/lib/token-metadata.ts +86 -0
- package/server/lib/token-safety.ts +200 -0
- package/server/lib/token-search.ts +444 -0
- package/server/lib/totp.ts +194 -0
- package/server/lib/transactions.ts +123 -0
- package/server/lib/transport.ts +75 -0
- package/server/lib/txhistory/decoder.ts +262 -0
- package/server/lib/txhistory/enricher.ts +652 -0
- package/server/lib/txhistory/index.ts +391 -0
- package/server/lib/txhistory/signatures.ts +59 -0
- package/server/lib/verified-summary.ts +421 -0
- package/server/mcp/profile-policy.ts +30 -0
- package/server/mcp/server.ts +619 -0
- package/server/mcp/tools.ts +523 -0
- package/server/middleware/auth.ts +119 -0
- package/server/middleware/requestLogger.ts +84 -0
- package/server/routes/actions.ts +459 -0
- package/server/routes/adapters.ts +703 -0
- package/server/routes/addressbook.ts +113 -0
- package/server/routes/ai.ts +34 -0
- package/server/routes/apikeys.ts +295 -0
- package/server/routes/apps.ts +601 -0
- package/server/routes/auth.ts +457 -0
- package/server/routes/backup.ts +340 -0
- package/server/routes/batch.ts +270 -0
- package/server/routes/bookmarks.ts +162 -0
- package/server/routes/credential-shares.ts +198 -0
- package/server/routes/credential-vaults.ts +154 -0
- package/server/routes/credentials.ts +1290 -0
- package/server/routes/dashboard.ts +71 -0
- package/server/routes/defaults.ts +124 -0
- package/server/routes/fund.ts +229 -0
- package/server/routes/import.ts +352 -0
- package/server/routes/launch.ts +665 -0
- package/server/routes/lock.ts +54 -0
- package/server/routes/logs.ts +68 -0
- package/server/routes/nuke.ts +111 -0
- package/server/routes/passkey-credentials.ts +99 -0
- package/server/routes/passkey.ts +346 -0
- package/server/routes/portfolio.ts +217 -0
- package/server/routes/price.ts +63 -0
- package/server/routes/resolve.ts +31 -0
- package/server/routes/security.ts +45 -0
- package/server/routes/send-evm.ts +241 -0
- package/server/routes/send-solana.ts +281 -0
- package/server/routes/send.ts +178 -0
- package/server/routes/setup.ts +210 -0
- package/server/routes/strategy.ts +894 -0
- package/server/routes/swap-evm.ts +353 -0
- package/server/routes/swap-solana.ts +177 -0
- package/server/routes/swap.ts +356 -0
- package/server/routes/token.ts +247 -0
- package/server/routes/unlock.ts +403 -0
- package/server/routes/wallet-assets.ts +361 -0
- package/server/routes/wallet-transactions.ts +515 -0
- package/server/routes/wallet.ts +710 -0
- package/server/types.ts +146 -0
- package/skills/aurawallet/SKILL.md +739 -0
- package/skills/aurawallet-setup/SKILL.md +74 -0
- package/skills/security-review/SKILL.md +148 -0
- package/src/app/api/agent-requests/route.ts +30 -0
- package/src/app/api/apps/install/route.ts +126 -0
- package/src/app/api/apps/manifests/route.ts +16 -0
- package/src/app/api/apps/static/[...path]/route.ts +57 -0
- package/src/app/api/events/route.ts +92 -0
- package/src/app/api/page.tsx +212 -0
- package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
- package/src/app/api/workspace/[id]/apps/route.ts +81 -0
- package/src/app/api/workspace/[id]/export/route.ts +67 -0
- package/src/app/api/workspace/[id]/route.ts +168 -0
- package/src/app/api/workspace/auth.ts +34 -0
- package/src/app/api/workspace/config/route.ts +106 -0
- package/src/app/api/workspace/import/route.ts +127 -0
- package/src/app/api/workspace/route.ts +116 -0
- package/src/app/app/page.tsx +2122 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/docs/page.tsx +178 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +572 -0
- package/src/app/health/page.tsx +5 -0
- package/src/app/hello/page.tsx +15 -0
- package/src/app/icon.png +0 -0
- package/src/app/layout.tsx +34 -0
- package/src/app/page.tsx +986 -0
- package/src/app/providers.tsx +90 -0
- package/src/app/share/[token]/page.tsx +295 -0
- package/src/components/ChainSelector.tsx +144 -0
- package/src/components/HumanActionBar.tsx +695 -0
- package/src/components/NotificationDrawer.tsx +129 -0
- package/src/components/apps/AgentKeysApp.tsx +490 -0
- package/src/components/apps/App.tsx +153 -0
- package/src/components/apps/AppGrid.tsx +15 -0
- package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
- package/src/components/apps/DraggableApp.tsx +562 -0
- package/src/components/apps/IFrameApp.tsx +73 -0
- package/src/components/apps/LogsApp.tsx +360 -0
- package/src/components/apps/SendApp.tsx +394 -0
- package/src/components/apps/SetupWizardApp.tsx +1004 -0
- package/src/components/apps/SystemDefaultsApp.tsx +845 -0
- package/src/components/apps/ThirdPartyApp.tsx +428 -0
- package/src/components/apps/TokenApp.tsx +319 -0
- package/src/components/apps/TransactionsApp.tsx +438 -0
- package/src/components/apps/WalletDetailApp.tsx +1505 -0
- package/src/components/apps/index.ts +13 -0
- package/src/components/design-system/Button.tsx +53 -0
- package/src/components/design-system/ChainIndicator.tsx +65 -0
- package/src/components/design-system/ChainSelector.tsx +137 -0
- package/src/components/design-system/ConfirmationModal.tsx +106 -0
- package/src/components/design-system/ConfirmationPopover.tsx +81 -0
- package/src/components/design-system/Drawer.tsx +123 -0
- package/src/components/design-system/FilterDropdown.tsx +72 -0
- package/src/components/design-system/Modal.tsx +206 -0
- package/src/components/design-system/Popover.tsx +142 -0
- package/src/components/design-system/TextInput.tsx +85 -0
- package/src/components/design-system/Toggle.tsx +58 -0
- package/src/components/design-system/index.ts +11 -0
- package/src/components/docs/DocsThemeToggle.tsx +49 -0
- package/src/components/health/CredentialHealthDashboard.tsx +214 -0
- package/src/components/icons/ChainIcons.tsx +72 -0
- package/src/components/layout/AppStoreDrawer.tsx +369 -0
- package/src/components/layout/ContentArea.tsx +21 -0
- package/src/components/layout/TabBar.tsx +278 -0
- package/src/components/layout/WalletSidebar.tsx +1033 -0
- package/src/components/layout/index.ts +4 -0
- package/src/components/marketing/AuraWalletSpecOverlay.tsx +635 -0
- package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
- package/src/components/vault/ApiKeysConsole.tsx +1080 -0
- package/src/components/vault/AuditConsole.tsx +584 -0
- package/src/components/vault/CredentialDetail.tsx +455 -0
- package/src/components/vault/CredentialEmpty.tsx +55 -0
- package/src/components/vault/CredentialField.tsx +361 -0
- package/src/components/vault/CredentialForm.tsx +1212 -0
- package/src/components/vault/CredentialList.tsx +165 -0
- package/src/components/vault/CredentialRow.tsx +97 -0
- package/src/components/vault/CredentialShareModal.tsx +178 -0
- package/src/components/vault/CredentialVault.tsx +754 -0
- package/src/components/vault/CredentialWalletWidget.tsx +103 -0
- package/src/components/vault/ImportCredentialsModal.tsx +515 -0
- package/src/components/vault/LargeTypeModal.tsx +64 -0
- package/src/components/vault/PasswordGenerator.tsx +224 -0
- package/src/components/vault/TOTPDisplay.tsx +123 -0
- package/src/components/vault/VaultSidebar.tsx +413 -0
- package/src/components/vault/types.ts +54 -0
- package/src/context/AuthContext.tsx +337 -0
- package/src/context/PriceContext.tsx +113 -0
- package/src/context/ThemeContext.tsx +164 -0
- package/src/context/WebSocketContext.tsx +269 -0
- package/src/context/WorkspaceContext.tsx +668 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useAgentActions.ts +368 -0
- package/src/hooks/useBalance.ts +103 -0
- package/src/hooks/useBalances.ts +129 -0
- package/src/instrumentation.ts +12 -0
- package/src/lib/api.ts +449 -0
- package/src/lib/app-loader.ts +148 -0
- package/src/lib/app-registry.ts +178 -0
- package/src/lib/app-sdk.ts +157 -0
- package/src/lib/audit-console-adapter.ts +151 -0
- package/src/lib/auth-client.ts +75 -0
- package/src/lib/config.ts +74 -0
- package/src/lib/crypto.ts +112 -0
- package/src/lib/db.ts +21 -0
- package/src/lib/docs.ts +390 -0
- package/src/lib/events.ts +361 -0
- package/src/lib/pino.ts +24 -0
- package/src/lib/theme-handlers.ts +168 -0
- package/src/lib/theme.ts +351 -0
- package/src/lib/tokenData.ts +378 -0
- package/src/lib/vault-crypto.ts +129 -0
- package/src/lib/websocket-server.ts +302 -0
- package/src/lib/websocket-setup.ts +79 -0
- package/src/lib/wordlist.ts +2050 -0
- package/src/lib/workspace-handlers.ts +285 -0
- package/start.sh +80 -0
- package/tailwind.config.ts +99 -0
- package/tsconfig.json +42 -0
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ╔══════════════════════════════════════════════════════════════════════╗
|
|
3
|
+
* ║ LANDING PAGE REWRITE — CONTENT BLUEPRINT ║
|
|
4
|
+
* ║ Date: 2025-02-15 | Source: team audit of docs, todos, page copy ║
|
|
5
|
+
* ╚══════════════════════════════════════════════════════════════════════╝
|
|
6
|
+
*
|
|
7
|
+
* DIAGNOSIS
|
|
8
|
+
* ─────────
|
|
9
|
+
* Current page starts at Level 2 (wallet tiers, multi-chain, memory-only auth)
|
|
10
|
+
* and assumes the visitor already knows what "agent wallets" means.
|
|
11
|
+
* It's impressive but alienating. The mecha/spec-sheet aesthetic is strong —
|
|
12
|
+
* keep the visual language, rewrite the content progression.
|
|
13
|
+
*
|
|
14
|
+
* CORE MESSAGE (one sentence)
|
|
15
|
+
* ───────────────────────────
|
|
16
|
+
* "Your AI agent can move money — and you stay in control."
|
|
17
|
+
*
|
|
18
|
+
* That's it. Everything else is detail.
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
22
|
+
* REWRITE: SIMPLE → COMPLEX PROGRESSION
|
|
23
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
24
|
+
*
|
|
25
|
+
*
|
|
26
|
+
* ── SECTION 01: HERO (5 seconds) ─────────────────────────────────────
|
|
27
|
+
*
|
|
28
|
+
* What someone should understand before they even scroll:
|
|
29
|
+
*
|
|
30
|
+
* Headline:
|
|
31
|
+
* "YOUR AGENT CAN MOVE MONEY NOW."
|
|
32
|
+
*
|
|
33
|
+
* Subline:
|
|
34
|
+
* "You approve every transaction. From anywhere."
|
|
35
|
+
*
|
|
36
|
+
* CTA:
|
|
37
|
+
* [ GET STARTED ] [ SEE HOW IT WORKS ↓ ]
|
|
38
|
+
*
|
|
39
|
+
* That's the entire hero. No jargon. No "multi-tier crypto wallet
|
|
40
|
+
* with agent token system." A person with zero context reads this
|
|
41
|
+
* and understands: my AI can handle money, I'm still in charge.
|
|
42
|
+
*
|
|
43
|
+
*
|
|
44
|
+
* ── SECTION 02: HOW IT WORKS (30 seconds) ────────────────────────────
|
|
45
|
+
*
|
|
46
|
+
* Three steps. Visual. Replaces the "fragmentation problem" section
|
|
47
|
+
* (which assumes the visitor has *already tried* other solutions).
|
|
48
|
+
*
|
|
49
|
+
* ┌─────────────────────────────────────────────────────┐
|
|
50
|
+
* │ 1. AGENT PROPOSES "Swap 100 USDC → ETH" │
|
|
51
|
+
* │ 2. YOU APPROVE Tap once — phone, laptop, │
|
|
52
|
+
* │ terminal, Telegram, anywhere │
|
|
53
|
+
* │ 3. IT HAPPENS Transaction executes. │
|
|
54
|
+
* │ Spending limit decremented. │
|
|
55
|
+
* └─────────────────────────────────────────────────────┘
|
|
56
|
+
*
|
|
57
|
+
* This is the "aha" moment. Show the DeviceMorph here — the morphing
|
|
58
|
+
* device visual *now has context* because the visitor understands
|
|
59
|
+
* what "approve from anywhere" means.
|
|
60
|
+
*
|
|
61
|
+
*
|
|
62
|
+
* ── SECTION 03: WHY IT'S SAFE (2 minutes) ────────────────────────────
|
|
63
|
+
*
|
|
64
|
+
* Now we earn trust. Three guarantees, each one sentence:
|
|
65
|
+
*
|
|
66
|
+
* "KEYS NEVER LEAVE YOUR MACHINE."
|
|
67
|
+
* Local-first. No cloud. Your keys, your hardware.
|
|
68
|
+
*
|
|
69
|
+
* "SPENDING LIMITS ARE ENFORCED IN MEMORY."
|
|
70
|
+
* Not in a database. Not in a config file. In volatile RAM.
|
|
71
|
+
* Server restart = every token revoked instantly.
|
|
72
|
+
*
|
|
73
|
+
* "NOTHING MOVES WITHOUT YOUR APPROVAL."
|
|
74
|
+
* Agents propose. You approve. Cold wallets are human-only.
|
|
75
|
+
* Hot wallets have per-token caps. Temp wallets auto-sweep.
|
|
76
|
+
*
|
|
77
|
+
* This is where the current security Q&A cards live — but promoted
|
|
78
|
+
* to a full section instead of hidden scroll-reveals. The memory-only
|
|
79
|
+
* auth model is the moat. Lead with it.
|
|
80
|
+
*
|
|
81
|
+
*
|
|
82
|
+
* ── SECTION 04: WHAT IT DOES (2 minutes) ─────────────────────────────
|
|
83
|
+
*
|
|
84
|
+
* Now the spec sheet. For people who stayed this long, give them
|
|
85
|
+
* everything. This is where the mecha cards shine:
|
|
86
|
+
*
|
|
87
|
+
* WALLET TIERS
|
|
88
|
+
* Cold — human-only, password-protected, source of funds
|
|
89
|
+
* Hot — agent-accessible, spending limits, token-gated
|
|
90
|
+
* Temp — ephemeral, full agent control, auto-sweep back
|
|
91
|
+
*
|
|
92
|
+
* OPERATIONS
|
|
93
|
+
* send / swap / fund / launch / wallet-create / approvals
|
|
94
|
+
*
|
|
95
|
+
* CHAINS
|
|
96
|
+
* Base · Ethereum · Solana — one backend, one permission model
|
|
97
|
+
*
|
|
98
|
+
* INTERFACES
|
|
99
|
+
* Dashboard · Terminal · Telegram · MCP · Claude Code
|
|
100
|
+
* Same wallet. Same limits. Everywhere.
|
|
101
|
+
*
|
|
102
|
+
*
|
|
103
|
+
* ── SECTION 05: GET STARTED (30 seconds) ─────────────────────────────
|
|
104
|
+
*
|
|
105
|
+
* Code block. Copy-paste. Done.
|
|
106
|
+
*
|
|
107
|
+
* npx aurawallet init
|
|
108
|
+
* npx aurawallet start
|
|
109
|
+
*
|
|
110
|
+
* Then three paths:
|
|
111
|
+
* → "I'm a developer" → /docs
|
|
112
|
+
* → "I'm an AI agent" → /api
|
|
113
|
+
* → "Show me the app" → /app
|
|
114
|
+
*
|
|
115
|
+
*
|
|
116
|
+
* ── SECTION 06: CLOSING (5 seconds) ──────────────────────────────────
|
|
117
|
+
*
|
|
118
|
+
* Keep the current vision statement — it's good:
|
|
119
|
+
*
|
|
120
|
+
* "AI MAKES AGENTS POWERFUL. WE MAKE THEM SAFE."
|
|
121
|
+
*
|
|
122
|
+
* Add: "Open source. MIT licensed. Built for agents."
|
|
123
|
+
*
|
|
124
|
+
*
|
|
125
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
126
|
+
* DESIGN NOTES
|
|
127
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
128
|
+
*
|
|
129
|
+
* KEEP:
|
|
130
|
+
* - Mecha/industrial aesthetic (crop marks, clip-paths, hazard stripes)
|
|
131
|
+
* - Tyvek texture background, voltage yellow, void black palette
|
|
132
|
+
* - Ghost numbers (01, 02, 03...) as structural anchors
|
|
133
|
+
* - ManifestSection sidebar labels
|
|
134
|
+
* - ScrollReveal animations
|
|
135
|
+
* - DeviceMorphExperience component (move to Section 02)
|
|
136
|
+
*
|
|
137
|
+
* CHANGE:
|
|
138
|
+
* - Hero: strip to one headline + one subline + two CTAs
|
|
139
|
+
* - Move "how it works" before "why it's safe" before "what it does"
|
|
140
|
+
* - Promote security from scroll-reveal cards to full section
|
|
141
|
+
* - Add quickstart code block as its own section
|
|
142
|
+
* - Add CTA buttons to hero (currently first CTA is in Section 04)
|
|
143
|
+
* - Footer: add "Open source · MIT licensed" + GitHub link
|
|
144
|
+
*
|
|
145
|
+
* CUT:
|
|
146
|
+
* - "THE FRAGMENTATION PROBLEM" card (Section 02)
|
|
147
|
+
* → The visitor hasn't experienced fragmentation yet.
|
|
148
|
+
* Replace with the 3-step "how it works" which is universally
|
|
149
|
+
* understandable. The fragmentation argument can live in /docs.
|
|
150
|
+
* - "EVERY INTERFACE IS AN ISLAND" pull quote
|
|
151
|
+
* → Assumes prior pain. The device morph already shows
|
|
152
|
+
* multi-interface support visually.
|
|
153
|
+
*
|
|
154
|
+
*
|
|
155
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
156
|
+
* COPY REFERENCE — FINAL HEADLINES
|
|
157
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
158
|
+
*
|
|
159
|
+
* Section 01: YOUR AGENT CAN MOVE MONEY NOW.
|
|
160
|
+
* Section 02: THREE STEPS. THAT'S IT.
|
|
161
|
+
* Section 03: KEYS NEVER LEAVE YOUR MACHINE.
|
|
162
|
+
* Section 04: SEND. SWAP. LAUNCH. TRACK.
|
|
163
|
+
* Section 05: TWO COMMANDS. YOU'RE LIVE.
|
|
164
|
+
* Section 06: AI MAKES AGENTS POWERFUL. WE MAKE THEM SAFE.
|
|
165
|
+
*
|
|
166
|
+
* ═══════════════════════════════════════════════════════════════════════
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
'use client';
|
|
170
|
+
|
|
171
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
172
|
+
import Link from 'next/link';
|
|
173
|
+
|
|
174
|
+
/* ─── Inline Sub-Components ──────────────────────────────────────────── */
|
|
175
|
+
|
|
176
|
+
const CropMark = ({ className }: { className?: string }) => (
|
|
177
|
+
<div className={`absolute w-8 h-8 border-voltage/50 pointer-events-none ${className}`} />
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
const ManifestSection: React.FC<{
|
|
181
|
+
children: React.ReactNode;
|
|
182
|
+
className?: string;
|
|
183
|
+
label?: string;
|
|
184
|
+
}> = ({ children, className = '', label }) => (
|
|
185
|
+
<section
|
|
186
|
+
className={`relative min-h-screen w-full flex flex-col justify-center border-b border-ink px-4 md:px-12 pointer-events-none ${className}`}
|
|
187
|
+
>
|
|
188
|
+
{/* Sidebar label rail */}
|
|
189
|
+
<div className="absolute left-0 top-0 bottom-0 w-12 border-r border-ink hidden md:flex flex-col items-center justify-between py-8 bg-tyvek-dim/50 backdrop-blur-sm z-20">
|
|
190
|
+
<div className="text-[10px] font-mono rotate-180 text-vertical text-ink/50 tracking-widest">
|
|
191
|
+
{label || 'UNLABELED_SEC'}
|
|
192
|
+
</div>
|
|
193
|
+
<div className="w-px h-12 bg-voltage" />
|
|
194
|
+
</div>
|
|
195
|
+
<div className="pointer-events-auto relative z-10 w-full h-full flex flex-col justify-center pl-0 md:pl-12">
|
|
196
|
+
{children}
|
|
197
|
+
</div>
|
|
198
|
+
</section>
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
const MechaCard: React.FC<{
|
|
202
|
+
children: React.ReactNode;
|
|
203
|
+
className?: string;
|
|
204
|
+
dark?: boolean;
|
|
205
|
+
allowOverflow?: boolean;
|
|
206
|
+
}> = ({ children, className = '', dark = false, allowOverflow = false }) => (
|
|
207
|
+
<div
|
|
208
|
+
className={`relative clip-mech-modal border-mech ${dark ? 'bg-void text-tyvek' : 'bg-tyvek text-ink'} ${allowOverflow ? '' : 'overflow-hidden'} ${className}`}
|
|
209
|
+
>
|
|
210
|
+
<div
|
|
211
|
+
className={`absolute top-0 right-0 w-8 h-8 ${dark ? 'bg-voltage' : 'bg-ink'}`}
|
|
212
|
+
style={{ clipPath: 'polygon(100% 0, 0 0, 100% 100%)' }}
|
|
213
|
+
/>
|
|
214
|
+
<div className="absolute inset-0 bg-grid-pattern opacity-5 pointer-events-none" />
|
|
215
|
+
{children}
|
|
216
|
+
</div>
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
const MechaButton: React.FC<{
|
|
220
|
+
children: React.ReactNode;
|
|
221
|
+
href?: string;
|
|
222
|
+
variant?: 'primary' | 'secondary';
|
|
223
|
+
className?: string;
|
|
224
|
+
}> = ({ children, href, variant = 'primary', className = '' }) => {
|
|
225
|
+
const isPrimary = variant === 'primary';
|
|
226
|
+
const classes = `relative h-14 px-8 font-mono font-bold text-sm uppercase tracking-wider flex items-center justify-center gap-3 clip-mech-header border-mech transition-all duration-200 group ${isPrimary ? 'bg-voltage text-void hover:bg-void hover:text-voltage' : 'bg-void text-tyvek hover:bg-tyvek hover:text-void border border-concrete'} ${className}`;
|
|
227
|
+
|
|
228
|
+
const inner = (
|
|
229
|
+
<>
|
|
230
|
+
<div className={`absolute left-0 top-0 w-1 h-full ${isPrimary ? 'bg-void' : 'bg-voltage'}`} />
|
|
231
|
+
{children}
|
|
232
|
+
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none" />
|
|
233
|
+
</>
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
if (href) {
|
|
237
|
+
return (
|
|
238
|
+
<Link href={href} className={classes}>
|
|
239
|
+
{inner}
|
|
240
|
+
</Link>
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
return <button className={classes}>{inner}</button>;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/** IntersectionObserver-based scroll reveal (replaces framer-motion whileInView) */
|
|
247
|
+
const ScrollReveal: React.FC<{
|
|
248
|
+
children: React.ReactNode;
|
|
249
|
+
className?: string;
|
|
250
|
+
delay?: number;
|
|
251
|
+
}> = ({ children, className = '', delay = 0 }) => {
|
|
252
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
253
|
+
const [visible, setVisible] = useState(false);
|
|
254
|
+
|
|
255
|
+
useEffect(() => {
|
|
256
|
+
const el = ref.current;
|
|
257
|
+
if (!el) return;
|
|
258
|
+
const observer = new IntersectionObserver(
|
|
259
|
+
([entry]) => {
|
|
260
|
+
if (entry.isIntersecting) {
|
|
261
|
+
setVisible(true);
|
|
262
|
+
observer.disconnect();
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{ threshold: 0.15 }
|
|
266
|
+
);
|
|
267
|
+
observer.observe(el);
|
|
268
|
+
return () => observer.disconnect();
|
|
269
|
+
}, []);
|
|
270
|
+
|
|
271
|
+
return (
|
|
272
|
+
<div
|
|
273
|
+
ref={ref}
|
|
274
|
+
className={className}
|
|
275
|
+
style={{
|
|
276
|
+
opacity: visible ? 1 : 0,
|
|
277
|
+
transform: visible ? 'translateY(0)' : 'translateY(24px)',
|
|
278
|
+
transition: `opacity 0.6s cubic-bezier(0.16,1,0.3,1) ${delay}ms, transform 0.6s cubic-bezier(0.16,1,0.3,1) ${delay}ms`,
|
|
279
|
+
}}
|
|
280
|
+
>
|
|
281
|
+
{children}
|
|
282
|
+
</div>
|
|
283
|
+
);
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
/* ─── Main Component ─────────────────────────────────────────────────── */
|
|
287
|
+
|
|
288
|
+
export const AuraWalletSpecOverlay = () => {
|
|
289
|
+
return (
|
|
290
|
+
<main className="relative z-[10] w-full text-ink font-sans selection:bg-voltage selection:text-void">
|
|
291
|
+
|
|
292
|
+
{/* ── FIXED HUD HEADER ─────────────────────────────────────── */}
|
|
293
|
+
<header className="fixed top-0 left-0 w-full z-50 pointer-events-none mix-blend-difference text-white p-4 md:p-6 flex justify-between items-start">
|
|
294
|
+
<div className="flex items-center gap-3">
|
|
295
|
+
<img src="/logo.webp" alt="AuraWallet" className="w-10 h-10 md:w-14 md:h-14 invert" />
|
|
296
|
+
<div>
|
|
297
|
+
<h1 className="text-2xl md:text-4xl font-black tracking-tighter leading-[0.9]">
|
|
298
|
+
AURAWALLET
|
|
299
|
+
</h1>
|
|
300
|
+
<div className="mt-0.5 text-[9px] font-mono tracking-widest opacity-70">
|
|
301
|
+
AGENT WALLET INFRASTRUCTURE
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
<div className="text-right font-mono text-xs">
|
|
306
|
+
<div className="flex items-center gap-2 justify-end mb-1">
|
|
307
|
+
<div className="w-2 h-2 bg-voltage rounded-full animate-pulse shadow-[0_0_8px_#ccff00]" />
|
|
308
|
+
<span className="hidden md:inline">SYSTEM: READY</span>
|
|
309
|
+
</div>
|
|
310
|
+
<nav className="flex gap-3 pointer-events-auto">
|
|
311
|
+
<Link href="/docs" className="text-[10px] tracking-widest hover:text-voltage transition-colors">DOCS</Link>
|
|
312
|
+
<Link href="/api" className="text-[10px] tracking-widest hover:text-voltage transition-colors">API</Link>
|
|
313
|
+
<Link href="/app" className="text-[10px] tracking-widest hover:text-voltage transition-colors">APP</Link>
|
|
314
|
+
</nav>
|
|
315
|
+
</div>
|
|
316
|
+
</header>
|
|
317
|
+
|
|
318
|
+
{/* ── SECTION 01: HERO ─────────────────────────────────────── */}
|
|
319
|
+
<ManifestSection label="001_IDENTIFICATION" className="justify-end pb-12">
|
|
320
|
+
<div className="relative max-w-4xl">
|
|
321
|
+
<div
|
|
322
|
+
className="text-[12rem] md:text-[16rem] font-black leading-none text-transparent opacity-10 absolute -top-60 -left-20 select-none pointer-events-none"
|
|
323
|
+
style={{ WebkitTextStroke: '2px #050505' }}
|
|
324
|
+
>
|
|
325
|
+
01
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
<MechaCard dark className="max-w-2xl p-6 md:p-10">
|
|
329
|
+
<div className="font-mono text-xs mb-4 text-voltage flex justify-between">
|
|
330
|
+
<span>[ MANIFEST // AURAWALLET ]</span>
|
|
331
|
+
</div>
|
|
332
|
+
<h2 className="text-3xl md:text-6xl font-black tracking-tighter mb-6 leading-[1.05]">
|
|
333
|
+
<span className="bg-voltage text-void inline-block px-2 py-0.5">AGENTS NEED</span><br />
|
|
334
|
+
<span className="bg-voltage text-void inline-block px-2 py-0.5 mt-1">WALLETS. YOURS</span><br />
|
|
335
|
+
<span className="bg-voltage text-void inline-block px-2 py-0.5 mt-1">NEED AURAWALLET.</span>
|
|
336
|
+
</h2>
|
|
337
|
+
<p className="font-mono text-sm leading-relaxed text-concrete">
|
|
338
|
+
Secure wallets, approvals, swaps, and transfers — same actions, same guardrails, whichever interface you prefer.
|
|
339
|
+
</p>
|
|
340
|
+
</MechaCard>
|
|
341
|
+
</div>
|
|
342
|
+
|
|
343
|
+
<div className="absolute bottom-12 right-12 hidden md:flex flex-col items-center animate-bounce">
|
|
344
|
+
<span className="font-mono text-xs text-ink mb-2">SCROLL_TO_INSPECT</span>
|
|
345
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 5v14M19 12l-7 7-7-7" /></svg>
|
|
346
|
+
</div>
|
|
347
|
+
</ManifestSection>
|
|
348
|
+
|
|
349
|
+
{/* ── SECTION 02: CONTEXT (FRAGMENTATION PROBLEM) ──────────── */}
|
|
350
|
+
<ManifestSection label="002_CONTEXT" className="items-center md:items-end">
|
|
351
|
+
<div className="relative max-w-6xl w-full mx-auto flex flex-col md:flex-row items-start justify-between gap-12 z-10">
|
|
352
|
+
{/* Left: Title */}
|
|
353
|
+
<div className="flex-1 text-left pt-12 md:pt-32">
|
|
354
|
+
<div className="relative">
|
|
355
|
+
<div
|
|
356
|
+
className="text-[12rem] md:text-[16rem] font-black leading-none text-transparent opacity-10 absolute -top-60 -left-20 select-none pointer-events-none"
|
|
357
|
+
style={{ WebkitTextStroke: '2px #050505' }}
|
|
358
|
+
>
|
|
359
|
+
02
|
|
360
|
+
</div>
|
|
361
|
+
<h3 className="text-2xl md:text-4xl font-black leading-[0.9] tracking-tight bg-void text-voltage inline-block px-2 py-1">
|
|
362
|
+
AGENTS OPERATE<br />EVERYWHERE.<br />WALLETS DON'T.
|
|
363
|
+
</h3>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
|
|
367
|
+
{/* Right: Content Card */}
|
|
368
|
+
<div className="w-full md:w-auto md:max-w-xl relative">
|
|
369
|
+
{/* Alert badge */}
|
|
370
|
+
<div className="absolute -top-6 -right-6 bg-alert text-white px-6 py-3 font-mono text-sm font-bold transform rotate-3 clip-mech-header z-20 shadow-xl border border-white/20">
|
|
371
|
+
THE FRAGMENTATION PROBLEM
|
|
372
|
+
</div>
|
|
373
|
+
|
|
374
|
+
<MechaCard className="p-8 md:p-12 w-full bg-tyvek text-ink shadow-2xl" allowOverflow>
|
|
375
|
+
<CropMark className="top-0 left-0 border-t-2 border-l-2" />
|
|
376
|
+
<CropMark className="bottom-0 right-0 border-b-2 border-r-2" />
|
|
377
|
+
|
|
378
|
+
<h3 className="text-2xl font-black uppercase tracking-tight mb-2">
|
|
379
|
+
"EVERY INTERFACE IS AN ISLAND"
|
|
380
|
+
</h3>
|
|
381
|
+
<p className="font-mono text-sm text-concrete mb-8">
|
|
382
|
+
Agents need wallets across every surface — but they get fragmented access instead.
|
|
383
|
+
</p>
|
|
384
|
+
|
|
385
|
+
<div className="space-y-4 font-mono text-sm text-left mb-8">
|
|
386
|
+
<div className="flex items-start gap-3">
|
|
387
|
+
<span className="text-concrete mt-1 shrink-0">BROWSER</span>
|
|
388
|
+
<div>Web dashboard — but only when you're at a screen</div>
|
|
389
|
+
</div>
|
|
390
|
+
<div className="flex items-start gap-3">
|
|
391
|
+
<span className="text-concrete mt-1 shrink-0">TERMINAL</span>
|
|
392
|
+
<div>CLI access — but separate auth, separate limits</div>
|
|
393
|
+
</div>
|
|
394
|
+
<div className="flex items-start gap-3">
|
|
395
|
+
<span className="text-concrete mt-1 shrink-0">TELEGRAM</span>
|
|
396
|
+
<div>Bot commands — but no approval flow, no guardrails</div>
|
|
397
|
+
</div>
|
|
398
|
+
<div className="bg-void text-tyvek p-4 clip-mech-header -mx-4 shadow-lg relative">
|
|
399
|
+
<div className="absolute top-0 right-0 w-2 h-2 bg-alert animate-pulse" />
|
|
400
|
+
<div className="flex items-start gap-3">
|
|
401
|
+
<span className="text-voltage mt-1 shrink-0">RESULT</span>
|
|
402
|
+
<div>
|
|
403
|
+
<span className="text-voltage font-bold">4 interfaces, 4 permission models</span> — no consistency
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
</div>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
<p className="font-mono text-sm text-concrete italic text-right border-t border-concrete/20 pt-4">
|
|
410
|
+
"Same agent, different wallet experience everywhere."
|
|
411
|
+
</p>
|
|
412
|
+
</MechaCard>
|
|
413
|
+
</div>
|
|
414
|
+
</div>
|
|
415
|
+
</ManifestSection>
|
|
416
|
+
|
|
417
|
+
{/* ── SECTION 03: CAPABILITIES ─────────────────────────────── */}
|
|
418
|
+
<ManifestSection label="003_CAPABILITIES">
|
|
419
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-start">
|
|
420
|
+
{/* Left: Title + Capability Card */}
|
|
421
|
+
<div className="flex flex-col gap-8">
|
|
422
|
+
<div className="relative">
|
|
423
|
+
<div
|
|
424
|
+
className="text-[12rem] md:text-[16rem] font-black leading-none text-transparent opacity-10 absolute -top-40 -left-20 select-none pointer-events-none"
|
|
425
|
+
style={{ WebkitTextStroke: '2px #050505' }}
|
|
426
|
+
>
|
|
427
|
+
03
|
|
428
|
+
</div>
|
|
429
|
+
<h3 className="text-3xl md:text-5xl font-black leading-[0.9] tracking-tight bg-void text-voltage inline-block px-2 py-1 transform -rotate-1 relative z-10 clip-mech-header">
|
|
430
|
+
SEND. SWAP.<br />LAUNCH. TRACK.
|
|
431
|
+
</h3>
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
<MechaCard className="p-8 md:p-10 bg-tyvek text-ink shadow-2xl" allowOverflow>
|
|
435
|
+
<ul className="space-y-6 font-mono text-sm leading-relaxed">
|
|
436
|
+
<li className="flex items-start gap-4 group">
|
|
437
|
+
<div className="w-2 h-2 bg-ink mt-2 group-hover:bg-voltage transition-colors shrink-0" />
|
|
438
|
+
<div>
|
|
439
|
+
<span className="font-bold">Wallet tiers</span> — cold (human-only), hot (agent + limits), temp (ephemeral)
|
|
440
|
+
</div>
|
|
441
|
+
</li>
|
|
442
|
+
<li className="flex items-start gap-4 group">
|
|
443
|
+
<div className="w-2 h-2 bg-ink mt-2 group-hover:bg-voltage transition-colors shrink-0" />
|
|
444
|
+
<div>
|
|
445
|
+
<span className="font-bold">Human approvals</span> — agents propose, humans approve, nothing moves silently
|
|
446
|
+
</div>
|
|
447
|
+
</li>
|
|
448
|
+
<li className="flex items-start gap-4 group">
|
|
449
|
+
<div className="w-2 h-2 bg-ink mt-2 group-hover:bg-voltage transition-colors shrink-0" />
|
|
450
|
+
<div>
|
|
451
|
+
<span className="font-bold">Multi-chain</span> — EVM (Base, Ethereum) + Solana from one backend
|
|
452
|
+
</div>
|
|
453
|
+
</li>
|
|
454
|
+
<li className="flex items-start gap-4 group">
|
|
455
|
+
<div className="w-2 h-2 bg-ink mt-2 group-hover:bg-voltage transition-colors shrink-0" />
|
|
456
|
+
<div className="flex flex-col gap-2">
|
|
457
|
+
<span className="text-voltage font-bold bg-void px-2 py-0.5 w-fit">Spending limits</span>
|
|
458
|
+
<span className="font-bold border-l-2 border-voltage pl-3">
|
|
459
|
+
Per-token caps, session tracking, auto-revoke on restart
|
|
460
|
+
</span>
|
|
461
|
+
</div>
|
|
462
|
+
</li>
|
|
463
|
+
</ul>
|
|
464
|
+
</MechaCard>
|
|
465
|
+
</div>
|
|
466
|
+
|
|
467
|
+
{/* Right: ScrollReveal Q&A cards */}
|
|
468
|
+
<div className="relative min-h-[600px] flex flex-col justify-center gap-6">
|
|
469
|
+
<ScrollReveal>
|
|
470
|
+
<div className="flex items-center gap-2 mb-2 pl-1">
|
|
471
|
+
<span className="font-mono text-xs font-bold text-voltage uppercase tracking-widest">HOW DOES APPROVAL WORK?</span>
|
|
472
|
+
</div>
|
|
473
|
+
<MechaCard dark className="p-4 border border-voltage/50 bg-void/90">
|
|
474
|
+
<p className="font-mono text-sm text-tyvek leading-tight">
|
|
475
|
+
Agents request actions via the API. Humans approve in the dashboard, CLI, or Telegram. Token-gated with spending limits enforced in-memory.
|
|
476
|
+
</p>
|
|
477
|
+
</MechaCard>
|
|
478
|
+
</ScrollReveal>
|
|
479
|
+
|
|
480
|
+
<ScrollReveal delay={200}>
|
|
481
|
+
<div className="flex items-center gap-2 mb-2 justify-end pr-1">
|
|
482
|
+
<span className="font-mono text-xs font-bold text-ink uppercase tracking-widest">WHAT ABOUT SECURITY?</span>
|
|
483
|
+
</div>
|
|
484
|
+
<MechaCard className="p-5 border-l-4 border-l-ink bg-tyvek shadow-[0_10px_40px_-10px_rgba(0,0,0,0.3)]">
|
|
485
|
+
<div className="space-y-3 font-mono text-sm text-ink">
|
|
486
|
+
<p className="font-bold">Signing keys live in memory only.</p>
|
|
487
|
+
<p>Server restart = forced re-approval. Stolen DB is useless without the runtime key.</p>
|
|
488
|
+
<div className="bg-void text-voltage p-3 clip-mech-footer mt-2 font-bold text-center text-xs md:text-sm">
|
|
489
|
+
Memory-only auth. Restart = revoke all.
|
|
490
|
+
</div>
|
|
491
|
+
</div>
|
|
492
|
+
</MechaCard>
|
|
493
|
+
</ScrollReveal>
|
|
494
|
+
|
|
495
|
+
<ScrollReveal delay={400}>
|
|
496
|
+
<MechaCard dark className="p-4 border border-concrete/30">
|
|
497
|
+
<div className="font-mono text-xs text-concrete mb-2">SUPPORTED OPERATIONS</div>
|
|
498
|
+
<div className="grid grid-cols-2 gap-2 font-mono text-sm text-voltage">
|
|
499
|
+
<span>▸ send</span>
|
|
500
|
+
<span>▸ swap</span>
|
|
501
|
+
<span>▸ fund</span>
|
|
502
|
+
<span>▸ launch</span>
|
|
503
|
+
<span>▸ wallet/create</span>
|
|
504
|
+
<span>▸ approvals</span>
|
|
505
|
+
</div>
|
|
506
|
+
</MechaCard>
|
|
507
|
+
</ScrollReveal>
|
|
508
|
+
</div>
|
|
509
|
+
</div>
|
|
510
|
+
</ManifestSection>
|
|
511
|
+
|
|
512
|
+
{/* ── SECTION 04: INTERFACE (VOLTAGE BG) ───────────────────── */}
|
|
513
|
+
<ManifestSection label="004_INTERFACE" className="bg-voltage text-void min-h-screen relative overflow-hidden">
|
|
514
|
+
<div className="absolute inset-0 bg-grid-pattern-dark opacity-10 pointer-events-none mix-blend-multiply" />
|
|
515
|
+
{/* Hazard Stripes */}
|
|
516
|
+
<div className="absolute top-0 left-0 w-full h-3 bg-hazard-stripes" />
|
|
517
|
+
<div className="absolute bottom-0 left-0 w-full h-3 bg-hazard-stripes" />
|
|
518
|
+
|
|
519
|
+
<div className="relative z-10 w-full max-w-5xl mx-auto flex flex-col items-center justify-center text-center py-20">
|
|
520
|
+
{/* Ghost number */}
|
|
521
|
+
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-[20rem] md:text-[30rem] font-black leading-none text-void opacity-5 select-none pointer-events-none z-0">
|
|
522
|
+
04
|
|
523
|
+
</div>
|
|
524
|
+
|
|
525
|
+
<div className="relative z-10 w-full flex flex-col items-center gap-10">
|
|
526
|
+
<div className="relative">
|
|
527
|
+
<h3 className="text-5xl md:text-8xl font-black leading-[0.9] tracking-tighter text-void uppercase">
|
|
528
|
+
ONE AGENT.<br />
|
|
529
|
+
<span className="text-voltage bg-void px-4 inline-block transform -skew-x-12 mt-2">EVERY INTERFACE.</span>
|
|
530
|
+
</h3>
|
|
531
|
+
</div>
|
|
532
|
+
|
|
533
|
+
{/* Bullet points */}
|
|
534
|
+
<div className="bg-void/5 backdrop-blur-sm p-8 clip-mech-modal border border-void/10 max-w-2xl w-full">
|
|
535
|
+
<div className="space-y-6 font-mono text-base md:text-lg text-left">
|
|
536
|
+
<div className="flex items-start gap-4">
|
|
537
|
+
<div className="w-2 h-2 bg-void mt-2.5 shrink-0" />
|
|
538
|
+
<p><span className="font-bold">Browser</span> — dashboard, approvals, wallet detail, real-time WebSocket</p>
|
|
539
|
+
</div>
|
|
540
|
+
<div className="flex items-start gap-4">
|
|
541
|
+
<div className="w-2 h-2 bg-void mt-2.5 shrink-0" />
|
|
542
|
+
<p><span className="font-bold">Terminal</span> — Claude Code, headless CLI, Unix socket IPC</p>
|
|
543
|
+
</div>
|
|
544
|
+
<div className="flex items-start gap-4">
|
|
545
|
+
<div className="w-2 h-2 bg-void mt-2.5 shrink-0" />
|
|
546
|
+
<p><span className="font-bold">Telegram</span> — approval adapter, bot commands, remote signing</p>
|
|
547
|
+
</div>
|
|
548
|
+
<div className="flex items-start gap-4">
|
|
549
|
+
<div className="w-2 h-2 bg-void mt-2.5 shrink-0" />
|
|
550
|
+
<p><span className="font-bold">Same wallet, same permissions</span> — everywhere</p>
|
|
551
|
+
</div>
|
|
552
|
+
</div>
|
|
553
|
+
</div>
|
|
554
|
+
|
|
555
|
+
<div className="pt-4">
|
|
556
|
+
<MechaButton
|
|
557
|
+
variant="secondary"
|
|
558
|
+
href="/docs"
|
|
559
|
+
className="min-w-[240px] border-2 border-void hover:bg-void hover:text-voltage"
|
|
560
|
+
>
|
|
561
|
+
READ DOCS
|
|
562
|
+
</MechaButton>
|
|
563
|
+
</div>
|
|
564
|
+
</div>
|
|
565
|
+
|
|
566
|
+
{/* Floating device silhouettes (CSS-only) */}
|
|
567
|
+
<div className="absolute inset-0 z-0 pointer-events-none overflow-hidden">
|
|
568
|
+
<div className="absolute top-24 left-8 md:left-16 w-40 md:w-56 h-28 md:h-36 border-2 border-void/10 rounded-lg opacity-40 animate-[float-left_6s_ease-in-out_infinite]" />
|
|
569
|
+
<div className="absolute bottom-20 right-8 md:right-16 w-24 md:w-32 h-44 md:h-56 border-2 border-void/10 rounded-2xl opacity-30 animate-[float-right_7s_ease-in-out_infinite_1s]" />
|
|
570
|
+
<div className="hidden md:block absolute top-8 right-1/4 w-48 h-32 border-2 border-void/10 rounded-md opacity-20 animate-[float-left_5s_ease-in-out_infinite_0.5s]" />
|
|
571
|
+
</div>
|
|
572
|
+
</div>
|
|
573
|
+
</ManifestSection>
|
|
574
|
+
|
|
575
|
+
{/* ── FOOTER ───────────────────────────────────────────────── */}
|
|
576
|
+
<footer className="bg-void text-tyvek py-24 px-6 md:px-12 font-mono text-xs relative overflow-hidden">
|
|
577
|
+
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full text-center pointer-events-none z-0 flex flex-col items-center justify-center">
|
|
578
|
+
<div className="text-[20vw] font-black leading-[0.8] text-white opacity-5 select-none">
|
|
579
|
+
05
|
|
580
|
+
</div>
|
|
581
|
+
<div className="text-[10vw] font-black leading-[0.8] text-white opacity-5 select-none whitespace-nowrap">
|
|
582
|
+
BUILT FOR AGENTS
|
|
583
|
+
</div>
|
|
584
|
+
</div>
|
|
585
|
+
|
|
586
|
+
<div className="flex flex-col md:flex-row justify-between items-end relative z-10 gap-8">
|
|
587
|
+
<div className="space-y-6 max-w-lg">
|
|
588
|
+
<div className="space-y-3 font-mono text-sm border-l-2 border-voltage pl-4">
|
|
589
|
+
<p className="font-bold text-lg mb-2 text-white">ABOUT</p>
|
|
590
|
+
<div className="flex items-start gap-3">
|
|
591
|
+
<div className="w-1 h-1 bg-concrete mt-2 shrink-0" />
|
|
592
|
+
<span>Local-first crypto wallet infrastructure for AI agents</span>
|
|
593
|
+
</div>
|
|
594
|
+
<div className="flex items-start gap-3">
|
|
595
|
+
<div className="w-1 h-1 bg-concrete mt-2 shrink-0" />
|
|
596
|
+
<span>Multi-chain: Base, Ethereum, Solana</span>
|
|
597
|
+
</div>
|
|
598
|
+
<div className="flex items-start gap-3">
|
|
599
|
+
<div className="w-1 h-1 bg-voltage mt-2 shrink-0" />
|
|
600
|
+
<span className="font-bold text-voltage">Memory-only auth, human approvals, spending limits</span>
|
|
601
|
+
</div>
|
|
602
|
+
</div>
|
|
603
|
+
<p className="text-concrete/50 pt-8">ALL RIGHTS RESERVED.</p>
|
|
604
|
+
</div>
|
|
605
|
+
|
|
606
|
+
<div className="text-right mt-8 md:mt-0 space-y-4 flex flex-col items-end">
|
|
607
|
+
<img src="/logo.webp" alt="AuraWallet" className="w-16 h-16 invert" />
|
|
608
|
+
<p className="text-concrete text-[10px] tracking-widest uppercase">Agent wallet infrastructure</p>
|
|
609
|
+
<nav className="flex gap-4 text-[11px] tracking-widest">
|
|
610
|
+
<Link href="/docs" className="hover:text-voltage transition-colors">DOCS</Link>
|
|
611
|
+
<Link href="/api" className="hover:text-voltage transition-colors">API</Link>
|
|
612
|
+
<Link href="/app" className="hover:text-voltage transition-colors">APP</Link>
|
|
613
|
+
</nav>
|
|
614
|
+
<div className="w-64 h-8 bg-grid-pattern opacity-30 ml-auto" />
|
|
615
|
+
</div>
|
|
616
|
+
</div>
|
|
617
|
+
</footer>
|
|
618
|
+
|
|
619
|
+
{/* ── VISION SECTION ───────────────────────────────────────── */}
|
|
620
|
+
<section className="text-ink py-32 flex items-center justify-center relative overflow-hidden">
|
|
621
|
+
<div className="max-w-6xl mx-auto px-6 text-center relative z-10">
|
|
622
|
+
<ScrollReveal>
|
|
623
|
+
<h2 className="text-5xl md:text-8xl font-black tracking-tighter leading-[0.9] mb-8">
|
|
624
|
+
AI MAKES AGENTS <span className="text-concrete">POWERFUL.</span><br />
|
|
625
|
+
WE MAKE THEM <span className="bg-voltage text-void px-2 inline-block transform -skew-x-12">SAFE.</span>
|
|
626
|
+
</h2>
|
|
627
|
+
<p className="font-mono text-xl md:text-3xl text-concrete italic tracking-tight">
|
|
628
|
+
—and they finally move money with guardrails.
|
|
629
|
+
</p>
|
|
630
|
+
</ScrollReveal>
|
|
631
|
+
</div>
|
|
632
|
+
</section>
|
|
633
|
+
</main>
|
|
634
|
+
);
|
|
635
|
+
};
|