{
  "name": "forge",
  "version": "1.0.2",
  "description": "Local AI agent desktop app — chat, IM bridge, scheduled tasks. Powered by Claude Agent SDK.",
  "author": "FEICAI <https://github.com/feicaiclub>",
  "license": "Apache-2.0",
  "repository": {
    "type": "git",
    "url": "https://github.com/feicaiclub/forge"
  },
  "private": true,
  "main": "dist-electron/main.js",
  "scripts": {
    "dev:next": "next dev --turbopack -p ${PORT:-3000}",
    "dev:web": "next dev --turbopack -p ${PORT:-3000} -H 0.0.0.0",
    "dev:electron:compile": "tsup electron/main.ts electron/preload.ts --outDir dist-electron --format cjs --external electron --no-splitting",
    "dev:electron": "pnpm dev:electron:compile && wait-on http://localhost:3000 && electron .",
    "dev": "concurrently -k -n NEXT,ELECTRON -c blue,green \"pnpm dev:next\" \"pnpm dev:electron\"",
    "build:next": "NODE_OPTIONS=--max-old-space-size=2048 next build",
    "build:electron": "node scripts/build-electron.mjs",
    "build:server": "pnpm build:next && node scripts/build-server.mjs",
    "build": "pnpm build:next && pnpm build:electron",
    "start:web": "next start -p ${PORT:-3000} -H 0.0.0.0",
    "start:server": "node dist-server/server.js",
    "package": "pnpm build && electron-builder",
    "package:mac": "pnpm build && electron-builder --mac",
    "package:win": "pnpm build && electron-builder --win",
    "package:linux": "pnpm build && electron-builder --linux",
    "typecheck": "tsc --noEmit",
    "db:generate:sqlite": "drizzle-kit generate --config=drizzle.sqlite.config.ts",
    "db:push:sqlite": "drizzle-kit push --config=drizzle.sqlite.config.ts",
    "db:studio:sqlite": "drizzle-kit studio --config=drizzle.sqlite.config.ts",
    "db:migrate": "tsx scripts/migrate-legacy-sqlite.ts"
  },
  "dependencies": {
    "@alicloud/dysmsapi20170525": "^4.5.1",
    "@alicloud/openapi-client": "^0.4.15",
    "@alicloud/tea-util": "^1.4.11",
    "@anthropic-ai/claude-agent-sdk": "^0.3.196",
    "@codemirror/commands": "^6.10.3",
    "@codemirror/lang-cpp": "^6.0.3",
    "@codemirror/lang-css": "^6.3.1",
    "@codemirror/lang-html": "^6.4.11",
    "@codemirror/lang-java": "^6.0.2",
    "@codemirror/lang-javascript": "^6.2.5",
    "@codemirror/lang-json": "^6.0.2",
    "@codemirror/lang-markdown": "^6.5.0",
    "@codemirror/lang-php": "^6.0.2",
    "@codemirror/lang-python": "^6.2.1",
    "@codemirror/lang-rust": "^6.0.2",
    "@codemirror/lang-sql": "^6.10.0",
    "@codemirror/lang-xml": "^6.1.0",
    "@codemirror/lang-yaml": "^6.1.3",
    "@codemirror/language": "^6.12.3",
    "@codemirror/legacy-modes": "^6.5.3",
    "@codemirror/state": "^6.6.0",
    "@codemirror/view": "^6.43.0",
    "@larksuiteoapi/node-sdk": "^1.66.1",
    "@lezer/highlight": "^1.2.0",
    "@uiw/codemirror-themes": "^4.25.10",
    "@uiw/react-codemirror": "^4.25.10",
    "@wecom/aibot-node-sdk": "^1.0.6",
    "better-auth": "^1.6.11",
    "better-sqlite3": "^11.0.0",
    "clsx": "^2.1.0",
    "dingtalk-stream": "2.1.4",
    "drizzle-orm": "^0.45.2",
    "lucide-react": "^0.500.0",
    "next": "^15.3.0",
    "playwright": "^1.59.0",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "react-markdown": "^10.1.0",
    "remark-gfm": "^4.0.1",
    "shiki": "^4.0.2",
    "silk-wasm": "^3.7.1",
    "tailwind-merge": "^3.0.0",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@anthropic-ai/sdk": "^0.107.0",
    "@modelcontextprotocol/sdk": "^1.29.0",
    "@types/better-sqlite3": "^7.0.0",
    "@types/node": "^22.0.0",
    "@types/react": "^19.0.0",
    "@types/react-dom": "^19.0.0",
    "autoprefixer": "^10.4.0",
    "concurrently": "^9.0.0",
    "drizzle-kit": "^0.31.10",
    "electron": "40.8.0",
    "electron-builder": "^26.0.0",
    "esbuild": "^0.25.0",
    "postcss": "^8.4.0",
    "tailwindcss": "^3.4.0",
    "tsup": "^8.0.0",
    "typescript": "^5.8.0",
    "vitest": "^4.1.6",
    "wait-on": "^8.0.0"
  },
  "pnpm": {
    "onlyBuiltDependencies": [
      "@alicloud/openapi-core",
      "better-sqlite3",
      "electron",
      "electron-winstaller",
      "esbuild",
      "protobufjs",
      "sharp"
    ]
  }
}
