{ "name": "ra-h-open-source", "version": "0.1.0", "private": false, "description": "RA-H Open Source – local-first research workspace with BYO API keys", "license": "MIT", "author": "Bradley Morris", "scripts": { "dev": "NEXT_PUBLIC_DEPLOYMENT_MODE=local NEXT_PUBLIC_ENABLE_SUBSCRIPTION_BACKEND=false NODE_OPTIONS=\"--dns-result-order=ipv4first\" next dev", "clean:local": "bash ./scripts/dev/clean-local-artifacts.sh", "audit:repo": "bash ./scripts/dev/audit-repo.sh", "build": "NEXT_PUBLIC_DEPLOYMENT_MODE=local NEXT_PUBLIC_ENABLE_SUBSCRIPTION_BACKEND=false NODE_OPTIONS=\"--dns-result-order=ipv4first\" next build", "start": "NEXT_PUBLIC_DEPLOYMENT_MODE=local NEXT_PUBLIC_ENABLE_SUBSCRIPTION_BACKEND=false NODE_OPTIONS=\"--dns-result-order=ipv4first\" next start", "lint": "next lint", "type-check": "tsc --noEmit", "setup": "npm install", "sqlite:backup": "bash scripts/database/sqlite-backup.sh", "sqlite:restore": "bash scripts/database/sqlite-restore.sh", "test": "vitest run", "test:watch": "vitest", "evals": "RAH_EVALS_LOG=1 tsx tests/evals/runner.ts" }, "dependencies": { "@ai-sdk/openai": "^3.0.7", "@langchain/core": "^1.0.1", "@langchain/textsplitters": "^1.0.1", "@xyflow/react": "^12.10.0", "ai": "^6.0.27", "better-sqlite3": "^12.2.0", "cheerio": "^1.1.2", "lucide-react": "^0.468.0", "next": "15.1.3", "openai": "^4.103.0", "pdf-parse": "^1.1.1", "pdfjs-dist": "^5.4.296", "react": "^19.0.1", "react-dom": "^19.0.1", "react-markdown": "^10.1.0", "remark-gfm": "^4.0.1", "youtube-transcript": "^1.2.1", "youtube-transcript-plus": "^1.1.1", "zod": "^3.25.76" }, "devDependencies": { "@types/better-sqlite3": "^7.6.13", "@types/node": "22.10.2", "@types/react": "^19.0.2", "@types/react-dom": "19.0.2", "autoprefixer": "^10.4.20", "esbuild": "^0.23.1", "eslint": "^8.57.0", "eslint-config-next": "15.1.3", "postcss": "^8.4.49", "prettier": "^3.3.3", "tailwindcss": "^3.4.17", "tsx": "^4.19.4", "typescript": "^5.7.2", "vitest": "^3.2.4" } }