{ "name": "netcatty", "description": "Netcatty is a modern SSH manager and terminal app with host grouping, SFTP, keychain, port forwarding, and a rich UI.", "homepage": "https://github.com/binaricat/Netcatty", "private": true, "version": "0.0.0", "type": "module", "author": "binaricat ", "license": "GPL-3.0-or-later", "main": "electron/main.cjs", "bin": { "netcatty-tool-cli": "./electron/cli/netcatty-tool-cli.cjs" }, "scripts": { "dev": "npm run fetch:mosh:dev && npm run fetch:et:dev && npm run lint && concurrently -k \"vite --strictPort\" \"npm:dev:electron\"", "dev:electron": "wait-on http-get://localhost:5173 && cross-env VITE_DEV_SERVER_URL=http://localhost:5173 node electron/launch.cjs", "prebuild": "node scripts/copy-monaco.cjs", "fetch:mosh": "node scripts/fetch-mosh-binaries.cjs", "fetch:mosh:dev": "node scripts/fetch-mosh-binaries.cjs --host --resolve-release", "fetch:et": "node scripts/fetch-et-binaries.cjs", "fetch:et:dev": "node scripts/fetch-et-binaries.cjs --host --resolve-release", "build": "vite build", "preview": "vite preview", "start": "node electron/launch.cjs", "pack": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --publish=never", "pack:dir": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --dir --publish=never", "pack:win": "npm run build && cross-env npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --x64 --publish=never && cross-env npm_config_arch=arm64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --arm64 --publish=never", "pack:win-x64": "npm run build && cross-env npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --x64 --publish=never", "pack:mac": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --mac --publish=never", "pack:linux": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --publish=never", "pack:linux-x64": "npm run build && cross-env npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --x64 --publish=never", "pack:linux-arm64": "npm run build && cross-env npm_config_arch=arm64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --arm64 --publish=never", "postinstall": "electron-builder install-app-deps && patch-package && node scripts/patch-xterm-webgl-atlas.cjs", "rebuild": "electron-builder install-app-deps", "tool:cli": "node electron/cli/netcatty-tool-cli.cjs", "lint": "eslint .", "lint:fix": "eslint . --fix", "test": "node --test --import tsx electron/bridges/*.test.cjs electron/bridges/*/*.test.cjs electron/bridges/aiBridge/sdk/*.test.cjs scripts/*.test.cjs application/*.test.ts application/app/*.test.ts application/state/*.test.ts application/state/*/*.test.ts components/*.test.ts components/*.test.tsx components/editor/*.test.ts components/editor/*.test.tsx components/terminalLayer/*.test.ts components/settings/*.test.tsx components/settings/tabs/ai/*.test.ts components/ai/*.test.ts components/ai-elements/*.test.tsx components/sftp/*.test.ts components/terminal/*.test.ts components/terminal/runtime/*.test.ts domain/*.test.ts infrastructure/ai/*.test.ts infrastructure/config/*.test.ts infrastructure/services/*/*.test.ts lib/*.test.ts" }, "dependencies": { "@ai-sdk/anthropic": "^3.0.58", "@ai-sdk/google": "^3.0.43", "@ai-sdk/openai": "^3.0.41", "@aws-sdk/client-s3": "^3.956.0", "@fontsource/jetbrains-mono": "^5.2.8", "@fontsource/space-grotesk": "^5.2.10", "@modelcontextprotocol/sdk": "^1.29.0", "@monaco-editor/react": "^4.7.0", "@openai/codex-sdk": "^0.136.0", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-context-menu": "2.2.16", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-popover": "1.1.15", "@radix-ui/react-scroll-area": "1.2.10", "@radix-ui/react-select": "2.2.6", "@radix-ui/react-tabs": "1.1.13", "@radix-ui/react-tooltip": "^1.2.8", "@streamdown/cjk": "^1.0.2", "@streamdown/code": "^1.1.0", "@withfig/autocomplete": "^2.692.3", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-search": "^0.16.0", "@xterm/addon-serialize": "^0.14.0", "@xterm/addon-unicode-graphemes": "^0.4.0", "@xterm/addon-web-links": "^0.12.0", "@xterm/addon-webgl": "^0.19.0", "@xterm/xterm": "^6.0.0", "ai": "^6.0.116", "clsx": "2.1.1", "electron-updater": "^6.8.3", "iconv-lite": "^0.6.3", "lucide-react": "0.560.0", "monaco-editor": "^0.55.1", "node-pty": "1.1.0", "react": "^19.2.1", "react-dom": "^19.2.1", "serialport": "^13.0.0", "ssh2-sftp-client": "^12.0.1", "streamdown": "^2.4.0", "tailwind-merge": "3.4.0", "use-stick-to-bottom": "^1.1.3", "uuid": "^13.0.0", "webdav": "^5.8.0", "zmodem.js": "^0.1.10", "zod": "^4.3.6" }, "devDependencies": { "@eslint/js": "^9.39.1", "@tailwindcss/postcss": "^4.1.17", "@tailwindcss/vite": "^4.1.17", "@types/node": "^25.0.0", "@typescript-eslint/eslint-plugin": "^8.49.0", "@typescript-eslint/parser": "^8.49.0", "@vitejs/plugin-react": "^5.1.2", "concurrently": "^9.2.1", "cross-env": "^10.1.0", "electron": "^42.3.3", "electron-builder": "^26.15.2", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-unused-imports": "^4.3.0", "patch-package": "^8.0.0", "simple-icons": "^16.23.0", "tailwindcss": "^4.1.17", "tsx": "^4.21.0", "typescript": "~5.9.3", "vite": "^7.3.2", "wait-on": "^9.0.3" }, "optionalDependencies": { "@anthropic-ai/claude-agent-sdk": "^0.3.161", "@cursor/sdk": "^1.0.18", "@github/copilot-sdk": "1.0.0", "@tencent-ai/agent-sdk": "^0.3.173", "@vscode/windows-process-tree": "^0.7.0" }, "overrides": { "cpu-features": "npm:empty-npm-package@1.0.0", "axios": "1.13.5", "node-abi": "4.31.0", "@electron/asar": "4.2.0" } }