Files
hanzo.ai/package.json
zeekay ac2da21e5f sign-in: wallet and phone, and a person claims a wallet's account
/login and /signup draw "Continue with wallet" and "Continue with phone"
after Google and GitHub, each only where IAM's methods say it is on.

Wallet: where IAM signs a wallet in (@hanzo/iam 0.21.37 `wallet`) and the
browser injects an EIP-1193 wallet; the press is loginWithWallet (IAM's
challenge, personal_sign of its EIP-4361 text, IAM's verify) and ends as a
password's sign-in ends. A wallet IAM has not seen is made an account in an
org of its own, with no email.

Phone: where IAM says it sends codes (`code`) and has answered. The number
is read in its country with the SMS consent ticked, then IAM's code flow.
IAM's address lookup answers an email address only, so a number is texted as
any is and the account that holds it is signed in by the code.

Settings -> General -> Sign in another way adds an email or a phone to the
signed-in account through IAM's own proof (addAddress, PUT /v1/iam/address),
drawn only where IAM's methods say `address`. Same account, org, keys and
balance; nothing is created, so nothing earns twice.

Gates: wallet.spec (a throwaway secp256k1 key behind an injected provider),
phone.spec, address.spec. login.spec expects the phone after the providers.
2026-10-26 16:47:32 -07:00

98 lines
3.1 KiB
JSON

{
"name": "@hanzo/site",
"private": true,
"engines": {
"node": ">=22.18"
},
"version": "0.2.31",
"type": "module",
"scripts": {
"dev": "next dev",
"build": "next build && node scripts/export.mjs",
"typecheck": "tsc --noEmit",
"start": "next start",
"serve": "node scripts/serve.mjs out 5173",
"lint": "oxlint",
"test": "playwright test",
"test:unit": "playwright test --project=unit",
"gates": "playwright test --project=gates",
"test:ui": "playwright test --ui",
"test:headed": "playwright test --headed",
"test:report": "playwright show-report",
"gen:gui-css": "node scripts/gen-gui-css.mjs",
"css-check": "node node_modules/@hanzo/gui/css-check.mjs out",
"prebuild": "node scripts/prebuild.ts",
"predev": "node scripts/gen-gui-css.mjs && node scripts/rooms-assets.mjs",
"sync:catalog": "node scripts/sync-catalog.mjs",
"sync:papers": "node scripts/sync-papers.mjs",
"sync:oss": "node scripts/sync-oss.ts",
"sync:mark": "node scripts/sync-mark.mjs",
"sync:pages": "node scripts/sync-rooms.mjs && node scripts/sync-pages.mjs",
"audit:catalog": "node scripts/audit-catalog.mjs",
"audit:price": "node scripts/audit-price-literals.mjs",
"lint:design": "hanzo-design-lint components app lib",
"ratchet": "node scripts/ratchet.ts"
},
"dependencies": {
"@hanzo/ai": "catalog:",
"@hanzo/app": "catalog:",
"@hanzo/appearance": "catalog:",
"@hanzo/brand": "catalog:",
"@hanzo/build": "catalog:",
"@hanzo/composer": "catalog:",
"@hanzo/design": "catalog:",
"@hanzo/event": "catalog:",
"@hanzo/font": "^1.9.3",
"@hanzo/glass": "catalog:",
"@hanzo/gui": "catalog:",
"@hanzo/i18n": "catalog:",
"@hanzo/iam": "catalog:",
"@hanzo/logo": "catalog:",
"@hanzo/mod": "catalog:",
"@hanzo/observe": "catalog:",
"@hanzo/pay": "catalog:",
"@hanzo/plans": "catalog:",
"@hanzo/studio": "catalog:",
"@hanzo/tabs": "catalog:",
"@hanzo/tokens": "catalog:",
"@hanzo/ui": "catalog:",
"@hanzo/usage": "catalog:",
"@hanzo/voice": "catalog:",
"@hanzogui/config": "8.3.5",
"@hanzogui/lucide-icons-2": "8.3.5",
"@hanzogui/next-theme": "catalog:",
"@hanzogui/shell": "8.3.20",
"@hanzogui/web": "8.3.5",
"@zenlm/models": "^1.0.4",
"framer-motion": "^13.2.0",
"libphonenumber-js": "1.13.12",
"lucide-react": "^1.42.0",
"marked": "^18.0.12",
"next": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
"react-native-web": "^0.21.2",
"shiki": "^4.5.0",
"uuid": "^14.0.2"
},
"devDependencies": {
"@hanzo/personas": "1.0.5",
"@hanzogui/animations-css": "8.3.5",
"@hanzogui/core": "8.3.5",
"@hanzogui/telemetry": "8.3.5",
"@hanzogui/toast": "8.3.5",
"@noble/curves": "2.4.0",
"@noble/hashes": "2.4.0",
"@playwright/test": "^1.63.0",
"@types/node": "catalog:",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"esbuild": "^0.28.2",
"oxlint": "^1.82.0",
"sharp": "0.35.4",
"simple-icons": "^16.30.0",
"typescript": "catalog:"
},
"packageManager": "[email protected]"
}