| 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 |