{
  "name": "goodbuddy",
  "version": "0.1.0",
  "private": true,
  "description": "Secure desktop AI workspace with controlled Agent Runtimes",
  "desktopName": "GoodBuddy",
  "homepage": "https://github.com/mesalogo/goodbuddy",
  "author": {
    "name": "MesaLogo"
  },
  "license": "UNLICENSED",
  "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.web.json",
    "lint": "eslint .",
    "test": "vitest run",
    "test:watch": "vitest",
    "build": "npm run typecheck && npm run build:bundle",
    "build:bundle": "electron-vite build",
    "dist": "npm run build && electron-builder",
    "dist:win": "npm run build && electron-builder --win nsis --x64 --arm64",
    "dist:mac": "npm run build && electron-builder --mac dmg --x64 --arm64",
    "dist:linux": "npm run dist:linux:x64 && npm run dist:linux:arm64",
    "dist:linux:x64": "npm run build && electron-builder --linux AppImage deb --x64",
    "dist:linux:arm64": "npm run build && electron-builder --linux AppImage deb --arm64",
    "icons": "node build/generate-icons.mjs",
    "release:package": "node build/build-release.cjs",
    "portable": "npm run build && 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,
    "compression": "maximum",
    "files": [
      "out/**/*",
      "package.json"
    ],
    "extraResources": [
      {
        "from": "resources/skills",
        "to": "skills",
        "filter": [
          "**/*"
        ]
      },
      {
        "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"
        ]
      },
      {
        "from": "node_modules/opencode-ai/LICENSE",
        "to": "licenses/opencode-ai-LICENSE"
      },
      {
        "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"
      }
    ],
    "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"
    },
    "linux": {
      "icon": "build/icon.png",
      "maintainer": "MesaLogo",
      "vendor": "MesaLogo",
      "synopsis": "安全可控的桌面智能助手与 Agent 工作空间",
      "syncDesktopName": true,
      "target": [
        "AppImage",
        "deb"
      ],
      "category": "Utility"
    }
  },
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.30.0",
    "@opencode-ai/sdk": "^1.18.9",
    "cross-spawn": "^7.0.6",
    "fflate": "^0.8.3",
    "html-to-text": "^10.0.0",
    "lucide-react": "^1.27.0",
    "pdfjs-dist": "^6.2.108",
    "react": "^19.2.8",
    "react-dom": "^19.2.8",
    "react-markdown": "^10.1.0",
    "remark-gfm": "^4.0.1",
    "yaml": "^2.9.0",
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@continuedev/cli": "1.5.47",
    "@eslint/js": "^10.0.1",
    "@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/react": "^19.2.17",
    "@types/react-dom": "^19.2.3",
    "@vitejs/plugin-react": "^5.2.0",
    "electron": "^43.2.0",
    "electron-builder": "^26.15.3",
    "electron-vite": "^5.0.0",
    "eslint": "^10.8.0",
    "eslint-plugin-react-hooks": "^7.1.1",
    "globals": "^17.8.0",
    "jsdom": "^30.0.1",
    "opencode-ai": "1.18.9",
    "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"
  }
}
