UNPKG

breaker-ai

Version:

CLI to scan prompts for injection risks

41 lines (40 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.scanPrompt = scanPrompt; const riskyPatterns_1 = require("../checks/riskyPatterns"); const userInputSafety_1 = require("../checks/userInputSafety"); const lengthCheck_1 = require("../checks/lengthCheck"); const openEndedPartterns_1 = require("../checks/openEndedPartterns"); const load_1 = require("../utils/load"); async function scanPrompt(src) { const text = await (0, load_1.load)(src); const risky = (0, load_1.matchAny)(text, riskyPatterns_1.riskyPatterns); const open = (0, load_1.matchAny)(text, openEndedPartterns_1.openEndedPatterns); const safety = (0, userInputSafety_1.checkUserInputSafety)(text); const lenWarn = (0, lengthCheck_1.lengthWarning)(text); console.log({ risky, open, safety, lenWarn }); const score = computeScore({ risky, open, safety, lenWarn }); return { risky, open, userInputSafety: safety, lengthWarning: lenWarn, score, }; } function computeScore({ risky, open, safety, lenWarn, }) { let score = 100; // risky patterns: 15 points each, max 60 const riskyDeduction = Math.min(60, risky.length * 15); score -= riskyDeduction; // open-ended patterns: 5 points each, max 30 const openDeduction = Math.min(30, open.length * 5); score -= openDeduction; // user-input safety warning if (safety) score -= 20; // length warning if (lenWarn) score -= 10; return Math.max(score, 0); }