{ "name": "pinvou3-app", "version": "0.8.5", "description": "品悟智能助手桌面应用", "private": true, "scripts": { "tauri": "node scripts/tauri/build.js", "dev": "node scripts/tauri/build.js dev", "dev:ui": "node scripts/tauri/build.js dev", "serve:src": "vite", "build:ui": "vite build", "build:web": "vite build --mode web", "prepare:codex-bridge": "node scripts/tauri/codex-bridge.js", "lint:ui": "eslint src/app src/components src/features src/hooks src/platform src/shared", "check:architecture": "python ../scripts/architecture-guard.py", "build": "node scripts/tauri/build.js build", "build:msi": "node scripts/tauri/build.js build --bundles msi", "runtime:windows:validate": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/resolve-runtime.ps1 -Mode Validate", "runtime:windows:stage": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/resolve-runtime.ps1 -Mode Stage", "runtime:windows:onnx-smoke": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/test-onnx-runtime.ps1", "runtime:windows:init": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/init-submodule.ps1", "runtime:windows:init:onnx": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/init-submodule.ps1 -OnnxOnly", "runtime:windows:cache-key": "powershell -NoProfile -ExecutionPolicy Bypass -File src-tauri/packaging/windows/runtime/scripts/init-submodule.ps1 -CacheKeyOnly", "test:windows-runtime": "node tests/windows_runtime_packaging_contract.test.js", "build:nsis": "node scripts/tauri/build.js build --bundles nsis", "test:tauri-layout": "node tests/tauri_platform_layout.test.js", "test:tauri-effective-config": "node tests/tauri_effective_config.test.js", "test:startup-window": "node tests/startup_window_logic.test.mjs", "test:connector-online-install": "node tests/connector_online_install_contract.test.js && node tests/connector_skills_contract.test.js", "test:web-template-packaging": "node tests/web_template_packaging_contract.test.js", "test:macos-phase2": "node tests/macos_phase2_contract.test.js", "test:update-notice": "node tests/update_notice_logic.test.js", "test:diff-parser": "node tests/unified_diff_parser.test.js", "test:file-icon-theme": "node tests/file_icon_theme.test.js", "test:model-catalog-grouping": "node tests/model_catalog_grouping.test.js", "test:diff-ui": "node tests/diff_viewer_ui_smoke.mjs", "test:choice-card-ui": "node tests/question_choice_card_smoke.mjs && node tests/question_choice_card_special_id_smoke.mjs", "test:code-viewer-ui": "node tests/code_viewer_modal_smoke.mjs", "test:code-viewer-diff-ui": "node tests/code_viewer_diff_smoke.mjs", "test:workspace-panel-ui": "node tests/workspace_panel_draft_smoke.mjs", "test:workspace-panel-session-ui": "node tests/workspace_panel_session_smoke.mjs", "test:reader-ui": "node tests/reader_app_smoke.mjs", "test:reader-diff-ui": "node tests/reader_app_diff_smoke.mjs", "test:marketplace-oauth": "node tests/marketplace_oauth_logic.test.js", "test:composer-tools": "node tests/composer_tool_menu_logic.test.js", "test:code-permission-state": "node tests/code_permission_state.test.mjs", "test:model-reasoning": "node tests/model_reasoning_render.test.mjs", "test:codex-acp-macos-runtime": "node tests/codex_acp_macos_runtime_smoke.js", "test:codex-acp-windows-runtime": "node tests/codex_acp_windows_runtime_smoke.js", "test:session-management": "node tests/session_management_logic.test.mjs", "test:multiagent-plan": "node --test tests/multiagent_plan_normalize.test.mjs", "test:chat-input-limit": "node tests/chat_input_limit_logic.test.js", "test:ime-compose-guard": "node tests/ime_compose_guard.test.mjs", "test:assistant-message-actions": "node tests/assistant_message_actions.test.mjs", "test:chat-error-isolation": "node tests/chat_turn_error_isolation.test.mjs", "test:attachment-drop": "node tests/attachment_drop_logic.test.mjs && node tests/attachment_drop_bridge.test.mjs && node tests/attachment_bubble_logic.test.mjs", "test:voice-input": "node tests/voice_input_error_logic.test.js", "test:floating-voice-drag": "node tests/floating_voice_drag_logic.test.mjs", "test:voice-asr-cancel": "node tests/voice_asr_cancel_logic.test.js", "test:bridge-protocol": "node tests/bridge_domain_protocol.test.mjs && node tests/web_bridge_domain_contract.test.mjs && node tests/monitor_bridge_format.test.mjs", "test:detached-window": "node tests/detached_window_lifecycle.test.mjs", "test:web-access-contract": "node tests/web_access_contract.test.mjs", "test:web-access-desktop-proxy": "node tests/web_access_desktop_proxy.test.mjs", "test:web-asset-base-path": "node tests/web_asset_base_path.test.mjs", "test:ui-language": "node tests/ui_language_coverage.test.mjs", "test:web-bootstrap": "node tests/web_bootstrap_transport.test.mjs", "test:api-key-gate": "node tests/api_key_gate_logic.test.js", "test:artifact-deliverable": "node tests/artifact_deliverable_logic.test.js", "test:canonical-tools": "node tests/canonical_tool_contract.test.js", "test:artifact-preview": "node tests/artifact_preview_navigation.test.mjs", "test:scheduled": "node tests/scheduled_tasks_unit.test.js", "test:pet-animation": "node tests/pet_animation_logic.test.mjs", "test:pet-registry": "node tests/pet_registry_logic.test.mjs", "test:pet-active": "node tests/pet_active_logic.test.mjs", "test:pet-selector-contract": "node tests/pet_selector_contract.test.mjs", "test:pet-selector-ui": "node tests/pet_selector_ui_smoke.js", "test:pet-state": "node tests/pet_state_logic.test.mjs", "test:pet-card-state": "node tests/pet_card_state_logic.test.mjs", "test:pet-reply": "node tests/pet_reply_contract.test.mjs", "test:pet-scheduled-notice": "node --test tests/pet_scheduled_notice_logic.test.mjs tests/pet_scheduled_notice_contract.test.mjs", "test:pet-interaction": "node tests/pet_interaction_logic.test.mjs", "test:pet-activation-guard": "node tests/pet_activation_guard_logic.test.mjs", "test:pet-navigation": "node tests/pet_navigation_contract.test.mjs", "test:pet-bootstrap": "node tests/pet_bootstrap_isolation.test.mjs", "validate:pet-assets": "node scripts/validate-pet-assets.mjs", "test:i18n-no-zh-literals": "node tests/i18n_no_zh_literals.test.mjs", "test:pinvou-mode-state": "node tests/pinvou_mode_state.test.js", "test:personal-workbench-scene": "node tests/personal_workbench_scene_logic.test.js", "test:pinvou-scene-sidecar": "node tests/pinvou_scene_sidecar.test.js", "test:design-runtime": "node tests/design_runtime_logic.test.js", "test:design-changes": "node tests/design_changes_logic.test.js", "test:scene-capabilities": "node tests/scene_capabilities_logic.test.js", "test": "npm run test:node && npm run validate:pet-assets", "test:node": "node --test --test-concurrency=4", "test:ui-smoke": "node tests/ui_smoke.js", "test:settings-ui": "node tests/settings_ui_smoke.js", "test:acp-providers-ui": "node tests/acp_providers_ui_smoke.js", "test:kb-smoke": "node tests/kb_smoke.js", "test:knowledge-host-packaging": "node --test tests/knowledge_host_packaging.test.mjs", "test:composer-tools-smoke": "node tests/composer_tools_smoke.js", "test:tool-store": "node tests/tool_store_smoke.js", "test:tool-store-import": "node --test tests/skill_zip_import_logic.test.js && node tests/tool_store_skill_import_smoke.js", "test:tool-store-drop-contract": "node tests/tool_store_skill_drop_contract.test.mjs", "test:tool-store-grouping": "node tests/tool_store_grouping_smoke.js", "test:design-mode-entry-smoke": "node tests/design_mode_entry_smoke.js", "test:bridge-smoke": "npm run test:ui-smoke && npm run test:settings-ui && npm run test:acp-providers-ui && npm run test:kb-smoke && npm run test:knowledge-host-packaging && npm run test:composer-tools-smoke && npm run test:design-mode-entry-smoke && npm run test:tool-store", "test:markdown-artifact-ui": "node tests/markdown_artifact_edit_smoke.js", "test:browser-smoke": "node ../scripts/run-frontend-smokes.mjs --full", "test:webui": "npm run build:web && node ../remote-control-relay/test/web-ui.smoke.cjs", "test:user-journey": "../scripts/run-user-journey-tests.sh", "sync:version": "node ../scripts/sync-version.mjs", "test:markdown": "node tests/markdown_syntax_highlight.test.mjs" }, "devDependencies": { "@tauri-apps/cli": "^2.11.4", "@vitejs/plugin-react": "^6.0.3", "eslint": "^10.6.0", "puppeteer-core": "^25.3.0", "vite": "^8.1.4" }, "dependencies": { "dompurify": "^3.4.13", "highlight.js": "^11.11.1", "marked": "^16.4.2", "react": "^19.2.8", "react-dom": "^19.2.8", "turndown": "^7.2.4", "turndown-plugin-gfm": "^1.0.2" } }