{ "name": "better-chatbot", "version": "1.26.0", "private": true, "author": "cgoinglove", "license": "MIT", "type": "module", "scripts": { "dev": "next dev", "dev:turbopack": "next dev --turbopack", "dev:https": "next dev --experimental-https", "build": "next build", "start": "next start", "build:local": "cross-env NO_HTTPS='1' next build", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:seed": "dotenv -- tsx scripts/seed-test-users.ts", "test:e2e:clean": "dotenv -- tsx scripts/cleanup-all-test-data.ts", "lint": "biome lint", "lint:fix": "biome lint --write --unsafe", "format": "biome format --write", "check-types": "tsc --noEmit", "initial:env": "tsx scripts/initial-env.ts", "openai-compatiable:init": "tsx scripts/init-openai-compatiable.ts", "openai-compatiable:parse": "tsx scripts/parse-openai-compatiable.ts", "postinstall": "tsx scripts/postinstall.ts", "clean": "tsx scripts/clean.ts", "clean:next": "tsx scripts/clean.ts .next", "db:generate": "drizzle-kit generate", "db:reset": "drizzle-kit drop && drizzle-kit push", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio", "db:migrate": "tsx scripts/db-migrate.ts", "db:pull": "drizzle-kit pull", "db:check": "drizzle-kit check", "docker-compose:up": "docker-compose -f docker/compose.yml up -d --build", "docker-compose:down": "docker-compose -f docker/compose.yml down", "docker-compose:logs": "docker-compose -f docker/compose.yml logs -f", "docker-compose:ps": "docker-compose -f docker/compose.yml ps", "docker-compose:update": "git pull && docker-compose -f docker/compose.yml up -d --build", "docker:pg": "docker run --name better-chatbot-pg -e POSTGRES_PASSWORD=your_password -e POSTGRES_USER=your_username -e POSTGRES_DB=your_database_name -p 5432:5432 -d postgres", "docker:redis": "docker run --name better-chatbot-redis -p 6379:6379 -d redis:7-alpine", "docker:app": "docker build -f docker/Dockerfile -t better-chatbot . && docker run -p 3000:3000 -e NO_HTTPS=1 better-chatbot", "prepare": "husky", "playwright:install": "playwright install", "check": "pnpm lint:fix && pnpm check-types && pnpm test" }, "dependencies": { "@ai-sdk/anthropic": "^2.0.56", "@ai-sdk/google": "^2.0.51", "@ai-sdk/groq": "^2.0.33", "@ai-sdk/openai": "^2.0.88", "@ai-sdk/openai-compatible": "^1.0.29", "@ai-sdk/react": "^2.0.118", "@ai-sdk/xai": "^2.0.42", "@aws-sdk/client-s3": "^3.958.0", "@aws-sdk/s3-request-presigner": "^3.958.0", "@google/genai": "^1.34.0", "@modelcontextprotocol/sdk": "^1.25.1", "@openrouter/ai-sdk-provider": "^1.5.4", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-radio-group": "^1.3.8", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.8", "@tiptap/extension-mention": "^2.27.1", "@tiptap/react": "^2.27.1", "@tiptap/starter-kit": "^2.27.1", "@tiptap/suggestion": "^2.27.1", "@vercel/blob": "^2.0.0", "@xyflow/react": "^12.10.0", "ai": "^5.0.116", "bcrypt-ts": "^7.1.0", "better-auth": "^1.4.9", "chokidar": "^4.0.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "consola": "^3.4.2", "date-fns": "^4.1.0", "deepmerge": "^4.3.1", "dotenv": "^16.6.1", "drizzle-orm": "^0.41.0", "emoji-picker-react": "^4.16.1", "framer-motion": "^12.23.26", "hast-util-to-jsx-runtime": "^2.3.6", "ioredis": "^5.8.2", "json-schema": "^0.4.0", "katex": "^0.16.27", "lucide-react": "^0.486.0", "mermaid": "^11.12.2", "nanoid": "^5.1.6", "next": "16.1.6", "next-intl": "^4.8.1", "next-themes": "^0.4.6", "ogl": "^1.0.11", "ollama-ai-provider-v2": "^1.5.5", "pg": "^8.16.3", "react": "^19.2.4", "react-dom": "^19.2.4", "react-markdown": "^10.1.0", "react-resizable-panels": "^2.1.9", "recharts": "^2.15.4", "rehype-katex": "^7.0.1", "remark-gfm": "^4.0.1", "remark-math": "^6.0.0", "server-only": "^0.0.1", "shiki": "^3.20.0", "sonner": "^2.0.7", "swr": "^2.3.8", "tailwind-merge": "^3.4.0", "ts-edge": "^1.0.4", "ts-safe": "^0.0.5", "tw-animate-css": "^1.4.0", "undici": "^7.18.2", "vaul": "^1.1.2", "zod": "^4.2.1", "zustand": "^5.0.9" }, "devDependencies": { "@better-auth-kit/seed": "^1.0.12", "@biomejs/biome": "1.9.4", "@playwright/test": "^1.57.0", "@tailwindcss/postcss": "^4.1.18", "@types/json-schema": "^7.0.15", "@types/node": "^20.19.27", "@types/pg": "^8.16.0", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "cross-env": "^7.0.3", "dotenv-cli": "^10.0.0", "drizzle-kit": "^0.30.6", "eslint": "^9.39.2", "eslint-config-next": "15.3.0", "husky": "^9.1.7", "lint-staged": "^16.2.7", "rimraf": "^6.1.2", "tailwindcss": "^4.1.18", "tsx": "^4.21.0", "typescript": "^5.9.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.4" }, "lint-staged": { "*.{js,json,mjs,ts,yaml,tsx,css}": [ "pnpm format", "pnpm lint:fix" ] }, "packageManager": "pnpm@10.2.1", "engines": { "node": ">=18" }, "pnpm": { "onlyBuiltDependencies": [ "@biomejs/biome", "@tailwindcss/oxide", "esbuild", "sharp", "unrs-resolver" ] } }