{
"name": "tasklens",
"private": true,
"version": "0.1.0",
"license": "Apache-2.0",
"type": "module",
"//": {
"打包": "npm run package —— release 编译 + 生成安装包,等价于 `tauri build`。",
"打包流程": [
"① src-tauri/tauri.conf.json 的 beforeBuildCommand 依次执行 `bun run build` 与 `bun run build:sidecar`:",
" bun run build = bun build agent-host/index.ts --target=node --outfile=agent-host/host.mjs(内置 AI 宿主打成单文件)→ tsc -b → vite build(前端 dist/)",
" build:sidecar = node tools/prepare-sidecar.mjs(按 rustc -vV 的 host triple 把 tasklens-cli 拷成 src-tauri/binaries/tasklens-cli-<triple>.exe)",
"② cargo release 编译 → target/release/tasklens.exe",
"③ 打包:tauri.conf.json 的 bundle.resources 带上 agent-host/host.mjs,bundle.externalBin 带上 tasklens-cli.exe,都放进安装目录"
],
"产物": [
"target/release/bundle/nsis/TaskLens_<版本>_x64-setup.exe(约 7 MB,推荐分发)",
"target/release/bundle/msi/TaskLens_<版本>_x64_en-US.msi(约 9 MB)",
"target/release/tasklens.exe(约 14 MB,免安装运行;旁边需有 tasklens-cli.exe 与 agent-host/host.mjs,构建时已 staged)"
],
"注意事项": [
"首次打包会联网下载 NSIS 与 WiX 工具链(之后走缓存)",
"打包前先关掉正在运行的 tasklens.exe / tasklens-cli.exe,否则 Windows 锁住 target/ 里的二进制,cargo 报「拒绝访问」",
"目标机器需 WebView2(Win11 自带,Win10 可能需安装);AI 功能需要 bun 或 node",
"未做代码签名,SmartScreen 会提示「未知发布者」"
]
},
"scripts": {
"dev": "bun build agent-host/index.ts --target=node --outfile=agent-host/host.mjs && cargo build -p tasklens-core --bin tasklens-cli && vite",
"build": "bun build agent-host/index.ts --target=node --outfile=agent-host/host.mjs && tsc -b && vite build",
"build:host": "bun build agent-host/index.ts --target=node --outfile=agent-host/host.mjs",
"build:cli": "cargo build -p tasklens-core --bin tasklens-cli",
"build:sidecar": "node tools/prepare-sidecar.mjs",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest",
"typecheck": "tsc -b",
"check": "cargo test -p tasklens-core && tsc -b && vitest run",
"tauri": "tauri",
"tauri:dev": "tauri dev",
"package": "tauri build",
"package:nsis": "tauri build --bundles nsis",
"package:msi": "tauri build --bundles msi",
"package:exe": "tauri build --no-bundle",
"package:debug": "tauri build --no-bundle --debug",
"core:build": "cargo build -p tasklens-core --bin tasklens-cli --bin tasklens-mcp",
"core:test": "cargo test -p tasklens-core"
},
"dependencies": {
"@codemirror/commands": "^6.10.2",
"@codemirror/lang-markdown": "^6.5.0",
"@codemirror/language": "^6.12.2",
"@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.39.16",
"@dnd-kit/core": "^6.3.1",
"@earendil-works/pi-agent-core": "^0.85.1",
"@earendil-works/pi-coding-agent": "^0.85.1",
"@fontsource-variable/inter": "^5.3.0",
"@fontsource-variable/jetbrains-mono": "^5.3.0",
"@lezer/highlight": "^1.2.3",
"@phosphor-icons/react": "^2.1.10",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-tooltip": "^1.2.8",
"@tauri-apps/api": "^2.11.1",
"@tauri-apps/plugin-dialog": "^2.7.2",
"@tauri-apps/plugin-opener": "^2.5.3",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1",
"tailwind-merge": "^3.4.1",
"typebox": "^1.3.30"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.18",
"@tauri-apps/cli": "^2.11.4",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@types/node": "^24.10.1",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.1",
"jsdom": "^28.0.0",
"tailwindcss": "^4.1.18",
"typescript": "~5.9.3",
"vite": "^7.3.5",
"vitest": "^4.1.10"
}
}