{ "name": "@shinobiapps/shinobi", "version": "0.3.1", "mcpName": "io.github.numbererikson/shinobi", "publishConfig": { "access": "public" }, "description": "Task spine + dead-end search + approvals for AI coding agents (Claude Code, Cursor, Cline, Continue.dev, Zed). Past dead ends are semantically searched before your agent writes code. Self-host or hosted — one brain across every device.", "type": "module", "bin": { "shinobi": "./dist/cli.js" }, "files": [ "dist", "migrations", "docs/architecture.md", "docs/configuration.md", "docs/cursor-quirks.md", "docs/deploy-gcp-free.md", "docs/embedding-providers.md", "docs/getting-started.md", "docs/github-integration.md", "docs/plugin-development.md", "docs/plugins.md", "docs/recovery-runbook.md", "docs/relay.md", "docs/remote-access.md", "docs/remote-mcp.md", "docs/sponsorship.md", "README.md", "LICENSE", "CHANGELOG.md", "SECURITY.md", "CODE_OF_CONDUCT.md" ], "scripts": { "prepare": "node scripts/prepare.mjs", "clean:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"", "prepublishOnly": "npm run clean:dist && npm install --prefix dashboard-spa --no-audit --no-fund && npm run build", "build": "tsc && npm run build:spa", "build:spa": "cd dashboard-spa && vite build", "dev": "tsx src/cli.ts", "dev:spa": "cd dashboard-spa && vite", "mcp": "tsx src/server/mcp.ts", "dashboard": "tsx src/dashboard/server.ts", "migrate": "tsx src/lib/migrations.ts", "smoke:tools": "node --import tsx scripts/smoke-tools-direct.ts", "smoke:mcp": "node --import tsx scripts/smoke-mcp-stdio.ts", "smoke:dashboard": "node --import tsx scripts/smoke-dashboard.ts", "smoke:mcp-http": "node --import tsx scripts/smoke-mcp-http.ts", "test": "npm run build && npm run test:vitest && npm run smoke:tools && npm run smoke:mcp && npm run smoke:mcp-http && npm run smoke:dashboard", "test:vitest": "vitest run", "test:watch": "vitest" }, "engines": { "node": ">=18" }, "dependencies": { "@hono/node-server": "^1.13.0", "@modelcontextprotocol/sdk": "^1.0.0", "better-sqlite3": "^11.0.0", "dotenv": "^16.4.0", "hono": "^4.6.0", "web-push": "^3.6.7", "ws": "^8.21.0" }, "devDependencies": { "@types/better-sqlite3": "^7.6.0", "@types/node": "^20.0.0", "@types/react": "^18.3.0", "@types/react-dom": "^18.3.0", "@types/web-push": "^3.6.0", "@types/ws": "^8.18.1", "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.0", "postcss": "^8.4.0", "tailwindcss": "^3.4.0", "tsx": "^4.19.0", "typescript": "^5.6.0", "vite": "^5.4.0", "vitest": "^2.1.0" }, "keywords": [ "mcp", "model-context-protocol", "claude-code", "cursor", "ai-coding-agents", "task-management", "dead-ends", "approvals", "remote-mcp" ], "license": "MIT", "author": "Tomislav Krizan", "repository": { "type": "git", "url": "git+https://github.com/numbererikson/shinobi.git" }, "bugs": { "url": "https://github.com/numbererikson/shinobi/issues" }, "homepage": "https://shinobi-apps.com/shinobi" }