Files
goodbuddy/package.json
T
mesalogo d23af99708 release: prepare Desktop 0.13.14 and Agent 0.13.4
Prepare the approved bilingual release notes for paged Supervisor reviews,
resizable to-dos, native direct-model searches, and remote recovery fixes.
Agent 0.13.4 requires Desktop 0.13.14; schema 47 requires a pre-upgrade
backup for rollback. Keep Desktop and Agent publication separate.

Include the existing validation fixture corrections and helper patches as
requested. Full validation passed 5127 tests with 74 skipped, typecheck,
lint, and release-note checks. Current-source Linux Host completion and
cleanup probes passed with two real model requests.

Release note: 改善监督回顾与续跑、待办布局和搜索;配套 Agent 修复远程完成状态并清理停用安装。请先升级桌面再更新 Host,升级前备份用户数据。
2026-09-26 00:59:27 +08:00

423 lines
13 KiB
JSON

{
"name": "goodbuddy",
"version": "0.13.14",
"private": true,
"description": "Secure desktop AI workspace with controlled Agent Runtimes",
"desktopName": "GoodBuddy",
"homepage": "https://mesalogo.github.io/goodbuddy/",
"author": {
"name": "MesaLogo"
},
"license": "0BSD",
"repository": {
"type": "git",
"url": "git+https://github.com/mesalogo/goodbuddy.git"
},
"bugs": {
"url": "https://github.com/mesalogo/goodbuddy/issues"
},
"main": "./out/main/index.js",
"type": "module",
"scripts": {
"dev": "electron-vite dev",
"start": "electron-vite preview",
"typecheck": "tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.agent.json && tsc --noEmit -p tsconfig.web.json",
"lint": "eslint .",
"test": "vitest run",
"test:watch": "vitest",
"eval:retrieval": "vitest run --config tests/support/knowledge-retrieval-evaluation.ts tests/knowledge-retrieval-metrics.test.ts tests/knowledge-retrieval-evaluation.test.ts",
"build": "npm run typecheck && npm run build:bundle",
"build:bundle": "electron-vite build && node build/check-control-plane-package-installer.cjs",
"smoke:deepseek-harness": "npm run build:bundle && node build/run-deepseek-harness-utility-smoke.cjs",
"smoke:deepseek-harness:packaged": "node build/run-packaged-deepseek-harness-smoke.cjs",
"agent:build": "node build/agent-bundle.cjs build",
"agent:verify": "node build/agent-bundle.cjs verify",
"agent:import": "node build/agent-bundle.cjs import",
"remote-runtime:build": "node build/remote-runtime-bundle.cjs build",
"remote-runtime:verify": "node build/remote-runtime-bundle.cjs verify",
"remote-runtime:import": "node build/remote-runtime-bundle.cjs import",
"release:notes:verify": "node build/release-notes.cjs",
"dist": "npm run build && node build/run-electron-builder.cjs",
"dist:win": "npm run build && node build/run-electron-builder.cjs --win nsis --x64 --arm64",
"dist:mac": "npm run build && node build/run-electron-builder.cjs --mac dmg --x64 --arm64",
"dist:linux": "npm run dist:linux:x64 && npm run dist:linux:arm64",
"dist:linux:x64": "npm run build && node build/run-electron-builder.cjs --linux AppImage deb rpm --x64",
"dist:linux:arm64": "npm run build && node build/run-electron-builder.cjs --linux AppImage deb rpm --arm64",
"icons": "node build/generate-icons.mjs",
"release:package": "node build/build-release.cjs",
"portable": "node build/build-portable.cjs"
},
"build": {
"appId": "live.digiman.goodbuddy",
"productName": "GoodBuddy",
"directories": {
"buildResources": "build",
"output": "dist"
},
"artifactName": "${productName}-${version}-${os}-${arch}.${ext}",
"beforePack": "build/runtime-hooks.cjs",
"asar": true,
"asarUnpack": [
"out/main/package.json",
"out/main/deepseek-harness-*",
"out/main/embedding-inference-bootstrap.js",
"out/main/chunks/**/*",
"node_modules/node-pty/lib/**/*",
"node_modules/node-pty/package.json",
"node_modules/node-pty/prebuilds/**/*",
"node_modules/node-pty/build/Release/**/*",
"node_modules/koffi/**/*",
"node_modules/@koromix/koffi-*/**/*",
"node_modules/@napi-rs/canvas{,/**/*}",
"node_modules/@napi-rs/canvas-*/**/*",
"node_modules/onnxruntime-web/dist/**/*.wasm"
],
"npmRebuild": false,
"compression": "maximum",
"files": [
"out/**/*",
"package.json",
"!node_modules/npm{,/**/*}"
],
"extraResources": [
{
"from": "resources/skills",
"to": "skills",
"filter": [
"**/*"
]
},
{
"from": "resources/release-notes.json",
"to": "release-notes.json"
},
{
"from": "resources/tool-environment/managed-python-artifacts.json",
"to": "tool-environment/managed-python-artifacts.json"
},
{
"from": "agent-runtime-lock.json",
"to": "agent-runtime-lock.json"
},
{
"from": "remote-runtime-lock.json",
"to": "remote-runtime-lock.json"
},
{
"from": "resources/agent-release-keys.json",
"to": "agent-release-keys.json"
},
{
"from": "build/icon-taskbar.ico",
"to": "icon.ico"
},
{
"from": "build/icon.png",
"to": "icon.png"
},
{
"from": "build/icon-tray.png",
"to": "tray-icon.png"
},
{
"from": ".runtime-resources/${arch}",
"to": "runtimes/opencode",
"filter": [
"opencode",
"opencode.exe",
"rg",
"rg.exe"
]
},
{
"from": ".runtime-resources",
"to": "runtimes",
"filter": [
"opencode-config{,/**/*}"
]
},
{
"from": "node_modules/opencode-ai/LICENSE",
"to": "licenses/opencode-ai-LICENSE"
},
{
"from": "node_modules/@vscode/ripgrep/LICENSE",
"to": "licenses/vscode-ripgrep-MIT.txt"
},
{
"from": "node_modules/@deepseek-ai/dsh-agent/LICENSE",
"to": "licenses/deepseek-harness-MIT.txt"
},
{
"from": "node_modules/@deepseek-ai/cordis/LICENSE",
"to": "licenses/deepseek-cordis-MIT.txt"
},
{
"from": "node_modules/@agentclientprotocol/sdk/LICENSE",
"to": "licenses/agent-client-protocol-Apache-2.0.txt"
},
{
"from": "node_modules",
"to": "runtimes",
"filter": [
"npm{,/**/*}"
]
},
{
"from": "node_modules/node-pty/LICENSE",
"to": "licenses/node-pty-MIT.txt"
},
{
"from": "node_modules/ssh2/LICENSE",
"to": "licenses/ssh2-MIT.txt"
},
{
"from": "node_modules/koffi/LICENSE.txt",
"to": "licenses/koffi-MIT.txt"
},
{
"from": "node_modules/@napi-rs/canvas/LICENSE",
"to": "licenses/napi-rs-canvas-MIT.txt"
},
{
"from": "node_modules/@continuedev/cli",
"to": "runtimes/continue",
"filter": [
"package.json",
"dist/cn.js",
"dist/index.js",
"dist/xhr-sync-worker.js"
]
},
{
"from": "node_modules/typescript/LICENSE.txt",
"to": "licenses/continuedev-cli-LICENSE"
},
{
"from": "node_modules/@fontsource-variable/inter/LICENSE",
"to": "licenses/inter-OFL-1.1.txt"
},
{
"from": "node_modules/@fontsource-variable/noto-sans-sc/LICENSE",
"to": "licenses/noto-sans-sc-OFL-1.1.txt"
},
{
"from": "node_modules/ppu-paddle-ocr/LICENSE",
"to": "licenses/ppu-paddle-ocr-MIT.txt"
},
{
"from": "node_modules/ppu-ocv/LICENSE",
"to": "licenses/ppu-ocv-MIT.txt"
},
{
"from": "resources/licenses/onnxruntime-MIT.txt",
"to": "licenses/onnxruntime-web-MIT.txt"
},
{
"from": "node_modules/@huggingface/tokenizers/LICENSE",
"to": "licenses/huggingface-tokenizers-Apache-2.0.txt"
},
{
"from": "node_modules/katex/LICENSE",
"to": "licenses/katex-MIT.txt"
},
{
"from": "node_modules/fabric/LICENSE",
"to": "licenses/fabric-MIT.txt"
},
{
"from": "node_modules/jspdf/LICENSE",
"to": "licenses/jspdf-MIT.txt"
},
{
"from": "node_modules/quill/LICENSE",
"to": "licenses/quill-BSD-3-Clause.txt"
},
{
"from": "node_modules/pdfjs-dist/LICENSE",
"to": "licenses/pdfjs-Apache-2.0.txt"
},
{
"from": "src/renderer/src/magic-canvas/NOTICE.md",
"to": "licenses/peoplelib-canvas-NOTICE.md"
},
{
"from": "node_modules/mermaid/LICENSE",
"to": "licenses/mermaid-MIT.txt"
},
{
"from": "node_modules/dompurify/LICENSE",
"to": "licenses/dompurify-Apache-2.0.txt"
},
{
"from": "node_modules/dompurify/LICENSE-MPL",
"to": "licenses/dompurify-MPL-2.0.txt"
}
],
"win": {
"icon": "build/icon-taskbar.ico",
"target": [
"nsis"
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": "always",
"createStartMenuShortcut": true,
"deleteAppDataOnUninstall": false
},
"mac": {
"icon": "build/icon.png",
"target": [
"dmg"
],
"category": "public.app-category.productivity",
"hardenedRuntime": true,
"gatekeeperAssess": false,
"notarize": true,
"extendInfo": {
"NSMicrophoneUsageDescription": "GoodBuddy 需要访问麦克风,将语音转换为可编辑文字。"
}
},
"linux": {
"icon": "build/icon.png",
"maintainer": "MesaLogo",
"vendor": "MesaLogo",
"synopsis": "安全可控的桌面智能助手与 Agent 工作空间",
"syncDesktopName": true,
"target": [
"AppImage",
"deb",
"rpm"
],
"category": "Utility"
}
},
"dependencies": {
"@agentclientprotocol/sdk": "0.25.1",
"@deepseek-ai/cordis": "4.0.2",
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
"@deepseek-ai/dsh-agent-loop": "0.1.2-rc.1",
"@deepseek-ai/dsh-bash-local": "0.1.2-rc.1",
"@deepseek-ai/dsh-credentials": "0.1.2-rc.1",
"@deepseek-ai/dsh-fs-local": "0.1.2-rc.1",
"@deepseek-ai/dsh-llm": "0.1.2-rc.1",
"@deepseek-ai/dsh-llm-pi-ai": "0.1.2-rc.1",
"@deepseek-ai/dsh-pwsh-local": "0.1.2-rc.1",
"@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
"@deepseek-ai/dsh-sandbox-policy": "0.1.2-rc.1",
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
"@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
"@deepseek-ai/dsh-shell-env": "0.1.2-rc.1",
"@deepseek-ai/dsh-skill": "0.1.2-rc.1",
"@deepseek-ai/dsh-subprocess-local": "0.1.2-rc.1",
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
"@deepseek-ai/dsh-token-meter": "0.1.2-rc.1",
"@deepseek-ai/dsh-tool-bash": "0.1.2-rc.1",
"@deepseek-ai/dsh-tool-fs": "0.1.2-rc.1",
"@deepseek-ai/dsh-tool-pwsh": "0.1.2-rc.1",
"@deepseek-ai/dsh-tool-skill": "0.1.2-rc.1",
"@deepseek-ai/dsh-tools": "0.1.2-rc.1",
"@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
"@huggingface/tokenizers": "^0.1.3",
"@modelcontextprotocol/sdk": "^1.30.0",
"@napi-rs/canvas": "1.0.3",
"@opencode-ai/plugin": "1.18.29",
"@opencode-ai/sdk": "1.18.29",
"@vscode/ripgrep": "1.18.0",
"@wecom/aibot-node-sdk": "^1.0.6",
"@xterm/addon-fit": "0.11.0",
"@xterm/addon-search": "0.16.0",
"@xterm/addon-webgl": "0.19.0",
"@xterm/xterm": "6.0.0",
"cross-spawn": "^7.0.6",
"dingtalk-stream": "^2.1.6-beta.1",
"dompurify": "^3.4.13",
"fflate": "^0.8.3",
"fabric": "7.4.0",
"html-to-text": "^10.0.0",
"i18next": "^25.10.10",
"json5": "^2.2.3",
"jspdf": "4.2.1",
"katex": "^0.16.47",
"koffi": "3.1.4",
"lucide-react": "^1.27.0",
"mermaid": "^11.16.1",
"node-pty": "^1.2.0-beta.15",
"npm": "11.19.0",
"onnxruntime-web": "^1.23.2",
"pdfjs-dist": "^6.2.108",
"ppu-paddle-ocr": "^6.4.0",
"qrcode": "^1.5.4",
"quill": "^2.0.3",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-i18next": "^16.6.6",
"react-markdown": "^10.1.0",
"rehype-katex": "^7.0.1",
"remark-gfm": "^4.0.1",
"remark-math": "^6.0.0",
"sherpa-onnx": "1.13.4",
"ssh2": "^1.17.0",
"undici": "^7.29.0",
"yaml": "^2.9.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@antv/g6": "^5.1.1",
"@continuedev/cli": "1.5.47",
"@eslint/js": "^10.0.1",
"@fontsource-variable/inter": "^5.3.0",
"@fontsource-variable/noto-sans-sc": "^5.3.0",
"@testing-library/jest-dom": "^7.0.0",
"@testing-library/react": "^16.3.2",
"@types/cross-spawn": "^6.0.6",
"@types/html-to-text": "^9.0.4",
"@types/node": "^26.1.2",
"@types/qrcode": "^1.5.5",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/ssh2": "^1.15.5",
"@vitejs/plugin-react": "^5.2.0",
"electron": "^43.2.0",
"electron-builder": "^26.15.3",
"electron-vite": "^5.0.0",
"esbuild": "0.25.12",
"eslint": "^10.8.0",
"eslint-plugin-react-hooks": "^7.1.1",
"globals": "^17.8.0",
"jsdom": "^30.0.1",
"opencode-ai": "1.18.29",
"png-to-ico": "^3.0.2",
"pngjs": "^7.0.0",
"tar": "7.5.22",
"typescript": "^6.0.3",
"typescript-eslint": "^8.65.0",
"vite": "^7.3.6",
"vitest": "^4.1.10"
},
"optionalDependencies": {
"@koromix/koffi-darwin-arm64": "3.1.4",
"@koromix/koffi-darwin-x64": "3.1.4",
"@koromix/koffi-linux-arm64": "3.1.4",
"@koromix/koffi-linux-x64": "3.1.4",
"@koromix/koffi-win32-arm64": "3.1.4",
"@koromix/koffi-win32-x64": "3.1.4"
},
"allowScripts": {
"@deepseek-ai/dsh-subprocess-local@0.1.2-rc.1": true,
"@google/genai@1.52.0": true,
"cpu-features@0.0.10": true,
"electron-winstaller@5.4.0": true,
"esbuild@0.25.12": true,
"esbuild@0.28.1": true,
"fsevents@2.3.3": true,
"koffi@3.1.4": true,
"node-pty@1.2.0-beta.15": true,
"opencode-ai@1.18.29": true,
"protobufjs@7.6.5": true,
"ssh2@1.17.0": true
}
}