{
  "name": "pios-webui",
  "version": "0.37.0",
  "description": "Web chat interface for the pi coding agent, powered by the pi SDK (@earendil-works/pi-coding-agent) — one-command run, systemd/launchd deployable",
  "license": "MIT",
  "type": "module",
  "bin": {
    "pios": "bin/pios.mjs"
  },
  "main": "dist/server/index.js",
  "files": [
    "bin/",
    "dist/",
    "web/dist/",
    "web/public/",
    "themes/",
    "deploy/",
    "extensions/",
    "README.md",
    "LICENSE"
  ],
  "keywords": [
    "pi",
    "pi-package",
    "coding-agent",
    "ai",
    "chat",
    "web-ui",
    "terminal",
    "llm"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/xing-shuyin/pios.git"
  },
  "pi": {
    "extensions": [
      "./extensions"
    ]
  },
  "engines": {
    "node": ">=22.19.0"
  },
  "scripts": {
    "prepublishOnly": "npm run build",
    "dev": "concurrently -k -n server,web -c blue,green \"npm:dev:server\" \"npm:dev:web\"",
    "dev:server": "cross-env PORT=8788 PI_WEB_ALLOW_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 node --watch --import tsx server/index.ts",
    "dev:web": "vite --config web/vite.config.ts",
    "build": "npm run build:web && npm run build:server",
    "build:web": "vite build --config web/vite.config.ts",
    "build:server": "tsc -p tsconfig.server.json",
    "typecheck": "tsc -p tsconfig.server.json --noEmit && tsc -p web/tsconfig.json --noEmit && tsc -p tsconfig.tests.json --noEmit",
    "test": "vitest run",
    "test:unit": "vitest run",
    "test:smoke": "node tests/run-smoke.mjs",
    "check:protocol": "node scripts/check-protocol-sync.mjs",
    "test:freeze": "node tests/freeze-test.mjs",
    "start": "node dist/server/index.js",
    "stop": "node scripts/stop-server.mjs"
  },
  "dependencies": {
    "@earendil-works/pi-coding-agent": "^0.84.2",
    "@radix-ui/react-tabs": "^1.1.21",
    "@xterm/addon-fit": "^0.11.0",
    "@xterm/xterm": "^6.0.0",
    "compression": "^1.8.1",
    "express": "^4.21.2",
    "highlight.js": "^11.10.0",
    "mysql2": "^3.24.2",
    "node-pty": "^1.1.0",
    "pg": "^8.23.0",
    "react": "^18.3.1",
    "react-arborist": "^3.16.0",
    "react-dom": "^18.3.1",
    "react-icons": "^5.7.0",
    "react-markdown": "^9.0.1",
    "rehype-highlight": "^7.0.1",
    "remark-gfm": "^4.0.0",
    "typebox": "^1.3.14",
    "undici": "^8.9.0",
    "ws": "^8.18.0"
  },
  "devDependencies": {
    "@types/compression": "^1.8.1",
    "@types/express": "^4.17.21",
    "@types/node": "^22.10.0",
    "@types/pg": "^8.23.1",
    "@types/react": "^18.3.12",
    "@types/react-dom": "^18.3.1",
    "@types/ws": "^8.5.13",
    "@vitejs/plugin-react": "^4.3.4",
    "concurrently": "^9.1.0",
    "cross-env": "^10.1.0",
    "playwright-core": "^1.62.1",
    "tsx": "^4.19.2",
    "typescript": "^5.7.2",
    "vite": "^6.0.3",
    "vitest": "^4.1.11"
  },
  "allowScripts": {
    "node-pty@1.1.0": true
  }
}
