{
    "name": "@touchai/desktop",
    "private": true,
    "version": "1.1.0",
    "description": "Your desktop agent, one shortcut away.",
    "author": "TouchAI Team",
    "license": "GPL-3.0-or-later",
    "type": "module",
    "packageManager": "pnpm@10.32.1",
    "scripts": {
        "dev": "vite --configLoader runner",
        "build": "node ./scripts/run-node-command.mjs vue-tsc --noEmit && node ./scripts/run-node-command.mjs vite build --configLoader runner",
        "preview": "vite preview --configLoader runner",
        "tauri": "tauri",
        "test": "vitest --configLoader runner",
        "test:unit": "vitest run --configLoader runner --passWithNoTests",
        "test:coverage": "vitest run --configLoader runner --coverage --passWithNoTests",
        "test:e2e": "node ./scripts/run-e2e-command.mjs",
        "test:pr": "pnpm check && pnpm test:unit && pnpm test:rust && pnpm test:coverage",
        "test:rust": "node ./scripts/run-rust-command.mjs test",
        "test:coverage:rust": "cargo tarpaulin --manifest-path src-tauri/Cargo.toml --all-targets --branch --out xml",
        "test:typecheck": "node ./scripts/run-node-command.mjs vue-tsc -p tsconfig.vitest.json --noEmit",
        "test:ui": "vitest --configLoader runner --ui",
        "test:run": "pnpm test:unit",
        "type:check": "node ./scripts/run-node-command.mjs vue-tsc --noEmit",
        "lint": "eslint . --fix",
        "lint:check": "eslint .",
        "format:check": "prettier --check ../../apps/desktop --ignore-path ../../.prettierignore",
        "format:fix": "prettier --write ../../apps/desktop --ignore-path ../../.prettierignore && pnpm run format:rust:fix",
        "format:rust:fix": "cargo fmt --manifest-path src-tauri/Cargo.toml --all",
        "check:rust": "node ./scripts/run-rust-command.mjs check",
        "check": "pnpm type:check && pnpm test:typecheck && pnpm lint:check && pnpm format:check && cargo fmt --manifest-path src-tauri/Cargo.toml --all -- --check && pnpm check:rust",
        "db:generate": "drizzle-kit generate",
        "db:studio": "drizzle-kit studio"
    },
    "dependencies": {
        "@ai-sdk/alibaba": "^1.0.23",
        "@ai-sdk/anthropic": "^3.0.78",
        "@ai-sdk/deepseek": "^2.0.35",
        "@ai-sdk/google": "^3.0.74",
        "@ai-sdk/moonshotai": "^2.0.22",
        "@ai-sdk/openai": "^3.0.64",
        "@ai-sdk/openai-compatible": "^2.0.47",
        "@ai-sdk/xai": "^3.0.90",
        "@mozilla/readability": "^0.6.0",
        "@tailwindcss/vite": "^4.3.0",
        "@tauri-apps/api": "^2.11.0",
        "@tauri-apps/plugin-deep-link": "^2.4.3",
        "@tauri-apps/plugin-dialog": "^2.7.1",
        "@tauri-apps/plugin-fs": "^2.5.1",
        "@tauri-apps/plugin-http": "^2.5.9",
        "@tauri-apps/plugin-notification": "^2.3.3",
        "@tauri-apps/plugin-opener": "^2.5.4",
        "@tauri-apps/plugin-process": "^2.2.0",
        "@tiptap/core": "^3.23.4",
        "@tiptap/extension-placeholder": "^3.23.4",
        "@tiptap/pm": "^3.23.4",
        "@tiptap/starter-kit": "^3.23.4",
        "@tiptap/vue-3": "^3.23.4",
        "ai": "^6.0.183",
        "class-variance-authority": "^0.7.1",
        "clsx": "^2.1.1",
        "croner": "^10.0.1",
        "dompurify": "^3.4.7",
        "drizzle-orm": "^0.45.2",
        "katex": "^0.16.46",
        "markdown-it-emoji": "^3.0.0",
        "markstream-vue": "0.0.13",
        "mermaid": "^11.15.0",
        "monaco-editor": "0.55.1",
        "morphdom": "^2.7.8",
        "motion-v": "^2.2.1",
        "pinia": "^3.0.4",
        "reka-ui": "^2.9.7",
        "stream-monaco": "^0.0.40",
        "tailwind-merge": "^3.6.0",
        "tailwindcss": "^4.3.0",
        "tauri-plugin-clipboard-x-api": "^2.0.2",
        "tauri-plugin-fs-pro-api": "^2.4.0",
        "turndown": "^7.2.4",
        "vercel-minimax-ai-provider": "^0.0.2",
        "vue": "^3.5.34",
        "vue-draggable-plus": "^0.6.1",
        "vue-i18n": "11.4.4",
        "vue-router": "5",
        "vue-sonner": "^2.0.9",
        "zhipu-ai-provider": "^0.3.1",
        "zod": "4.4.3"
    },
    "devDependencies": {
        "@commitlint/cli": "^21.0.1",
        "@commitlint/config-conventional": "^21.0.1",
        "@eslint/js": "^10.0.1",
        "@iconify-json/bx": "^1.2.3",
        "@tauri-apps/cli": "^2",
        "@types/markdown-it-emoji": "^3.0.1",
        "@types/node": "^25.8.0",
        "@types/turndown": "^5.0.6",
        "@vitejs/plugin-vue": "^6.0.7",
        "@vitest/coverage-v8": "^4.1.6",
        "@vitest/ui": "^4.1.6",
        "@vue/test-utils": "^2.4.10",
        "@wdio/cli": "^9.27.1",
        "@wdio/local-runner": "^9.27.1",
        "@wdio/mocha-framework": "^9.27.1",
        "@wdio/spec-reporter": "^9.27.1",
        "drizzle-kit": "^0.31.10",
        "esbuild": "^0.28.0",
        "eslint": "^10.4.0",
        "eslint-config-prettier": "^10.1.8",
        "eslint-plugin-prettier": "^5.5.5",
        "eslint-plugin-simple-import-sort": "^13.0.0",
        "eslint-plugin-vue": "^10.9.1",
        "globals": "^17.6.0",
        "husky": "^9.1.7",
        "jsdom": "^29.1.1",
        "lint-staged": "^17.0.4",
        "prettier": "3.8.3",
        "prettier-plugin-tailwindcss": "^0.8.0",
        "terser": "^5.47.1",
        "typescript": "~6.0.3",
        "typescript-eslint": "^8.59.3",
        "unplugin-icons": "^23.0.1",
        "vite": "^8.0.13",
        "vite-plugin-monaco-editor-esm": "^2.0.2",
        "vitest": "^4.1.6",
        "vue-eslint-parser": "^10.4.0",
        "vue-tsc": "^3.2.9",
        "webdriverio": "^9.27.1"
    },
    "keywords": [
        "ai",
        "desktop",
        "tauri",
        "vue",
        "productivity"
    ],
    "repository": {
        "type": "git",
        "url": "https://github.com/TouchAI-org/TouchAI.git"
    },
    "bugs": {
        "url": "https://github.com/TouchAI-org/TouchAI/issues"
    },
    "homepage": "https://github.com/TouchAI-org/TouchAI#readme"
}
