{ "name": "@aitu/source", "version": "0.6.9", "license": "MIT", "packageManager": "pnpm@10.21.0", "description": "Opentu - An open-source whiteboard tool with AI-powered image/video creation, mind mapping, flowcharts, and freehand drawing", "homepage": "https://opentu.ai", "repository": { "type": "git", "url": "https://github.com/ljquan/aitu.git" }, "bugs": { "url": "https://github.com/ljquan/aitu/issues" }, "keywords": [ "whiteboard", "mindmap", "flowchart", "drawing", "AI", "collaboration", "visualization" ], "author": "ljquan", "scripts": { "start": "nx serve web", "build": "node scripts/update-version.js && nx run-many -t=build", "build:web": "node scripts/update-version.js && nx build web", "preview": "npx serve dist/apps/web -l 7288", "preview:watch": "concurrently -k \"cd apps/web && NODE_OPTIONS='--max-old-space-size=8192' npx vite build --watch\" \"npx wait-on dist/apps/web/index.html && npx serve dist/apps/web -l 7288\"", "package": "npm run build && node scripts/create-deploy-package.js", "typecheck": "nx run-many -t=typecheck", "lint": "nx run-many -t=lint", "check": "pnpm typecheck && pnpm lint", "test": "nx run-many -t=test", "e2e": "nx e2e web-e2e", "e2e:smoke": "nx e2e web-e2e -- --project=smoke", "e2e:visual": "nx e2e web-e2e -- --project=visual", "e2e:visual:update": "nx e2e web-e2e -- --project=visual --update-snapshots", "e2e:visual:report": "npx playwright show-report apps/web-e2e/playwright-report", "e2e:features": "nx e2e web-e2e -- --project=chromium", "e2e:manual": "nx e2e web-e2e -- --project=manual", "manual:screenshots": "cd apps/web-e2e && CI= npx playwright test --project=manual", "manual:build": "npx ts-node --compiler-options '{\"module\":\"commonjs\",\"esModuleInterop\":true}' scripts/generate-manual.ts", "manual:update": "pnpm manual:screenshots && pnpm manual:build", "manual:dev": "pnpm manual:update", "manual:record": "cd apps/web-e2e && npx playwright codegen http://localhost:7200", "manual:video": "cd apps/web-e2e && CI= npx playwright test --project=manual-video -g 'GIF 动图录制'", "manual:gif": "pnpm manual:video && node scripts/video-to-gif.js && pnpm manual:build", "manual:gif:mindmap": "cd apps/web-e2e && CI= npx playwright test --project=manual-video -g '思维导图创建演示' && node scripts/video-to-gif.js --test 思维导图 --trim 2.4 && pnpm manual:build", "manual:video2gif": "node scripts/video-to-gif.js", "size": "size-limit", "size:why": "size-limit --why", "version:patch": "node scripts/safe-version-bump.js patch", "version:minor": "node scripts/safe-version-bump.js minor", "version:major": "node scripts/safe-version-bump.js major", "release:skip": "node scripts/deploy-hybrid.js --skip-build --skip-e2e --skip-npm --skip-manual", "release": "node scripts/deploy-hybrid.js --skip-e2e --skip-manual", "release:minor": "npm run version:minor && node scripts/deploy-hybrid.js", "release:major": "npm run version:major && node scripts/deploy-hybrid.js", "release:retry": "node scripts/deploy-hybrid.js --skip-e2e --skip-manual", "release:force-bump": "npm run version:patch && node scripts/deploy-hybrid.js --skip-e2e", "release:dry": "node scripts/deploy-hybrid.js --dry-run", "pub": "npm run build && node scripts/publish.js", "npm:publish": "node scripts/publish-npm.js", "npm:publish:dry": "node scripts/publish-npm.js --dry-run", "npm:publish:skip-build": "node scripts/publish-npm.js --skip-build", "deploy:upload-script": "node scripts/upload-deploy-script.js", "deploy:upload": "node scripts/upload-and-deploy.js", "deploy:nginx": "node scripts/upload-nginx-config.js" }, "private": true, "dependencies": { "@floating-ui/react": "^0.26.24", "@llamaindex/chat-ui": "^0.6.1", "@plait-board/markdown-to-drawnix": "^0.0.6", "@plait-board/mermaid-to-drawnix": "^0.0.7", "@plait/common": "^0.84.0", "@plait/core": "^0.84.0", "@plait/draw": "^0.84.0", "@plait/layouts": "^0.84.0", "@plait/mind": "^0.84.0", "@plait/text-plugins": "^0.84.0", "@sentry/react": "^10.33.0", "@tanstack/react-virtual": "^3.13.13", "ahooks": "^3.8.0", "browser-fs-access": "^0.35.0", "classnames": "^2.5.1", "clipper-lib": "^6.4.2", "is-hotkey": "^0.2.0", "jszip": "^3.10.1", "localforage": "^1.10.0", "lucide-react": "^0.562.0", "mermaid": "^11.12.2", "mobile-detect": "^1.4.5", "open-color": "^1.9.1", "postmessage-duplex": "^1.2.0", "react": "18.3.1", "react-dom": "18.3.1", "roughjs": "^4.6.6", "rxjs": "~7.8.0", "slate": "^0.116.0", "slate-dom": "^0.116.0", "slate-history": "^0.115.0", "slate-react": "^0.116.0", "tdesign-icons-react": "^0.5.1", "tdesign-react": "^1.14.5", "tslib": "^2.3.0", "viewerjs": "^1.11.7", "web-vitals": "^5.1.0", "winbox": "^0.2.82", "xlsx": "^0.18.5" }, "devDependencies": { "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@mdx-js/mdx": "^3.1.1", "@nx/cypress": "19.3.0", "@nx/devkit": "19.3.0", "@nx/eslint": "19.3.0", "@nx/eslint-plugin": "19.3.0", "@nx/js": "19.3.0", "@nx/playwright": "19.3.0", "@nx/react": "19.3.0", "@nx/vite": "19.3.0", "@nx/web": "19.3.0", "@nx/workspace": "19.3.0", "@playwright/test": "^1.36.0", "@size-limit/preset-app": "^12.0.0", "@swc-node/register": "~1.9.1", "@swc/cli": "^0.6.0", "@swc/core": "~1.5.7", "@swc/helpers": "~0.5.11", "@tailwindcss/postcss": "^4.1.17", "@testing-library/react": "15.0.6", "@types/is-hotkey": "^0.1.10", "@types/js-yaml": "^4.0.9", "@types/node": "18.16.9", "@types/react": "18.3.1", "@types/react-dom": "18.3.0", "@typescript-eslint/eslint-plugin": "^7.3.0", "@typescript-eslint/parser": "^7.3.0", "@vitejs/plugin-react": "^4.2.0", "@vitest/ui": "^3.0.8", "autoprefixer": "^10.4.22", "concurrently": "^9.2.1", "eslint": "~8.57.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-playwright": "^0.15.3", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "glob": "^13.0.0", "gray-matter": "^4.0.3", "js-yaml": "^4.1.1", "jsdom": "~22.1.0", "nx": "19.3.0", "postcss": "^8.5.6", "prettier": "^2.6.2", "rollup-plugin-visualizer": "^6.0.5", "sass": "^1.55.0", "size-limit": "^12.0.0", "tailwindcss": "^4.1.17", "ts-node": "10.9.1", "typescript": "~5.4.2", "vite": "^6.2.2", "vite-plugin-dts": "^4.5.3", "vitest": "^3.0.8", "wait-on": "^9.0.3" } }