{
  "name": "crewly",
  "version": "1.20.411",
  "type": "module",
  "description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
  "workspaces": [
    "packages/*",
    "frontend"
  ],
  "main": "dist/cli/cli/src/index.js",
  "bin": {
    "crewly": "./dist/cli/cli/src/index.js"
  },
  "files": [
    "dist/backend/",
    "dist/cli/",
    "config/",
    "!config/skills/agent/marketplace/",
    "!config/**/.env",
    "!config/**/.env.*",
    "!config/**/*.test.ts",
    "frontend/dist/index.html",
    "frontend/dist/assets/*.js",
    "frontend/dist/assets/*.css",
    "frontend/dist/assets/*.woff",
    "frontend/dist/assets/*.woff2",
    "frontend/dist/logo/",
    "README.md",
    "LICENSE",
    "packages/crewly-agent/bin/",
    "packages/crewly-agent/src/",
    "packages/crewly-agent/package.json",
    "packages/crewly-agent/README.md"
  ],
  "scripts": {
    "build": "npm run build:backend && npm run build:frontend && npm run build:cli",
    "build:server": "npm run build:backend && npm run build:cli",
    "build:backend": "tsc -p backend/tsconfig.json && node dist/backend/backend/src/scripts/stamp-build.js",
    "build:frontend": "cd frontend && npm run build",
    "build:cli": "tsc -p cli/tsconfig.json",
    "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"",
    "dev:backend": "npx tsx backend/src/index.ts",
    "dev:backend:watch": "npx tsx watch backend/src/index.ts",
    "dev:backend:debug": "node --inspect --import tsx backend/src/index.ts",
    "dev:frontend": "cd frontend && npm run dev",
    "start": "node dist/cli/cli/src/index.js start",
    "start:pm2": "pm2 start ecosystem.config.js",
    "stop:pm2": "pm2 stop ecosystem.config.js",
    "restart:pm2": "pm2 restart ecosystem.config.js",
    "reload:pm2": "pm2 reload ecosystem.config.js",
    "logs:pm2": "pm2 logs",
    "monit:pm2": "pm2 monit",
    "docker:build": "docker build -t crewly .",
    "docker:run": "docker run -p 8788:8788 crewly",
    "docker:compose:up": "docker-compose up -d",
    "docker:compose:down": "docker-compose down",
    "docker:compose:logs": "docker-compose logs -f",
    "test": "jest",
    "test:backend": "jest tests/unit tests/integration",
    "test:unit": "jest --testPathPattern='backend/src|cli/src|config/' --testPathIgnorePatterns='node_modules|integration'",
    "test:integration": "jest tests/integration 'backend/src/.*\\.integration\\.test\\.ts'",
    "test:orchestrator": "jest tests/unit/tmux.service.test.ts tests/integration/orchestrator-initialization.test.ts --testNamePattern=\"Orchestrator|orchestrator\"",
    "test:pty": "jest --testPathPattern=\"backend/src/services/session/pty\" --testTimeout=60000",
    "test:reliability": "jest --testPathPattern=\"pty-input-reliability\" --testTimeout=60000",
    "test:e2e": "playwright test",
    "test:e2e:ui": "playwright test --ui",
    "test:e2e:headed": "playwright test --headed",
    "eval:l4": "npx tsx backend/src/services/agent/crewly-agent/eval/run-eval-l4.ts",
    "lint": "eslint . --ext .ts,.tsx",
    "typecheck": "tsc --noEmit",
    "check:input-guard": "node dist/cli/cli/src/index.js doctor --input-guard --build dist",
    "check:oss-boundary": "npx tsx backend/src/scripts/check-oss-boundary.ts",
    "check:rule-metadata": "npx tsx backend/src/scripts/check-rule-metadata.ts",
    "preinstall": "node dist/cli/cli/src/scripts/check-native-toolchain.js 2>/dev/null || true",
    "postinstall": "([ ! -f dist/cli/cli/src/scripts/ensure-node-pty.js ] || node dist/cli/cli/src/scripts/ensure-node-pty.js) && (npm rebuild better-sqlite3 2>/dev/null || true) && (node dist/cli/cli/src/scripts/check-native-toolchain.js || true)",
    "prepublishOnly": "npm run build"
  },
  "dependencies": {
    "@ai-sdk/anthropic": "^3.0.58",
    "@ai-sdk/google": "^3.0.43",
    "@ai-sdk/openai": "^3.0.41",
    "@opentelemetry/api": "^1.9.0",
    "@opentelemetry/exporter-trace-otlp-http": "^0.213.0",
    "@opentelemetry/instrumentation-express": "^0.61.0",
    "@opentelemetry/instrumentation-http": "^0.213.0",
    "@opentelemetry/resources": "^2.6.0",
    "@opentelemetry/sdk-node": "^0.213.0",
    "@opentelemetry/sdk-trace-node": "^2.6.0",
    "@opentelemetry/semantic-conventions": "^1.40.0",
    "@supabase/supabase-js": "^2.99.0",
    "@types/better-sqlite3": "^7.6.13",
    "@xterm/headless": "^6.0.0",
    "ai": "^6.0.116",
    "ajv": "^8.18.0",
    "axios": "^1.11.0",
    "better-sqlite3": "^12.8.0",
    "chalk": "^5.3.0",
    "chokidar": "^3.5.3",
    "commander": "^11.0.0",
    "cors": "^2.8.5",
    "cron-parser": "^5.5.0",
    "dotenv": "^17.2.3",
    "express": "^4.18.2",
    "helmet": "^8.1.0",
    "ioredis": "^5.10.1",
    "jsonwebtoken": "^9.0.3",
    "mongodb": "^7.1.0",
    "morgan": "^1.10.1",
    "node-cron": "^4.2.1",
    "node-pty": "1.2.0-beta.15",
    "ollama-ai-provider": "^1.2.0",
    "open": "^9.1.0",
    "pdf-parse": "^2.4.5",
    "playwright-core": "^1.58.2",
    "socket.io": "^4.7.2",
    "sqlite-vec": "^0.1.7-alpha.2",
    "stripe": "^20.4.1",
    "tar": "^7.5.9",
    "tsx": "^4.21.0",
    "uuid": "^9.0.0",
    "ws": "^8.14.2",
    "yaml": "^2.3.2",
    "zod": "^3.25.76"
  },
  "devDependencies": {
    "@playwright/test": "^1.55.0",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.4",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/morgan": "^1.9.10",
    "@types/node": "^20.5.1",
    "@types/socket.io-client": "^1.4.36",
    "@types/supertest": "^6.0.3",
    "@types/tar": "^6.1.13",
    "@types/uuid": "^9.0.2",
    "@types/ws": "^8.5.5",
    "@typescript-eslint/eslint-plugin": "^6.4.0",
    "@typescript-eslint/parser": "^6.4.0",
    "concurrently": "^8.2.0",
    "eslint": "^8.47.0",
    "jest": "^29.6.2",
    "jsdom": "^27.0.1",
    "nodemon": "^3.0.1",
    "playwright": "^1.55.0",
    "socket.io-client": "^4.8.1",
    "supertest": "^7.1.4",
    "ts-jest": "^29.1.1",
    "ts-node": "^10.9.1",
    "tsx": "^4.21.0",
    "typescript": "^5.1.6"
  },
  "keywords": [
    "ai-agents",
    "multi-agent",
    "claude-code",
    "gemini-cli",
    "codex",
    "orchestration",
    "developer-tools",
    "team-coordination",
    "real-time-dashboard",
    "pty",
    "automation",
    "mcp"
  ],
  "author": "Steve Huang",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/stevehuang0115/crewly.git"
  },
  "homepage": "https://github.com/stevehuang0115/crewly#readme",
  "bugs": {
    "url": "https://github.com/stevehuang0115/crewly/issues"
  },
  "optionalDependencies": {
    "@modelcontextprotocol/sdk": "^0.5.0",
    "@slack/bolt": "^3.22.0",
    "@whiskeysockets/baileys": "^7.0.0-rc.9"
  },
  "engines": {
    "node": ">=22.0.0"
  }
}
