2026-10-15 13:53:04 +08:00
{
"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" ,
"workspaces" : [
"packages/*" ,
"examples/plugins/*"
] ,
"author" : "binaricat <support@netcatty.com>" ,
"license" : "GPL-3.0-or-later" ,
"engines" : {
"node" : ">=22"
} ,
"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 INSPECTION_DEBUG=1 node electron/launch.cjs" ,
"clean:vite" : "node scripts/clean-vite-cache.cjs" ,
"dev:clean" : "npm run clean:vite && npm run dev" ,
"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:windows-hello-helper" : "node scripts/build-windows-hello-helper.cjs" ,
"build" : "npm run build:plugin-packages && vite build" ,
"build:plugin-runtime-deps" : "npm run build --workspace @netcatty/plugin-contract && npm run build --workspace @netcatty/plugin-sdk && npm run build --workspace @netcatty/plugin-cli" ,
"build:plugin-packages" : "npm run generate:plugin-contract && npm run build:plugin-runtime-deps && npm run build --workspace @netcatty/example-hello-plugin" ,
"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" : "patch-package && node scripts/patch-xterm-macos-column-selection.cjs && electron-builder install-app-deps && node scripts/rebuildPatchedNodePty.cjs && node scripts/patch-xterm-webgl-atlas.cjs" ,
"rebuild" : "electron-builder install-app-deps" ,
"tool:cli" : "node electron/cli/netcatty-tool-cli.cjs" ,
"generate:capability-tools" : "node scripts/generate-capability-tools.cjs" ,
"generate:codex-app-server-schema" : "node scripts/generate-codex-app-server-schema.cjs" ,
"check:codex-app-server-schema" : "node scripts/generate-codex-app-server-schema.cjs --check" ,
"check:codebuddy-sdk-contract" : "tsc -p tsconfig.codebuddy-sdk-contract.json" ,
"generate:plugin-contract" : "node scripts/generate-plugin-contract.mjs" ,
"check:plugin-contract" : "node scripts/generate-plugin-contract.mjs --check" ,
"lint" : "eslint ." ,
"lint:fix" : "eslint . --fix" ,
"pretest" : "npm run build:plugin-runtime-deps && npm run check:codebuddy-sdk-contract" ,
"test" : "node --test --import tsx electron/*.test.cjs electron/preload/*.test.cjs electron/scripts/*.test.cjs electron/terminalWorker/*.test.cjs electron/capabilities/*.test.cjs electron/capabilities/*/*.test.cjs electron/capabilities/*/*/*.test.cjs electron/cli/*.test.cjs electron/bridges/*.test.cjs electron/bridges/*/*.test.cjs electron/bridges/aiBridge/codexAppServer/*.test.cjs electron/bridges/aiBridge/sdk/*.test.cjs scripts/*.test.cjs application/*.test.ts application/app/*.test.ts application/i18n/locales/*.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/notes/*.test.ts components/notes/*.test.tsx components/port-forwarding/*.test.ts components/scripts/*.test.tsx components/systemManager/*.test.ts components/terminalLayer/*.test.ts components/settings/*.test.tsx components/settings/tabs/*.test.ts components/settings/tabs/ai/*.test.ts components/settings/tabs/ai/*.test.tsx components/ai/*.test.ts components/ai/*.test.tsx components/ai/toolArtifacts/*.test.ts components/ai/toolArtifacts/*.test.tsx components/ai-elements/*.test.tsx components/sftp/*.test.ts components/terminal/*.test.ts components/terminal/*.test.tsx components/terminal/runtime/*.test.ts components/vault/*.test.ts components/vault/*.test.tsx domain/*.test.ts domain/*/*.test.ts infrastructure/ai/*.test.ts infrastructure/ai/*/*.test.ts infrastructure/ai/sdk/*.test.ts infrastructure/config/*.test.ts infrastructure/monaco/*.test.ts infrastructure/persistence/*.test.ts infrastructure/services/*.test.ts infrastructure/services/*/*.test.ts lib/*.test.ts packages/*/src/*.test.ts" ,
"test:plugin-contract" : "node --test --import tsx packages/*/src/*.test.ts" ,
"pretest:plugin-runtime" : "npm run build:plugin-runtime-deps" ,
"test:plugin-runtime" : "node --test electron/plugins/*.test.cjs" ,
"pretest:plugin-runtime:electron" : "npm run build:plugin-runtime-deps" ,
"test:plugin-runtime:electron" : "electron electron/plugins/electronRuntime.live.test.cjs" ,
"test:sync-crdt" : "node --test --import tsx domain/convergentSync/*.test.ts" ,
"bench:sync-crdt" : "tsx scripts/bench-sync-crdt.ts" ,
"test:ssh-mfa-models" : "node --test electron/bridges/sshMfaModels.live.test.cjs" ,
"test:ssh-mfa-models:live" : "SSH_MFA_LIVE=1 node --test electron/bridges/sshMfaModels.live.test.cjs" ,
"test:tray-panel-layout" : "electron scripts/tray-panel-layout.live.test.cjs" ,
"test:terminal-background-rendering" : "electron scripts/terminal-background-rendering.live.test.cjs" ,
"test:xterm-webgl-overflow" : "electron scripts/xterm-webgl-atlas-overflow.live.test.cjs" ,
"test:xterm-macos-selection" : "electron scripts/xterm-macos-column-selection.live.test.cjs" ,
"test:xterm-keyword-highlight-performance" : "electron scripts/xterm-keyword-highlight-performance.live.test.cjs" ,
"test:xterm-keyword-highlight-throughput" : "electron scripts/xterm-keyword-highlight-throughput.live.test.cjs"
} ,
"dependencies" : {
"@ai-sdk/anthropic" : "^4.0.0" ,
"@ai-sdk/google" : "^4.0.0" ,
"@ai-sdk/openai" : "^4.0.0" ,
"@aws-sdk/client-s3" : "^3.956.0" ,
"@eslint-community/regexpp" : "4.12.2" ,
"@fontsource/jetbrains-mono" : "^5.2.8" ,
"@fontsource/mona-sans" : "^5.2.8" ,
"@fontsource/space-grotesk" : "^5.2.10" ,
"@mdxeditor/editor" : "^4.0.4" ,
"@modelcontextprotocol/sdk" : "^1.29.0" ,
"@monaco-editor/react" : "^4.7.0" ,
"@netcatty/plugin-cli" : "0.1.0-internal" ,
"@netcatty/plugin-contract" : "0.1.0-internal" ,
"@netcatty/plugin-sdk" : "0.1.0-internal" ,
"@openai/codex-sdk" : "0.144.3" ,
"@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" ,
"@smithy/node-http-handler" : "^4.4.9" ,
"@streamdown/cjk" : "^1.0.2" ,
"@streamdown/code" : "^1.1.0" ,
"@tanstack/react-virtual" : "^3.14.8" ,
"@withfig/autocomplete" : "^2.692.3" ,
"@xterm/addon-fit" : "0.12.0-beta.292" ,
"@xterm/addon-image" : "0.10.0-beta.292" ,
"@xterm/addon-search" : "0.17.0-beta.292" ,
"@xterm/addon-serialize" : "0.15.0-beta.292" ,
"@xterm/addon-unicode-graphemes" : "0.5.0-beta.292" ,
"@xterm/addon-web-links" : "0.13.0-beta.292" ,
"@xterm/addon-webgl" : "0.20.0-beta.291" ,
"@xterm/xterm" : "6.1.0-beta.292" ,
"ai" : "^7.0.2" ,
"ajv" : "8.18.0" ,
"ajv-formats" : "3.0.1" ,
"clsx" : "2.1.1" ,
2026-10-30 12:12:04 +08:00
"docx" : "^9.13.0" ,
2026-10-15 13:53:04 +08:00
"echarts" : "^6.1.0" ,
"electron-updater" : "^6.8.3" ,
"http-proxy-agent" : "^7.0.2" ,
"https-proxy-agent" : "^7.0.6" ,
"iconv-lite" : "^0.6.3" ,
"katex" : "^0.18.4" ,
"lucide-react" : "0.560.0" ,
"mdast-util-from-markdown" : "^2.0.3" ,
"mdast-util-gfm-strikethrough" : "^2.0.0" ,
"mdast-util-to-string" : "^4.0.0" ,
"micromark-extension-gfm-strikethrough" : "^2.1.0" ,
"monaco-editor" : "^0.55.1" ,
"node-pty" : "^1.1.0" ,
2026-10-21 11:50:00 +08:00
"pend" : "^1.2.0" ,
2026-10-15 13:53:04 +08:00
"pinyin-pro" : "^3.28.1" ,
"re2js" : "2.8.6" ,
"react" : "^19.2.1" ,
"react-dom" : "^19.2.1" ,
"serialport" : "^13.0.0" ,
"socks-proxy-agent" : "^8.0.5" ,
"ssh2-sftp-client" : "^12.0.1" ,
"streamdown" : "^2.4.0" ,
"tailwind-merge" : "3.4.0" ,
"three" : "^0.186.1" ,
"turndown" : "^7.2.4" ,
"turndown-plugin-gfm" : "^1.0.2" ,
"use-stick-to-bottom" : "^1.1.3" ,
"webdav" : "^5.8.0" ,
"zmodem.js" : "^0.1.10" ,
"zod" : "^4.3.6"
} ,
"devDependencies" : {
"@eslint/js" : "^9.39.1" ,
"@tailwindcss/vite" : "^4.1.17" ,
"@types/node" : "^25.0.0" ,
"@types/react-test-renderer" : "^19.1.0" ,
"@types/three" : "^0.186.0" ,
"@types/turndown" : "^5.0.6" ,
"@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.11.12" ,
"electron-builder" : "^26.15.2" ,
"esbuild" : "0.27.2" ,
"eslint" : "^9.39.1" ,
"eslint-plugin-react-hooks" : "^7.0.1" ,
"eslint-plugin-unused-imports" : "^4.3.0" ,
"fast-check" : "^4.9.0" ,
"jsdom" : "^29.1.1" ,
"patch-package" : "^8.0.0" ,
"react-test-renderer" : "^19.2.4" ,
"sass" : "^1.103.1" ,
"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" ,
"@opencode-ai/sdk" : "^1.17.9" ,
"@tencent-ai/agent-sdk" : "^0.3.230" ,
"@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"
}
}