{ "name": "claude-code-hub", "version": "0.8.0", "private": true, "scripts": { "dev": "tsgo -p tsconfig.json --noEmit && next dev --port 13500", "dev:server": "NODE_ENV=development node server.js", "build": "tsgo -p tsconfig.json --noEmit && next build && (node scripts/copy-version-to-standalone.cjs || bun scripts/copy-version-to-standalone.cjs) && (node scripts/copy-custom-server-to-standalone.cjs || bun scripts/copy-custom-server-to-standalone.cjs)", "start": "node server.js", "lint": "biome check .", "lint:fix": "biome check --write .", "typecheck": "tsgo -p tsconfig.json --noEmit", "format": "biome format --write .", "format:check": "biome format .", "clean:cache": "rm -rf .next tsconfig.tsbuildinfo node_modules/.cache", "test": "vitest run", "test:ui": "vitest --ui --watch", "test:e2e": "vitest run --config tests/configs/e2e.config.ts --reporter=verbose", "test:integration": "vitest run --config tests/configs/integration.config.ts --reporter=verbose", "test:coverage": "vitest run --coverage", "test:coverage:logs-sessionid-time-filter": "vitest run --config tests/configs/logs-sessionid-time-filter.config.ts --coverage", "test:coverage:codex-session-id-completer": "vitest run --config tests/configs/codex-session-id-completer.config.ts --coverage", "test:coverage:thinking-signature-rectifier": "vitest run --config tests/configs/thinking-signature-rectifier.config.ts --coverage", "test:coverage:quota": "vitest run --config tests/configs/quota.config.ts --coverage", "test:coverage:my-usage": "vitest run --config tests/configs/my-usage.config.ts --coverage", "test:coverage:proxy-guard-pipeline": "vitest run --config tests/configs/proxy-guard-pipeline.config.ts --coverage", "test:coverage:include-session-id-in-errors": "vitest run --config tests/configs/include-session-id-in-errors.config.ts --coverage", "test:coverage:usage-logs-sessionid-search": "vitest run --config tests/configs/usage-logs-sessionid-search.config.ts --coverage", "test:ci": "vitest run --reporter=default --reporter=junit --outputFile.junit=reports/vitest-junit.xml", "test:v1": "vitest run --config tests/configs/v1.config.ts --coverage --reporter=verbose && bun scripts/check-v1-critical-coverage.ts", "openapi:generate": "bun scripts/generate-v1-types.ts", "openapi:check": "bun scripts/generate-v1-types.ts --check", "openapi:lint": "bun scripts/lint-openapi.ts", "cui": "npx cui-server --host 0.0.0.0 --port 30000 --token a7564bc8882aa9a2d25d8b4ea6ea1e2e", "db:generate": "drizzle-kit generate && node scripts/validate-migrations.js", "db:migrate": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio", "validate:migrations": "node scripts/validate-migrations.js", "i18n:audit-placeholders": "node scripts/audit-settings-placeholders.js --scope=settings,dashboard,myUsage --format=tsv", "i18n:audit-placeholders:fail": "node scripts/audit-settings-placeholders.js --scope=settings,dashboard,myUsage --format=tsv --fail", "i18n:audit-messages-no-emoji": "node scripts/audit-messages-no-emoji.js --format=tsv", "i18n:audit-messages-no-emoji:fail": "node scripts/audit-messages-no-emoji.js --format=tsv --fail" }, "dependencies": { "@bull-board/api": "^7", "@bull-board/express": "^7", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@hono/swagger-ui": "^0.6", "@hono/zod-openapi": "^1", "@hookform/resolvers": "^5", "@iarna/toml": "^2", "@langfuse/client": "^5", "@langfuse/otel": "^5", "@langfuse/tracing": "^5", "@lobehub/icons": "^2", "@opentelemetry/sdk-node": "^0.217", "@radix-ui/react-alert-dialog": "^1", "@radix-ui/react-avatar": "^1", "@radix-ui/react-checkbox": "^1", "@radix-ui/react-collapsible": "^1", "@radix-ui/react-dialog": "^1", "@radix-ui/react-dropdown-menu": "^2", "@radix-ui/react-label": "^2", "@radix-ui/react-popover": "^1", "@radix-ui/react-progress": "^1", "@radix-ui/react-scroll-area": "^1", "@radix-ui/react-select": "^2", "@radix-ui/react-slider": "^1", "@radix-ui/react-slot": "^1", "@radix-ui/react-switch": "^1", "@radix-ui/react-tabs": "^1", "@radix-ui/react-tooltip": "^1", "@scalar/hono-api-reference": "^0.10", "@tanstack/react-query": "^5", "@tanstack/react-virtual": "^3", "@tanstack/virtual-core": "^3", "agentation": "^3", "antd": "~6.3", "bull": "^4", "class-variance-authority": "^0.7", "clsx": "^2", "cmdk": "^1", "date-fns": "4.1.0", "date-fns-tz": "^3", "decimal.js-light": "^2", "dotenv": "^17", "drizzle-orm": "^0.45", "fetch-socks": "^1", "framer-motion": "^12", "hono": "^4", "html2canvas": "^1", "ioredis": "^5", "jspdf": "^4", "lucide-react": "^1.8.0", "maplibre-gl": "^5.23.0", "next": "^16", "next-intl": "^4", "next-themes": "^0.4", "pino": "^10", "pino-pretty": "^13", "postgres": "^3", "react": "^19", "react-day-picker": "^10", "react-dom": "^19", "react-hook-form": "^7", "react-syntax-highlighter": "^16", "recharts": "^3", "safe-regex": "^2", "server-only": "^0.0.1", "sonner": "^2", "tailwind-merge": "^3", "timeago.js": "^4", "tw-animate-css": "^1", "undici": "^7", "vaul": "^1", "ws": "^8", "zod": "^4" }, "devDependencies": { "@biomejs/biome": "^2", "@tailwindcss/postcss": "^4.2.0", "@types/ioredis": "^5", "@types/node": "^25", "@types/pg": "^8", "@types/react": "^19", "@types/react-dom": "^19", "@types/react-syntax-highlighter": "^15", "@types/ws": "^8", "@typescript/native-preview": "7.0.0-dev.20260512.1", "@vitest/coverage-v8": "^4", "@vitest/ui": "^4", "bun-types": "^1", "drizzle-kit": "^0.31", "happy-dom": "^20", "openapi-typescript": "^7.13.0", "tailwindcss": "^4", "typescript": "^6", "vitest": "^4" } }