{ "name": "familiaros-website", "version": "2.0.0", "description": "FamiliarOS — Your AI Companion That Lives With You. Public website, auth, and account surface.", "private": true, "type": "module", "scripts": { "dev": "node scripts/dev-singleton.mjs", "dev:raw": "vite", "dev:clean": "node scripts/dev-process-clean.mjs", "dev:clean:dry-run": "node scripts/dev-process-clean.mjs --dry-run", "prebuild": "node scripts/generate-runtime-config.mjs", "build": "tsc && vite build", "preview": "vite preview", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 1000", "test": "vitest", "test:ci": "vitest run --coverage", "test:e2e": "playwright test --reporter=line", "test:e2e:built": "node scripts/run-e2e-against-built.mjs", "test:e2e:dashboard:auth-live": "node scripts/run-dashboard-auth-live-e2e.mjs", "type-check": "tsc --noEmit", "validate:fast": "npm run test -- --run src/__tests__/command-palette.test.tsx && npm run test -- --run src/__tests__/MindMapView.test.tsx", "validate:pre-push": "npm run type-check && npm run test:ci && npm run polish:readiness:report", "validate:full-local": "npm run validate:pre-push && npm run test:e2e", "verify:ep02": "node scripts/run-ep02-validation-sweep.mjs --iterations=1", "verify:ep02:stability": "node scripts/run-ep02-validation-sweep.mjs --iterations=3", "verify:ep07": "node scripts/run-ep07-validation-sweep.mjs --iterations=1", "verify:ep07:stability": "node scripts/run-ep07-validation-sweep.mjs --iterations=3", "verify:ep07:advanced": "node scripts/run-ep07-advanced-validation-sweep.mjs --iterations=1", "verify:ep07:advanced:stability": "node scripts/run-ep07-advanced-validation-sweep.mjs --iterations=3", "verify:ep07:release": "node scripts/run-ep07-release-readiness-sweep.mjs --iterations=1 --advanced-iterations=1", "verify:ep07:release:stability": "node scripts/run-ep07-release-readiness-sweep.mjs --iterations=3 --advanced-iterations=3", "verify:ep07:release:ci": "node scripts/run-ep07-release-readiness-sweep.mjs --iterations=1 --advanced-iterations=1 --fail-on=warning", "runtime:config:generate": "node scripts/generate-runtime-config.mjs", "a11y": "node scripts/run-a11y-suite.mjs", "a11y:core:workflows:check": "node scripts/check-accessibility-core-workflows.mjs", "e2e:critical:workflows:check": "node scripts/check-e2e-critical-workflows.mjs", "ux:journeys:check": "node scripts/check-ux-journeys.mjs", "performance:budgets:check": "node scripts/check-performance-budgets.mjs", "polish:readiness:report": "node scripts/generate-polish-readiness-report.mjs", "lighthouse:ci": "lhci autorun --config=./lighthouserc.json", "bundle:budget:check": "node scripts/check-bundle-budget.mjs", "bundle:budget:check:ci": "node scripts/check-bundle-budget.mjs --fail-on=warning --json" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@excalidraw/excalidraw": "^0.18.0", "@monaco-editor/react": "^4.6.0", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-toast": "^1.2.15", "@tanstack/react-query": "^5.28.0", "@tanstack/react-table": "^8.21.3", "@tsparticles/engine": "^3.9.1", "@tsparticles/react": "^3.0.0", "@tsparticles/slim": "^3.9.1", "@types/three": "^0.183.1", "axios": "^1.6.7", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dompurify": "^3.2.7", "fast-diff": "^1.3.0", "framer-motion": "^11.0.8", "katex": "^0.16.9", "lucide-react": "^0.344.0", "metal-fx": "^1.0.4", "pdfjs-dist": "^4.10.38", "react": "^18.3.1", "react-dom": "^18.3.1", "react-dropzone": "^14.3.8", "react-hot-toast": "^2.6.0", "react-katex": "^3.1.0", "react-resizable-panels": "^3.0.6", "react-router-dom": "^6.22.0", "simple-mind-map": "^0.14.0-fix.1", "supertokens-auth-react": "^0.51.2", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", "three": "^0.183.2", "zustand": "^4.5.2" }, "devDependencies": { "@lhci/cli": "^0.15.1", "@playwright/test": "^1.49.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/katex": "^0.16.7", "@types/node": "^24.7.0", "@types/react": "^18.2.64", "@types/react-dom": "^18.2.21", "@types/react-katex": "^3.0.4", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "@vitejs/plugin-react-swc": "^3.6.0", "@vitest/coverage-v8": "^1.6.1", "autoprefixer": "^10.4.18", "baseline-browser-mapping": "^2.10.10", "eslint": "^8.57.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "jsdom": "^29.1.1", "pdfkit": "^0.18.0", "postcss": "^8.4.35", "prettier": "^3.2.5", "tailwindcss": "^3.4.1", "ts-morph": "^27.0.2", "ts-node": "^10.9.2", "typescript": "^5.4.2", "vite": "^5.1.6", "vitest": "^1.3.1", "vitest-axe": "^0.1.0" }, "license": "MIT", "author": "Boring Dystopia Development" }