Backend:
- Conversation API at /api/maf-roundtable/conversations: create/list/detail,
paginated messages, atomic send+run start, owner-only isolation,
admin read-only diagnostic access
- SSE real-time event stream (GET /conversations/{id}/stream) backed by
ConversationEventHub + conversation_events store; multi-worker deployment doc
- Deterministic server-owned stage-3 dispatch contracts (dispatch_contracts.py):
routing resolved from trusted MAF deployment config instead of manager-chosen
agent ids; config.yaml keeps stage-3 routing deployment-owned
(default_manager_agent_id / seat ids / business_routes / max_seats_per_run)
- Conversation persistence (conversations/messages stores) + v2 migration script
- Tests: conversations, conversation stream, migration, phase3 conversation dispatch
Frontend:
- Vitest test infra for MAF (vitest.maf.config.ts + test:maf script) with
component tests for ApprovalCard/RunHeader/SessionsPage and use-maf-events
- Session form lib, flow-graph dialog / run-detail / sessions page updates,
routes and nav tweaks
- Docs: R0 legacy interaction baseline mapping, updated implementation plan
Co-authored-by: Cursor <cursoragent@cursor.com>
130 lines
4.4 KiB
JSON
130 lines
4.4 KiB
JSON
{
|
|
"name": "deer-flow-frontend-vite",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "node --max-old-space-size=8192 ./node_modules/vite/bin/vite.js build",
|
|
"build:sit": "node --max-old-space-size=8192 ./node_modules/vite/bin/vite.js build --mode sit",
|
|
"build:test": "node --max-old-space-size=8192 ./node_modules/vite/bin/vite.js build --mode test",
|
|
"build:network": "node --max-old-space-size=8192 ./node_modules/vite/bin/vite.js build --mode network",
|
|
"preview": "vite preview",
|
|
"typecheck": "tsc --noEmit",
|
|
"test:maf": "vitest run --config vitest.maf.config.ts",
|
|
"check:chrome109-css": "node scripts/check-chrome109-css.mjs",
|
|
"check:legacy-chrome-css": "node scripts/check-chrome109-css.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/lang-css": "^6.3.1",
|
|
"@codemirror/lang-html": "^6.4.11",
|
|
"@codemirror/lang-javascript": "^6.2.4",
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
"@codemirror/lang-python": "^6.2.1",
|
|
"@codemirror/language-data": "^6.5.2",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@fontsource/noto-sans-sc": "^5.2.9",
|
|
"@langchain/core": "^1.1.15",
|
|
"@langchain/langgraph-sdk": "^1.5.3",
|
|
"@radix-ui/react-avatar": "^1.1.11",
|
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-hover-card": "^1.1.15",
|
|
"@radix-ui/react-icons": "^1.3.2",
|
|
"@radix-ui/react-progress": "^1.1.8",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.8",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@radix-ui/react-use-controllable-state": "^1.2.2",
|
|
"@tanstack/react-query": "^5.90.17",
|
|
"@tiptap/core": "^3.23.4",
|
|
"@tiptap/extension-bubble-menu": "^3.23.4",
|
|
"@tiptap/extension-placeholder": "^3.23.4",
|
|
"@tiptap/extension-underline": "^3.23.4",
|
|
"@tiptap/pm": "^3.23.4",
|
|
"@tiptap/react": "^3.23.4",
|
|
"@tiptap/starter-kit": "^3.23.4",
|
|
"@types/hast": "^3.0.4",
|
|
"@uiw/codemirror-theme-basic": "^4.25.4",
|
|
"@uiw/codemirror-theme-monokai": "^4.25.4",
|
|
"@uiw/react-codemirror": "^4.25.4",
|
|
"@xyflow/react": "^12.10.0",
|
|
"ai": "^6.0.33",
|
|
"axios": "1.16.1",
|
|
"best-effort-json-parser": "^1.2.1",
|
|
"canvas-confetti": "^1.9.4",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"codemirror": "^6.0.2",
|
|
"date-fns": "^4.1.0",
|
|
"dayjs": "^1.11.21",
|
|
"dnd-kit": "^0.0.2",
|
|
"docx": "^9.5.1",
|
|
"dotenv": "^17.2.3",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"file-saver": "^2.0.5",
|
|
"gsap": "^3.13.0",
|
|
"hast": "^1.0.0",
|
|
"katex": "^0.16.28",
|
|
"lucide-react": "^0.562.0",
|
|
"mermaid": "^11.15.0",
|
|
"motion": "^12.26.2",
|
|
"nanoid": "^5.1.6",
|
|
"next-themes": "^0.4.6",
|
|
"ogl": "^1.0.11",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-resizable-panels": "^4.4.1",
|
|
"react-router-dom": "^7.9.4",
|
|
"react-syntax-highlighter": "^16.1.1",
|
|
"rehype-katex": "^7.0.1",
|
|
"rehype-raw": "^7.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"remark-math": "^6.0.0",
|
|
"shiki": "3.15.0",
|
|
"sonner": "^2.0.7",
|
|
"streamdown": "1.4.0",
|
|
"tailwind-merge": "^3.4.0",
|
|
"tdesign-react": "^1.12.3",
|
|
"tiptap-markdown": "^0.9.0",
|
|
"tokenlens": "^1.3.1",
|
|
"unist-util-visit": "^5.0.0",
|
|
"use-stick-to-bottom": "^1.1.1",
|
|
"uuid": "^14.0.0",
|
|
"zod": "^3.24.2"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4.0.15",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/file-saver": "^2.0.7",
|
|
"@types/gsap": "^3.0.0",
|
|
"@types/node": "^20.14.10",
|
|
"@types/react": "^19.0.0",
|
|
"@types/react-dom": "^19.0.0",
|
|
"@vitejs/plugin-react": "^5.0.4",
|
|
"jsdom": "^30.0.1",
|
|
"lightningcss": "^1.30.2",
|
|
"postcss": "^8.5.3",
|
|
"tailwindcss": "^4.0.15",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^5.8.2",
|
|
"vite": "^6.0.0",
|
|
"vite-plugin-source-identifier": "^1.1.2",
|
|
"vitest": "^4.1.10"
|
|
},
|
|
"packageManager": "pnpm@10.26.2"
|
|
}
|