Governed substrate for autonomous agents: scoped identity (passports), audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
159 lines
5.4 KiB
JSON
159 lines
5.4 KiB
JSON
{
|
|
"name": "business-crm",
|
|
"version": "1.2.0",
|
|
"description": "GOD CRM - Universal Workspace Management System (Clean Architecture)",
|
|
"type": "module",
|
|
"main": "dist-electron/electron/main.js",
|
|
"scripts": {
|
|
"dev": "concurrently \"npm run server\" \"npm run client\"",
|
|
"server": "node backend/server.js",
|
|
"client": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"build:desktop:renderer": "vite build --config vite.config.desktop.ts",
|
|
"build:desktop:main": "tsc -p electron/tsconfig.json && node -e \"require('fs').writeFileSync('dist-electron/package.json', JSON.stringify({type:'commonjs'}))\"",
|
|
"build:desktop": "npm run build:desktop:renderer && npm run build:desktop:main",
|
|
"electron:dev": "npm run build:desktop && electron .",
|
|
"dist:linux:appimage": "npm run build:desktop && electron-builder --linux AppImage",
|
|
"dist:win": "npm run build:desktop && electron-builder --win --x64",
|
|
"dist:mac": "npm run build:desktop && electron-builder --mac --universal",
|
|
"dist:all": "npm run build:desktop && electron-builder -lwm",
|
|
"smoke:adr-0042": "node scripts/smoke-adr0151.mjs",
|
|
"test": "vitest run",
|
|
"test:isolated": "env -u BUSINESS_CRM_IS_PROD POSTGRES_DB=godcrm_test vitest run",
|
|
"typecheck": "tsc --noEmit",
|
|
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
"lint:backend": "eslint backend/ --ext .js",
|
|
"format": "prettier --check .",
|
|
"format:write": "prettier --write .",
|
|
"docs:generate": "node backend/scripts/generate-openapi.js"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@google/model-viewer": "^4.2.0",
|
|
"@hookform/resolvers": "^3.3.4",
|
|
"@mendable/firecrawl-js": "^1.21.1",
|
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@preact/signals-react": "^3.10.1",
|
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-icons": "^1.3.2",
|
|
"@radix-ui/react-popover": "^1.1.6",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tooltip": "^1.1.7",
|
|
"@tanstack/react-query": "^5.0.0",
|
|
"@tanstack/react-table": "^8.11.0",
|
|
"@types/react-grid-layout": "^1.3.5",
|
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
"@xyflow/react": "^12.10.0",
|
|
"ajv": "^8.17.1",
|
|
"axios": "^1.13.2",
|
|
"bcrypt": "^6.0.0",
|
|
"better-sqlite3": "^12.4.1",
|
|
"cookie-parser": "^1.4.7",
|
|
"cors": "^2.8.5",
|
|
"crypto-js": "^4.2.0",
|
|
"csv-parse": "^6.1.0",
|
|
"date-fns": "^3.0.0",
|
|
"dompurify": "^3.3.1",
|
|
"dotenv": "^16.3.1",
|
|
"electron-store": "^8.2.0",
|
|
"electron-updater": "^6.8.3",
|
|
"express": "^4.22.1",
|
|
"express-rate-limit": "^8.2.1",
|
|
"framer-motion": "^12.0.0",
|
|
"googleapis": "^171.4.0",
|
|
"helmet": "^7.1.0",
|
|
"highlight.js": "^11.11.1",
|
|
"i18next": "^25.8.0",
|
|
"imapflow": "^1.4.3",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"knex": "^3.1.0",
|
|
"livekit-client": "^2.19.0",
|
|
"lucide-react": "^0.553.0",
|
|
"mailparser": "^3.9.12",
|
|
"markdown-it": "^14.1.0",
|
|
"multer": "^2.0.2",
|
|
"mysql2": "^3.15.3",
|
|
"node-cron": "^4.2.1",
|
|
"nodemailer": "^7.0.10",
|
|
"openai": "^4.104.0",
|
|
"pg": "^8.16.3",
|
|
"pino": "^10.1.0",
|
|
"pino-pretty": "^13.1.3",
|
|
"pixi.js": "^8.17.1",
|
|
"playwright": "^1.58.2",
|
|
"qrcode": "^1.5.3",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-grid-layout": "^1.5.2",
|
|
"react-hook-form": "^7.49.0",
|
|
"react-hot-toast": "^2.6.0",
|
|
"react-i18next": "^16.5.3",
|
|
"react-is": "^19.2.4",
|
|
"react-markdown": "^10.1.0",
|
|
"react-player": "^3.4.0",
|
|
"react-quill-new": "^3.8.3",
|
|
"react-router-dom": "^7.13.0",
|
|
"react-syntax-highlighter": "^16.1.0",
|
|
"react-window": "^1.8.10",
|
|
"reactflow": "^11.11.4",
|
|
"recharts": "^3.4.1",
|
|
"remark-gfm": "^4.0.1",
|
|
"rss-parser": "^3.13.0",
|
|
"sharp": "^0.34.5",
|
|
"socket.io": "^4.8.3",
|
|
"socket.io-client": "^4.8.3",
|
|
"speakeasy": "^2.0.0",
|
|
"swagger-jsdoc": "^6.2.8",
|
|
"swagger-ui-express": "^5.0.1",
|
|
"transliteration": "^2.6.0",
|
|
"ts-morph": "^27.0.2",
|
|
"zod": "^3.22.0",
|
|
"zustand": "^4.5.7"
|
|
},
|
|
"overrides": {
|
|
"tar": "^7.5.7"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.40.0",
|
|
"@preact/signals-react-transform": "^0.8.1",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.0",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/dompurify": "^3.0.5",
|
|
"@types/node": "^20.10.8",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^18.3.11",
|
|
"@types/react-dom": "^18.3.5",
|
|
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
"@typescript-eslint/parser": "^7.0.0",
|
|
"@vitejs/plugin-react": "^4.7.0",
|
|
"@vitest/ui": "^4.0.8",
|
|
"autoprefixer": "^10.4.17",
|
|
"concurrently": "^8.2.2",
|
|
"electron": "^31.7.7",
|
|
"electron-builder": "^25.1.8",
|
|
"eslint": "^8.57.0",
|
|
"eslint-config-prettier": "^9.1.0",
|
|
"eslint-plugin-jsx-a11y": "^6.8.0",
|
|
"eslint-plugin-react": "^7.34.1",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"jsdom": "^27.1.0",
|
|
"postcss": "^8.4.35",
|
|
"prettier": "^3.2.5",
|
|
"supertest": "^7.1.4",
|
|
"tailwindcss": "^3.4.0",
|
|
"typescript": "^5.3.3",
|
|
"vite": "^5.4.21",
|
|
"vitest": "^4.0.8"
|
|
},
|
|
"_test_scripts_stripped": true
|
|
}
|