{ "name": "prompt-protection", "version": "4.0.0-rc.1", "mcpName": "io.github.mughalhere/prompt-protection", "description": "Provenance-tracked tool-call guard for JS agents (CaMeL-style), fail-closed, zero dependencies. Taints tool results, trusts what the user named, and blocks untrusted data reaching network, email, exec, file or payment sinks. Text detection, spotlighting and canaries included as components. Benchmarks published, good and bad.", "license": "MIT", "author": "mughalhere", "homepage": "https://mughalhere.github.io/prompt-protection/", "repository": { "type": "git", "url": "https://github.com/mughalhere/prompt-protection" }, "bugs": { "url": "https://github.com/mughalhere/prompt-protection/issues" }, "keywords": [ "agent-security", "tool-call-guard", "taint-tracking", "camel", "fail-closed", "mcp-security", "ai-agents", "owasp-agentic", "prompt-injection", "spotlighting", "canary-token", "audit-log", "opentelemetry", "agent-threat-rules", "atr", "llm-security", "jailbreak", "ai-safety", "prompt-sanitization", "openai", "anthropic", "langchain", "prompt-protection", "llm-guard", "ai-security", "llm-firewall", "guardrails", "owasp-llm", "prompt-security", "injection-detection", "chatbot-security", "llm-safety", "ai-red-team", "gpt" ], "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "import": { "types": "./dist/index.d.ts", "default": "./dist/index.js" }, "require": { "types": "./dist/index.d.cts", "default": "./dist/index.cjs" } }, "./internal": { "import": { "types": "./dist/internal.d.ts", "default": "./dist/internal.js" }, "require": { "types": "./dist/internal.d.cts", "default": "./dist/internal.cjs" } }, "./middleware/express": { "import": { "types": "./dist/middleware/express.d.ts", "default": "./dist/middleware/express.js" }, "require": { "types": "./dist/middleware/express.d.cts", "default": "./dist/middleware/express.cjs" } }, "./middleware/nextjs": { "import": { "types": "./dist/middleware/nextjs.d.ts", "default": "./dist/middleware/nextjs.js" }, "require": { "types": "./dist/middleware/nextjs.d.cts", "default": "./dist/middleware/nextjs.cjs" } }, "./react": { "import": { "types": "./dist/react/usePromptProtection.d.ts", "default": "./dist/react/usePromptProtection.js" }, "require": { "types": "./dist/react/usePromptProtection.d.cts", "default": "./dist/react/usePromptProtection.cjs" } }, "./adapters/claude": { "import": { "types": "./dist/adapters/claude.d.ts", "default": "./dist/adapters/claude.js" }, "require": { "types": "./dist/adapters/claude.d.cts", "default": "./dist/adapters/claude.cjs" } }, "./adapters/openai": { "import": { "types": "./dist/adapters/openai.d.ts", "default": "./dist/adapters/openai.js" }, "require": { "types": "./dist/adapters/openai.d.cts", "default": "./dist/adapters/openai.cjs" } }, "./mcp": { "import": { "types": "./dist/mcp/server.d.ts", "default": "./dist/mcp/server.js" }, "require": { "types": "./dist/mcp/server.d.cts", "default": "./dist/mcp/server.cjs" } }, "./adapters/vercel": { "import": { "types": "./dist/adapters/vercel.d.ts", "default": "./dist/adapters/vercel.js" }, "require": { "types": "./dist/adapters/vercel.d.cts", "default": "./dist/adapters/vercel.cjs" } }, "./adapters/vercel-guardrail": { "import": { "types": "./dist/adapters/vercel-guardrail.d.ts", "default": "./dist/adapters/vercel-guardrail.js" }, "require": { "types": "./dist/adapters/vercel-guardrail.d.cts", "default": "./dist/adapters/vercel-guardrail.cjs" } }, "./lite": { "import": { "types": "./dist/lite.d.ts", "default": "./dist/lite.js" }, "require": { "types": "./dist/lite.d.cts", "default": "./dist/lite.cjs" } }, "./guard": { "import": { "types": "./dist/guard/index.d.ts", "default": "./dist/guard/index.js" }, "require": { "types": "./dist/guard/index.d.cts", "default": "./dist/guard/index.cjs" } }, "./spotlight": { "import": { "types": "./dist/spotlight/index.d.ts", "default": "./dist/spotlight/index.js" }, "require": { "types": "./dist/spotlight/index.d.cts", "default": "./dist/spotlight/index.cjs" } }, "./canary": { "import": { "types": "./dist/canary/index.d.ts", "default": "./dist/canary/index.js" }, "require": { "types": "./dist/canary/index.d.cts", "default": "./dist/canary/index.cjs" } }, "./ml": { "import": { "types": "./dist/ml/index.d.ts", "default": "./dist/ml/index.js" }, "require": { "types": "./dist/ml/index.d.cts", "default": "./dist/ml/index.cjs" } }, "./atr": { "import": { "types": "./dist/atr/index.d.ts", "default": "./dist/atr/index.js" }, "require": { "types": "./dist/atr/index.d.cts", "default": "./dist/atr/index.cjs" } }, "./atr/yaml": { "import": { "types": "./dist/atr/yaml.d.ts", "default": "./dist/atr/yaml.js" }, "require": { "types": "./dist/atr/yaml.d.cts", "default": "./dist/atr/yaml.cjs" } }, "./audit": { "import": { "types": "./dist/audit.d.ts", "default": "./dist/audit.js" }, "require": { "types": "./dist/audit.d.cts", "default": "./dist/audit.cjs" } }, "./otel": { "import": { "types": "./dist/otel/index.d.ts", "default": "./dist/otel/index.js" }, "require": { "types": "./dist/otel/index.d.cts", "default": "./dist/otel/index.cjs" } } }, "files": [ "dist", "server.json", "README.md", "LICENSE", "CHANGELOG.md" ], "sideEffects": false, "engines": { "node": ">=20" }, "scripts": { "build": "tsup", "dev": "tsup --watch", "test": "jest --config jest.config.cjs", "test:coverage": "jest --config jest.config.cjs --coverage", "test:watch": "jest --config jest.config.cjs --watch", "lint": "eslint src tests --ext .ts", "lint:fix": "eslint src tests --ext .ts --fix", "typecheck": "tsc --noEmit", "prepublishOnly": "npm run build && npm run test && npm run typecheck", "bench": "npm run build && node bench/run.mjs", "size": "node bench/lib/size.mjs", "test:redos": "jest --config jest.redos.config.cjs", "compat": "node scripts/compat/smoke.mjs && node --experimental-vm-modules scripts/compat/no-globals.mjs", "sbom": "cyclonedx-npm --omit dev --output-format JSON --output-file sbom.cdx.json" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.20.0", "@modelcontextprotocol/sdk": ">=1.0.0", "@opentelemetry/api": ">=1.4.0", "ai": ">=4.0.0", "express": ">=4.0.0", "openai": ">=4.0.0", "react": ">=17.0.0", "yaml": ">=2.0.0" }, "peerDependenciesMeta": { "@anthropic-ai/sdk": { "optional": true }, "openai": { "optional": true }, "express": { "optional": true }, "react": { "optional": true }, "@modelcontextprotocol/sdk": { "optional": true }, "ai": { "optional": true }, "yaml": { "optional": true }, "@opentelemetry/api": { "optional": true } }, "devDependencies": { "@anthropic-ai/sdk": "^0.116.0", "@cyclonedx/cyclonedx-npm": "^6.0.1", "@modelcontextprotocol/sdk": "^1.30.0", "@opentelemetry/api": "^1.9.1", "@testing-library/react": "^16.0.0", "@types/express": "^5.0.0", "@types/jest": "^29.5.0", "@types/node": "^20.0.0", "@types/react": "^18.0.0", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "ai": "^7.0.93", "eslint": "^8.57.0", "express": "^4.21.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "openai": "^7.4.0", "prettier": "^3.3.0", "react": "^18.0.0", "react-dom": "^18.0.0", "recheck": "^4.5.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.2", "tsup": "^8.5.1", "typescript": "^5.4.0", "yaml": "^2.9.1" }, "bin": { "prompt-protection-mcp": "./dist/mcp/bin.cjs" }, "overrides": { "esbuild": "^0.28.1" } }