{
  "name": "nebula-notebook",
  "version": "0.2.56",
  "description": "AI-native notebook computing environment — real Jupyter kernels, real filesystem, built to be driven by agents (Claude Code / Codex) via MCP",
  "type": "module",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/jzhoulab/nebula-notebook.git"
  },
  "keywords": [
    "notebook",
    "jupyter",
    "ai",
    "agent",
    "mcp",
    "claude",
    "kernel"
  ],
  "bin": {
    "nebula-notebook": "bin/nebula-notebook.js"
  },
  "files": [
    "bin",
    "dist",
    "node-server/dist/**",
    "node-server/package.json",
    "scripts/postinstall.cjs"
  ],
  "bundledDependencies": [
    "nebula-autocomplete"
  ],
  "engines": {
    "node": ">=20"
  },
  "scripts": {
    "dev": "concurrently --kill-others --kill-signal SIGTERM --raw \"cd node-server && PORT=${VITE_API_PORT:-8000} npm run dev\" \"VITE_API_PORT=${VITE_API_PORT:-8000} vite\"",
    "start": "npm run dev",
    "prod": "cd node-server && PORT=3000 npm run dev",
    "auth:qr": "cd node-server && npm run auth:qr",
    "build": "vite build",
    "preview": "vite preview",
    "node-server": "cd node-server && npm run dev",
    "node-server:build": "cd node-server && npm run build",
    "mcp": "npm --prefix packages/mcp run mcp",
    "mcp:build": "npm --prefix packages/mcp run build",
    "mcp:test": "npm --prefix packages/mcp test",
    "autocomplete:test": "npm --prefix packages/autocomplete test",
    "setup-mcp": "npm --prefix packages/mcp run setup-mcp",
    "setup": "node setup.cjs",
    "postinstall": "node scripts/postinstall.cjs",
    "autocomplete:build": "npm --prefix packages/autocomplete run build",
    "prepack": "npm --prefix packages/autocomplete install && npm run autocomplete:build && npm run build && npm run node-server:build",
    "stop": "lsof -ti:3000,3001,8000 | xargs kill -9 2>/dev/null; echo 'Servers stopped'",
    "test": "vitest",
    "test:run": "vitest run"
  },
  "dependencies": {
    "@fastify/cors": "^11.2.0",
    "@fastify/multipart": "^9.4.0",
    "@fastify/static": "^9.0.0",
    "@fastify/websocket": "^11.2.0",
    "@homebridge/node-pty-prebuilt-multiarch": "^0.14.0",
    "@simplewebauthn/server": "^13.3.3",
    "@xterm/addon-clipboard": "^0.2.0",
    "@xterm/addon-webgl": "^0.19.0",
    "better-sqlite3": "^11.0.0",
    "fastify": "^5.8.2",
    "jsonwebtoken": "^9.0.2",
    "nebula-autocomplete": "file:packages/autocomplete",
    "otplib": "^12.0.1",
    "qrcode-terminal": "^0.12.0",
    "uuid": "^9.0.1",
    "ws": "^8.16.0",
    "yaml": "^2.9.0",
    "zeromq": "^6.4.2"
  },
  "devDependencies": {
    "@codemirror/lang-markdown": "^6.5.0",
    "@codemirror/lang-python": "^6.2.1",
    "@jupyter-widgets/html-manager": "^1.0.14",
    "@playwright/test": "^1.57.0",
    "@simplewebauthn/browser": "^13.3.0",
    "@tailwindcss/vite": "^4.2.1",
    "@testing-library/jest-dom": "^6.9.1",
    "@testing-library/react": "^16.3.1",
    "@types/diff-match-patch": "^1.0.36",
    "@types/node": "^22.14.0",
    "@types/react": "^19.2.7",
    "@types/react-dom": "^19.2.3",
    "@uiw/react-codemirror": "^4.25.4",
    "@vitejs/plugin-react": "^5.0.0",
    "@xterm/addon-fit": "^0.11.0",
    "@xterm/addon-web-links": "^0.12.0",
    "@xterm/xterm": "^6.0.0",
    "ansi-to-html": "^0.7.2",
    "concurrently": "^9.1.0",
    "diff-match-patch": "^1.0.5",
    "jsdom": "^27.3.0",
    "lucide-react": "^0.561.0",
    "react": "^19.2.3",
    "react-dom": "^19.2.3",
    "tailwindcss": "^4.2.1",
    "typescript": "~5.8.2",
    "vite": "^6.2.0",
    "vitest": "^4.0.16"
  },
  "bundleDependencies": [
    "nebula-autocomplete"
  ]
}
