Files
pentagi/frontend/package.json
Sergey KozyrenkoandClaude Opus 4.8 b16d4a8b4a test(e2e): harden the e2e tooling and CI freshness checks
- Reject a non-object JSON body in the mock-LLM (JSON.parse('null') parsed but
  reading .tools then threw and killed the process).
- Pin serve-dist's PORT from the config so an ambient PORT can't move it off the
  port Playwright waits on.
- Fail lint on any warning, so a Playwright test with no assertion (expect-expect
  is a warning) can no longer lint clean.
- Add a CI check that regenerates src/graphql/types.ts and diffs it, so the
  compiled operations can't drift from the codegen input the stand validates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 05:47:15 +07:00

143 lines
5.6 KiB
JSON

{
"name": "pentagi",
"type": "module",
"version": "0.2.0",
"scripts": {
"build": "tsc -b && vite build",
"dev": "vite",
"e2e": "playwright test -c e2e/playwright.config.ts",
"e2e:setup": "playwright install chromium",
"e2e:ui": "playwright test -c e2e/playwright.config.ts --ui",
"e2e:visual": "./e2e/tools/run-visual.sh",
"e2e:visual:update": "./e2e/tools/run-visual.sh --update",
"graphql:generate": "graphql-codegen --config graphql-codegen.ts",
"lint": "eslint --max-warnings 0 \"{src,e2e}/**/*.{ts,tsx,js,jsx,mjs}\"",
"lint:fix": "eslint \"{src,e2e}/**/*.{ts,tsx,js,jsx,mjs}\" --fix",
"prettier": "prettier --check \"{src,e2e}/**/*.{ts,tsx,js,jsx,mjs,json,css,scss}\"",
"prettier:fix": "prettier --write \"{src,e2e}/**/*.{ts,tsx,js,jsx,mjs,json,css,scss}\"",
"ssl:generate": "tsx --eval 'import { generateCertificates } from \"./scripts/generate-ssl.ts\"; generateCertificates();'",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"test:watch": "vitest",
"typescript": "tsc -b"
},
"dependencies": {
"@apollo/client": "^4.2.3",
"@graphql-typed-document-node/core": "^3.2.0",
"@hookform/resolvers": "^5.4.0",
"@radix-ui/react-accordion": "^1.2.14",
"@radix-ui/react-avatar": "^1.2.0",
"@radix-ui/react-checkbox": "^1.3.5",
"@radix-ui/react-collapsible": "^1.1.14",
"@radix-ui/react-context-menu": "^2.3.1",
"@radix-ui/react-dialog": "^1.1.17",
"@radix-ui/react-dropdown-menu": "^2.1.18",
"@radix-ui/react-label": "^2.1.10",
"@radix-ui/react-popover": "^1.1.17",
"@radix-ui/react-progress": "^1.1.10",
"@radix-ui/react-scroll-area": "^1.2.12",
"@radix-ui/react-select": "^2.3.1",
"@radix-ui/react-separator": "^1.1.10",
"@radix-ui/react-slot": "^1.3.0",
"@radix-ui/react-switch": "^1.3.1",
"@radix-ui/react-tabs": "^1.1.15",
"@radix-ui/react-toggle": "^1.1.12",
"@radix-ui/react-toggle-group": "^1.1.13",
"@radix-ui/react-tooltip": "^1.2.10",
"@react-pdf/renderer": "^4.5.1",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.14.3",
"@tiptap/core": "^3.27.1",
"@tiptap/extension-code-block-lowlight": "^3.27.1",
"@tiptap/extension-image": "^3.27.1",
"@tiptap/extension-list": "^3.27.1",
"@tiptap/extension-table": "^3.27.1",
"@tiptap/extensions": "^3.27.1",
"@tiptap/markdown": "^3.27.1",
"@tiptap/pm": "^3.27.1",
"@tiptap/react": "^3.27.1",
"@tiptap/starter-kit": "^3.27.1",
"@xterm/addon-fit": "^0.11.0",
"@xterm/addon-search": "^0.16.0",
"@xterm/addon-unicode11": "^0.9.0",
"@xterm/addon-web-links": "^0.12.0",
"@xterm/addon-webgl": "^0.19.0",
"@xterm/xterm": "^6.0.0",
"axios": "^1.18.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"date-fns": "^4.4.0",
"github-slugger": "^2.0.0",
"graphql": "^16.14.2",
"graphql-ws": "^6.0.8",
"highlight.js": "^11.11.1",
"lowlight": "^3.3.0",
"lru-cache": "^11.5.1",
"lucide-react": "^1.20.0",
"marked": "^18.0.5",
"motion": "^12.40.0",
"react": "^19.2.7",
"react-day-picker": "^10.0.1",
"react-diff-viewer-continued": "^4.2.2",
"react-dom": "^19.2.7",
"react-hook-form": "^7.79.0",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^4.11.2",
"react-router-dom": "^7.18.0",
"react-textarea-autosize": "^8.5.9",
"recharts": "^3.8.1",
"rehype-highlight": "^7.0.2",
"rehype-slug": "^6.0.0",
"remark-gfm": "^4.0.1",
"sonner": "^2.0.7",
"tailwind-merge": "^3.6.0",
"tw-animate-css": "^1.4.0",
"use-debounce": "^10.1.1",
"zod": "^4.4.3"
},
"devDependencies": {
"@axe-core/playwright": "^4.12.1",
"@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^9.39.4",
"@graphql-codegen/cli": "^7.1.3",
"@graphql-codegen/typed-document-node": "^7.0.3",
"@graphql-codegen/typescript-operations": "^6.0.4",
"@playwright/test": "1.61.1",
"@prettier/plugin-xml": "^3.4.2",
"@tailwindcss/postcss": "^4.3.1",
"@tailwindcss/typography": "^0.5.20",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^24.13.2",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/ws": "^8.18.1",
"@typescript-eslint/eslint-plugin": "^8.61.1",
"@typescript-eslint/parser": "^8.61.1",
"@vitejs/plugin-react-swc": "^4.3.1",
"@vitest/coverage-v8": "^4.1.9",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-perfectionist": "^5.9.1",
"eslint-plugin-playwright": "^2.10.5",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.1.1",
"jsdom": "^29.1.1",
"postcss": "^8.5.15",
"prettier": "^3.8.4",
"prettier-plugin-tailwindcss": "^0.8.0",
"tailwindcss": "^4.3.1",
"tsx": "^4.22.4",
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vite-plugin-html": "^3.2.2",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^4.1.9",
"ws": "^8.21.1"
},
"packageManager": "pnpm@11.8.0"
}