返回 DeepSeek-Reasonix
package.json
根目录 / desktop / frontend / package.json
1 {
2 "name": "reasonix-desktop-frontend",
3 "private": true,
4 "version": "0.0.0",
5 "type": "module",
6 "packageManager": "pnpm@10.34.5",
7 "scripts": {
8 "dev": "vite",
9 "build": "pnpm lint:hooks && pnpm check:waapi && pnpm check:scroll-writer && pnpm check:app-layers && node scripts/check-css-syntax.mjs src/styles.css src/components/ComposerWorkspaceContextBar.css src/components/RemoteConnectWizard.css src/components/ChatTranscript.css src/components/MCPInteractionCard.css src/components/SubagentDetails.css && node scripts/check-z-index-tokens.mjs src/styles.css src/components/ComposerWorkspaceContextBar.css src/components/RemoteConnectWizard.css && node scripts/check-theme-token-contract.mjs && tsc --noEmit && vite build && node scripts/check-bundle-budget.mjs",
10 "build:electron": "node scripts/build-for-shell.mjs electron",
11 "check:bundle": "node scripts/check-bundle-budget.mjs",
12 "check:scroll-writer": "node scripts/check-single-scroll-writer.mjs",
13 "preview": "vite preview",
14 "check:css": "node scripts/check-css-syntax.mjs src/styles.css src/components/ComposerWorkspaceContextBar.css src/components/RemoteConnectWizard.css src/components/MCPInteractionCard.css && node scripts/check-z-index-tokens.mjs src/styles.css src/components/ComposerWorkspaceContextBar.css src/components/RemoteConnectWizard.css && node scripts/check-theme-token-contract.mjs",
15 "check:waapi": "node scripts/check-waapi-contract.mjs",
16 "lint:hooks": "eslint \"src/**/*.{ts,tsx}\"",
17 "test:todo-visibility": "node scripts/test-todo-visibility.mjs && tsx src/__tests__/todo-panel-lifecycle.test.tsx",
18 "typecheck": "tsc --noEmit",
19 "test:terminal": "tsx src/__tests__/terminal-events.test.ts && tsx src/__tests__/terminal-store.test.ts && tsx src/__tests__/terminal-output.test.ts && tsx src/__tests__/terminal-theme.test.ts && tsx src/__tests__/terminal-selection.test.ts && tsx src/__tests__/workspace-layout.test.ts",
20 "test:usage-stats": "tsx src/__tests__/usage-stats-format.test.ts && tsx src/__tests__/usage-stats-panel.test.tsx",
21 "test:task-monitor": "tsx src/components/TaskMonitorPanel.test.tsx && tsx src/__tests__/task-monitor-navigation.test.ts",
22 "test:mcp-app": "tsx src/__tests__/mcp-app-protocol.test.ts",
23 "test:workspace": "tsx src/__tests__/keyed-resource.test.ts && tsx src/__tests__/workspace-tree-memory.test.ts && tsx src/__tests__/workspace-refresh-store.test.ts && tsx src/__tests__/workspace-selection-isolation.test.tsx && tsx src/__tests__/workspace-presented-pagination.test.tsx && tsx src/__tests__/workspace-changes-errors.test.tsx && tsx src/__tests__/workspace-turn-verification.test.tsx && tsx src/__tests__/workspace-preview-css.test.ts && tsx src/__tests__/workspace-media-release.test.ts && tsx src/__tests__/workspace-context-menu.test.tsx && tsx src/__tests__/workspace-resize-interaction.test.tsx && tsx src/__tests__/workspace-panel-swr-contract.test.ts",
24 "test:settings-browser": "node bench/settings-layout.mjs",
25 "test:sidebar-browser": "node bench/project-tree-sidebar.mjs",
26 "test:settings-responsive": "tsx src/__tests__/settings-responsive-layout.test.ts",
27 "test:stream": "tsx src/__tests__/raf-batch.test.ts && tsx src/__tests__/stream-delta-batch.test.ts && tsx src/__tests__/use-controller-stream-progress.test.ts",
28 "test:motion": "node scripts/check-motion-ci-contract.mjs && node scripts/check-waapi-contract.mjs --self-test && tsx src/__tests__/native-motion.test.tsx && tsx src/__tests__/approval-animation.test.tsx",
29 "test:ci-contract": "node --test scripts/artifact-identity.test.mjs bench/transcript-performance.test.mjs bench/transcript-retry.test.mjs",
30 "test:motion-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/approval-animation.mjs",
31 "test:theme-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/theme-surface-contract.mjs",
32 "test:diagnostics": "tsx src/__tests__/diagnostics-settings.test.tsx",
33 "test:transcript": "tsx src/__tests__/canonical-user-display.test.ts && tsx src/__tests__/chat-tool-presentation.test.ts && tsx src/__tests__/chat-view-source.test.ts && tsx src/__tests__/presented-files.test.ts && node --import ./scripts/css-stub-register.mjs --import tsx src/__tests__/presented-files-ui.test.tsx && tsx src/__tests__/chat-content-loader.test.ts && tsx src/__tests__/chat-details-race.test.tsx && tsx src/__tests__/tool-payload-preview.test.ts && tsx src/__tests__/markdown-natural-flow.test.tsx && tsx src/__tests__/chat-natural-flow.test.tsx && tsx src/__tests__/chat-scroll-controller.test.ts && tsx src/__tests__/markdown-pipeline.test.tsx && tsx src/__tests__/markdown-worker-client.test.ts && tsx src/__tests__/transcript-store.test.ts && tsx src/__tests__/transcript-follow-client.test.ts && tsx src/__tests__/transcript-session-follower.test.ts && tsx src/__tests__/transcript-scroll-diagnostics.test.ts && tsx src/__tests__/session-export-routing.test.tsx && tsx src/__tests__/session-export-operation.test.ts && tsx src/__tests__/typography-overflow-contract.test.ts && tsx src/__tests__/nested-scroll-handoff.test.ts && tsx src/__tests__/transcript-outline-store.test.ts && tsx src/__tests__/chat-turn-jump.test.ts && node --import ./scripts/css-stub-register.mjs --import tsx src/__tests__/chat-turn-outline-jump.test.tsx",
34 "test:session-export-browser": "node bench/session-export.mjs",
35 "test:transcript-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers CHAT_BROWSER=chromium node bench/chat-transcript.mjs",
36 "test:transcript-reader-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers CHAT_BROWSER=chromium node bench/chat-transcript.mjs",
37 "test:transcript-electron": "node bench/transcript-layout.mjs --electron",
38 "test:submission-browser": "node bench/submission-handoff.mjs",
39 "test:submission-electron": "node bench/submission-handoff.mjs --electron",
40 "test:dock-electron": "node bench/dock-file-navigation.mjs --electron",
41 "pretest": "pnpm test:terminal && pnpm test:task-monitor && pnpm test:composer && tsx src/__tests__/context-center-contract.test.ts && tsx src/__tests__/provider-model-cache.test.ts && tsx src/__tests__/format-tokens.test.ts && pnpm test:usage-stats && pnpm test:settings-responsive && pnpm test:composer-menu-viewport && pnpm test:diagnostics && pnpm test:transcript",
42 "test:composer-menu-viewport": "tsx src/__tests__/composer-menu-viewport.test.ts && tsx src/__tests__/anchored-popover-scroll.test.tsx && tsx src/__tests__/anchored-overlay-lifecycle.test.tsx && tsx src/__tests__/virtual-menu-identity.test.tsx",
43 "test:composer": "tsx src/__tests__/rich-composer-selection.test.tsx && tsx src/__tests__/composer-resized-input-css.test.ts && tsx src/__tests__/composer-workspace-frame-css.test.ts && tsx src/__tests__/composer-ime.test.tsx && tsx src/__tests__/composer-autosize-scrollbar-css.test.ts",
44 "test:composer-browser": "node bench/composer-transcript-stability.mjs",
45 "test:popover-browser": "node bench/anchored-popover-lifecycle.mjs",
46 "test:popover-electron": "node bench/anchored-popover-lifecycle.mjs --electron",
47 "test": "node scripts/test-todo-visibility.mjs && node scripts/run-tests.mjs",
48 "test:remote": "tsx src/__tests__/remote-workspace-launch.test.ts && tsx src/__tests__/remote-store.test.ts && tsx src/__tests__/remote-error-ux.test.tsx && tsx src/__tests__/remote-hosts-page.test.tsx && node --import ./scripts/css-stub-register.mjs --import tsx src/__tests__/remote-connect-wizard.test.tsx && tsx src/__tests__/add-project-entries.test.ts && tsx src/__tests__/remote-secret-dialog.test.tsx && node --import ./scripts/svg-stub-register.mjs --import tsx src/__tests__/remote-server-panel.test.tsx && node --import ./scripts/svg-stub-register.mjs --import tsx src/__tests__/remote-session-surface.test.tsx && tsx src/__tests__/remote-running-reconcile.test.ts && tsx src/__tests__/remote-project-tree.test.tsx && tsx src/__tests__/remote-session-cache.test.ts && tsx src/__tests__/remote-tab-opened.test.tsx && tsx src/__tests__/statusbar-workspace.test.tsx",
49 "test:performance": "tsx src/__tests__/history-performance-benchmark.tsx",
50 "test:bench": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/run.mjs",
51 "test:typecheck": "tsc --noEmit -p tsconfig.test.json",
52 "test:isolated-worktree": "tsx src/__tests__/isolated-worktree.test.ts",
53 "test:updater": "tsx src/__tests__/updater-scheduling.test.tsx && tsx src/__tests__/updater-shared-state.test.tsx && node --import ./scripts/css-stub-register.mjs --import tsx src/__tests__/about-settings-updater-capability.test.tsx",
54 "test:window-state": "tsx src/__tests__/window-state-ordering.test.ts",
55 "test:all": "pnpm test:typecheck && pnpm test:updater && pnpm test:window-state && pnpm test && pnpm test:remote && pnpm test:performance",
56 "test:app-lifecycle": "tsx src/__tests__/app-lifecycle.test.tsx && tsx src/__tests__/committed-command-lifecycle.test.tsx && tsx src/__tests__/committed-command-execution.test.tsx && tsx src/__tests__/navigation-surface-lifecycle.test.tsx && tsx src/__tests__/app-lifecycle-probe.test.ts && tsx src/__tests__/subscription-scope.test.ts && tsx src/__tests__/composer-source-operations.test.tsx && tsx src/__tests__/session-draft-surface-lifecycle.test.tsx && tsx src/__tests__/session-navigation-draft-fence.test.tsx && tsx src/__tests__/session-prompt-lifecycle.test.tsx && tsx src/__tests__/desktop-preferences-lifecycle.test.tsx && tsx src/__tests__/onboarding-commands.test.tsx && tsx src/__tests__/topicbar-actions-lifecycle.test.tsx && tsx src/__tests__/decision-slots-lifecycle.test.tsx && tsx src/__tests__/session-experience-settings.test.tsx && tsx src/__tests__/project-topic-lifecycle.test.tsx && tsx src/__tests__/conversation-projection.test.ts && tsx src/__tests__/remote-composer-presentation.test.tsx && tsx src/__tests__/remote-composer-commands.test.tsx && tsx src/__tests__/terminal-panel-commands.test.tsx && tsx src/__tests__/workspace-panel-commands.test.tsx && tsx src/__tests__/desktop-navigation-lifecycle.test.tsx && tsx src/__tests__/runtime-status-lifecycle.test.tsx && tsx src/__tests__/session-control-commands.test.ts && tsx src/__tests__/automation-navigation-lifecycle.test.tsx && tsx src/__tests__/mock-remote-catalog.test.ts && node --import ./scripts/svg-stub-register.mjs --import tsx src/__tests__/topicbar-region.test.tsx && tsx src/__tests__/controller-profile-lifecycle.test.tsx && tsx src/__tests__/session-submission-lifecycle.test.tsx && tsx src/__tests__/pending-plan-revision-lifecycle.test.tsx && tsx src/__tests__/session-undo-lifecycle.test.tsx && tsx src/__tests__/session-clear-commands.test.tsx && tsx src/__tests__/turn-verification-commands.test.tsx && tsx src/__tests__/delivery-continue-commands.test.tsx && tsx src/__tests__/active-tab-mirror.test.tsx && tsx src/__tests__/windows-maximised-sync.test.tsx && tsx src/__tests__/topic-summary-commands.test.tsx && tsx src/__tests__/worktree-merge-commands.test.tsx && tsx src/__tests__/composer-insert-commands.test.tsx && node --test bench/app-memory-evidence.test.mjs && node --test bench/app-memory-shards.test.mjs bench/app-memory-paths.test.mjs && node --test scripts/check-app-layers.test.mjs && node --test scripts/check-desktop-host-boundary.test.mjs && node --test scripts/shell-css.test.mjs && node --test scripts/check-css-syntax.test.mjs",
57 "test:app-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/app-browser.mjs && node bench/dock-view-state.mjs && node bench/dock-file-navigation.mjs && node bench/runtime-state.mjs && node bench/attention-notifications.mjs",
58 "test:app-memory": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/app-memory.mjs",
59 "check:app-layers": "node scripts/check-app-entry-contract.mjs && node scripts/check-app-layers.test.mjs && node scripts/check-app-layers.mjs && node scripts/check-desktop-host-boundary.mjs",
60 "test:chat": "pnpm test:transcript",
61 "test:chat-file-browser": "PLAYWRIGHT_BROWSERS_PATH=.pw-browsers node bench/chat-file-reference.mjs"
62 },
63 "dependencies": {
64 "@modelcontextprotocol/ext-apps": "1.7.5",
65 "@tanstack/react-virtual": "^3.14.10",
66 "@xterm/addon-fit": "0.11.0",
67 "@xterm/xterm": "6.0.0",
68 "anser": "^2.3.5",
69 "hast-util-to-jsx-runtime": "2.3.6",
70 "highlight.js": "^11.12.0",
71 "html-url-attributes": "3.0.1",
72 "katex": "^0.18.6",
73 "lucide-react": "^1.41.0",
74 "mermaid": "^11.17.2",
75 "qrcode.react": "^4.2.0",
76 "react": "^19.2.8",
77 "react-dom": "^19.2.8",
78 "react-markdown": "^10.1.0",
79 "rehype-katex": "^7.0.1",
80 "remark-gfm": "^4.0.0",
81 "remark-math": "^6.0.0",
82 "remark-parse": "11.0.0",
83 "remark-rehype": "11.1.2",
84 "unified": "11.0.5",
85 "unist-util-visit": "^5.1.0",
86 "vfile": "6.0.3",
87 "zustand": "^5.0.15"
88 },
89 "devDependencies": {
90 "@types/hast": "3.0.5",
91 "@types/jsdom": "^30.0.0",
92 "@types/mdast": "^4.0.4",
93 "@types/node": "^26.4.1",
94 "@types/react": "^19.2.18",
95 "@types/react-dom": "^19.2.7",
96 "@typescript-eslint/parser": "^8.69.0",
97 "@vitejs/plugin-react": "^6.1.1",
98 "decode-named-character-reference": "^1.3.0",
99 "eslint": "^10.10.0",
100 "eslint-plugin-react-hooks": "^7.1.1",
101 "hast-util-from-html-isomorphic": "^2.0.0",
102 "jsdom": "^30.0.1",
103 "mdast-util-math": "^3.0.0",
104 "playwright": "^1.63.0",
105 "terser": "^5.51.2",
106 "tsx": "^4.23.13",
107 "typescript": "^6.0.3",
108 "vite": "^8.2.2"
109 },
110 "overrides": {
111 "dompurify": "3.4.13",
112 "mdast-util-gfm-autolink-literal": "2.0.0"
113 },
114 "engines": {
115 "node": ">=24",
116 "pnpm": ">=10 <11"
117 }
118 }
119
119 lines JSON