| { |
| "name": "omniroute", |
| "version": "1.0.3", |
| "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.", |
| "type": "module", |
| "bin": { |
| "omniroute": "bin/omniroute.mjs", |
| "omniroute-reset-password": "bin/reset-password.mjs" |
| }, |
| "files": [ |
| "bin/", |
| "app/", |
| "README.md", |
| "LICENSE" |
| ], |
| "workspaces": [ |
| "open-sse" |
| ], |
| "engines": { |
| "node": ">=18.0.0" |
| }, |
| "keywords": [ |
| "ai", |
| "router", |
| "proxy", |
| "openai", |
| "claude", |
| "anthropic", |
| "gemini", |
| "fallback", |
| "cursor", |
| "cline", |
| "codex", |
| "llm", |
| "auto-fallback" |
| ], |
| "license": "MIT", |
| "author": "diegosouzapw", |
| "repository": { |
| "type": "git", |
| "url": "https://github.com/diegosouzapw/OmniRoute" |
| }, |
| "homepage": "https://omniroute.online", |
| "scripts": { |
| "dev": "next dev --webpack --port 20128", |
| "build": "next build --webpack", |
| "build:cli": "node scripts/prepublish.mjs", |
| "start": "next start --port 20128", |
| "lint": "eslint .", |
| "test": "node --test tests/unit/*.test.mjs", |
| "test:unit": "node --import tsx/esm --test tests/unit/*.test.mjs", |
| "test:plan3": "node --test tests/unit/plan3-p0.test.mjs", |
| "test:fixes": "node --test tests/unit/fixes-p1.test.mjs", |
| "test:security": "node --test tests/unit/security-fase01.test.mjs", |
| "test:e2e": "npx playwright test", |
| "test:coverage": "npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs", |
| "test:all": "npm run test:unit && npm run test:e2e", |
| "check": "npm run lint && npm run test", |
| "prepublishOnly": "npm run build:cli", |
| "prepare": "husky" |
| }, |
| "dependencies": { |
| "@monaco-editor/react": "^4.7.0", |
| "bcryptjs": "^3.0.3", |
| "better-sqlite3": "^12.6.2", |
| "bottleneck": "^2.19.5", |
| "express": "^5.2.1", |
| "fetch-socks": "^1.3.2", |
| "http-proxy-middleware": "^3.0.5", |
| "https-proxy-agent": "^7.0.6", |
| "jose": "^6.1.3", |
| "lowdb": "^7.0.1", |
| "monaco-editor": "^0.55.1", |
| "next": "^16.1.6", |
| "node-machine-id": "^1.1.12", |
| "open": "^11.0.0", |
| "ora": "^9.1.0", |
| "pino": "^10.3.1", |
| "pino-pretty": "^13.1.3", |
| "react": "19.2.4", |
| "react-dom": "19.2.4", |
| "recharts": "^3.7.0", |
| "selfsigned": "^5.5.0", |
| "undici": "^7.19.2", |
| "uuid": "^13.0.0", |
| "wreq-js": "^2.0.1", |
| "zod": "^4.3.6", |
| "zustand": "^5.0.10" |
| }, |
| "devDependencies": { |
| "@playwright/test": "^1.58.2", |
| "@tailwindcss/postcss": "^4.1.18", |
| "@types/bcryptjs": "^2.4.6", |
| "@types/better-sqlite3": "^7.6.13", |
| "@types/node": "^25.2.3", |
| "@types/react": "^19.2.14", |
| "@types/react-dom": "^19.2.3", |
| "eslint": "^9.39.2", |
| "eslint-config-next": "16.1.6", |
| "husky": "^9.1.7", |
| "lint-staged": "^16.2.7", |
| "prettier": "^3.8.1", |
| "tailwindcss": "^4", |
| "tsx": "^4.21.0", |
| "typescript": "^5.9.3", |
| "typescript-eslint": "^8.56.0" |
| }, |
| "lint-staged": { |
| "*.{js,jsx,ts,tsx,mjs}": [ |
| "prettier --write", |
| "eslint --fix --no-error-on-unmatched-pattern" |
| ], |
| "*.{json,md,yml,yaml,css}": [ |
| "prettier --write" |
| ] |
| } |
| } |
|
|