{"_id":"@bstockwelldev/prompt-guardrails-core","_rev":"3-3619ad7734638ad9079ff5ae4c7dd6ed","name":"@bstockwelldev/prompt-guardrails-core","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@bstockwelldev/prompt-guardrails-core","version":"1.0.0","keywords":["prompt","guardrails","llm","validation","injection","telemetry"],"license":"MIT","_id":"@bstockwelldev/prompt-guardrails-core@1.0.0","maintainers":[{"name":"bgs1292","email":"bgs1292@gmail.com"}],"homepage":"https://github.com/bstockwelldev/prompt-guardrails-core#readme","bugs":{"url":"https://github.com/bstockwelldev/prompt-guardrails-core/issues"},"dist":{"shasum":"4449720749236875a69931b57e99b5f68f744436","tarball":"https://registry.npmjs.org/@bstockwelldev/prompt-guardrails-core/-/prompt-guardrails-core-1.0.0.tgz","fileCount":46,"integrity":"sha512-VGlyFIGr4ITpm9XuIXpt2TLLvFzQmzS/qpo5R7u0SFV8akM1CQs7vH1KfZaUm1NCHXOCrMjDhlkK5BwePeFwPQ==","signatures":[{"sig":"MEQCIDWj58tL3WtYqaJQ7RcV4kxmQ3MuK18KY7I7uA2+KhfsAiBjfSotabkz0rEmeaqZxDdMEC97w7E83ga3NVCQPSEMZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64334},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d960eb61cc9cdf3b2995969220ee68f072fce58d","scripts":{"test":"vitest run","build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"bgs1292","email":"bgs1292@gmail.com"},"repository":{"url":"git+https://github.com/bstockwelldev/prompt-guardrails-core.git","type":"git"},"_npmVersion":"10.8.2","description":"Stateless server-side prompt guardrails: policy, input/output validation, structured invocation, and privacy-safe telemetry","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.76"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":">=5.3","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-guardrails-core_1.0.0_1773515862518_0.8969518641755299","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bstockwelldev/prompt-guardrails-core","version":"1.0.1","keywords":["prompt","guardrails","llm","validation","injection","telemetry"],"license":"MIT","_id":"@bstockwelldev/prompt-guardrails-core@1.0.1","maintainers":[{"name":"bgs1292","email":"bgs1292@gmail.com"}],"homepage":"https://github.com/bstockwelldev/prompt-guardrails-core#readme","bugs":{"url":"https://github.com/bstockwelldev/prompt-guardrails-core/issues"},"dist":{"shasum":"ddb89ee0435fe0d0bfda46072bd550210ba6d2c8","tarball":"https://registry.npmjs.org/@bstockwelldev/prompt-guardrails-core/-/prompt-guardrails-core-1.0.1.tgz","fileCount":46,"integrity":"sha512-DYX4VQL9f8DcsYRzffGAXTNxHC+x3nWylaH8HPLL4sWVYqVN4pc+ObGS6BYHkr9s86uBpd5StBiRy3ymC2NoRQ==","signatures":[{"sig":"MEUCIA2LtpMPVOfjvvIoITWXC9YTz1/R5y1c1FAiLeQKGSUCAiEAoER1xJic/FVSMXrSHHB6EVn9EXveCnszIHrX3oM+zUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65265},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"57e75c246873e83e572eac130591be3b52530814","scripts":{"test":"vitest run","build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"bgs1292","email":"bgs1292@gmail.com"},"repository":{"url":"git+https://github.com/bstockwelldev/prompt-guardrails-core.git","type":"git"},"_npmVersion":"10.8.2","description":"Stateless server-side prompt guardrails: policy, input/output validation, structured invocation, and privacy-safe telemetry","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.76"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":">=5.3","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-guardrails-core_1.0.1_1773680193745_0.5901377981727252","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bstockwelldev/prompt-guardrails-core","version":"1.1.0","description":"Stateless server-side prompt guardrails: policy, input/output validation, structured invocation, and privacy-safe telemetry","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"repository":{"type":"git","url":"git+https://github.com/bstockwelldev/prompt-guardrails-core.git"},"license":"MIT","keywords":["prompt","guardrails","llm","validation","injection","telemetry"],"dependencies":{"zod":"^3.25.76"},"devDependencies":{"@types/node":"^20.0.0","typescript":">=5.3","vitest":"^2.0.0"},"engines":{"node":">=20.0.0"},"gitHead":"cdcc6bca671577243bae87a2253ac25e0910633b","_id":"@bstockwelldev/prompt-guardrails-core@1.1.0","bugs":{"url":"https://github.com/bstockwelldev/prompt-guardrails-core/issues"},"homepage":"https://github.com/bstockwelldev/prompt-guardrails-core#readme","_nodeVersion":"20.18.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-LQhur7rmfk9NvlkustreaFT89FBqZe+npY4IToUO/+H5vPSNRySReqX4vHrcyZFf6J94/dgyh6XyLpA/e7ygzA==","shasum":"50a37de7c2c743c3b7a4be52a72f9182f284d3c3","tarball":"https://registry.npmjs.org/@bstockwelldev/prompt-guardrails-core/-/prompt-guardrails-core-1.1.0.tgz","fileCount":54,"unpackedSize":74601,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCRN7V8M6Dmy+7+czMJgfLEU1metybYyOhx1esAt4K6fgIhAK9LXObMIm6AxWxtcgksPp7u2W/5iLzEYhWoupxjrdrR"}]},"_npmUser":{"name":"bgs1292","email":"bgs1292@gmail.com"},"directories":{},"maintainers":[{"name":"bgs1292","email":"bgs1292@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prompt-guardrails-core_1.1.0_1774357969368_0.7659707634322461"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T19:17:42.454Z","modified":"2026-03-24T13:12:49.674Z","1.0.0":"2026-03-14T19:17:42.688Z","1.0.1":"2026-03-16T16:56:33.894Z","1.1.0":"2026-03-24T13:12:49.524Z"},"bugs":{"url":"https://github.com/bstockwelldev/prompt-guardrails-core/issues"},"license":"MIT","homepage":"https://github.com/bstockwelldev/prompt-guardrails-core#readme","keywords":["prompt","guardrails","llm","validation","injection","telemetry"],"repository":{"type":"git","url":"git+https://github.com/bstockwelldev/prompt-guardrails-core.git"},"description":"Stateless server-side prompt guardrails: policy, input/output validation, structured invocation, and privacy-safe telemetry","maintainers":[{"name":"bgs1292","email":"bgs1292@gmail.com"}],"readme":"# @bstockwelldev/prompt-guardrails-core\r\n\r\nStateless server-side prompt guardrails: policy, input/output validation, structured invocation, and privacy-safe telemetry.\r\n\r\n## Scope\r\n\r\n**In scope:** Versioned prompt policy, input validation, structured prompt builders, output validation, JSON repair, telemetry contracts, refusal typing.\r\n\r\n**Out of scope:** React, Next.js routes, provider SDKs, domain logic.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @bstockwelldev/prompt-guardrails-core\r\n```\r\n\r\n**For Vercel/CI:** Use the npm package (`^1.1.0`). For local development before first publish, consumers may use `file:../prompt-guardrails-core`; after publishing, switch to `^1.1.0`.\r\n\r\n## Public API\r\n\r\n- `createPromptRuntime(config)` – Create guarded prompt runtime\r\n- `withPromptGuardrails(config, handler)` – Wrap route handlers / server actions\r\n- `buildStructuredPrompt({ system, userData, context })` – Instruction/data separation\r\n- `validatePromptInput(input, policy)` – Input guardrails\r\n- `validatePromptOutput(output, schema, policy)` – Output validation\r\n- `repairJsonOutput(raw, schemaName)` – JSON repair orchestration\r\n- `createTelemetryEvent(event)` – Privacy-safe telemetry\r\n- `PromptGuardrailsError` – Machine-readable refusal reasons\r\n\r\n## Usage\r\n\r\n```ts\r\nimport {\r\n  createPromptRuntime,\r\n  parsePolicyRef,\r\n  type PromptPolicy,\r\n} from '@bstockwelldev/prompt-guardrails-core';\r\n\r\nconst getPolicy: (id: string, version: string) => PromptPolicy | null = (id, version) => {\r\n  if (id === 'support_chatbot' && version === '1.3.0') {\r\n    return {\r\n      id,\r\n      version,\r\n      key: `${id}@${version}`,\r\n      system: 'You are a courteous support agent.',\r\n      constraints: { maxTokens: 800, allowUrls: false },\r\n    };\r\n  }\r\n  return null;\r\n};\r\n\r\nconst runtime = createPromptRuntime({\r\n  getPolicy,\r\n  invokeGateway: async ({ messages, policy }) => {\r\n    // Host app performs actual LLM call\r\n    return await yourGateway.generateText(messages);\r\n  },\r\n});\r\n\r\nconst result = await runtime.invoke('support_chatbot@1.3.0', userInput, {\r\n  requestId: 'req-123',\r\n  tenantId: 'tenant-1',\r\n});\r\n```\r\n\r\n## Refusal Reasons\r\n\r\n- `injection_detected` – Prompt injection pattern detected\r\n- `url_blocked` – URLs not allowed by policy\r\n- `policy_disabled` – Prompt disabled or unknown\r\n- `schema_invalid` – Output failed schema validation\r\n- `output_leakage_detected` – Output contains disallowed content\r\n- `input_too_long` – Input exceeds max length\r\n- `control_characters_blocked` – Disallowed control chars in input\r\n\r\n## Repository\r\n\r\n- **Source**: https://github.com/bstockwelldev/prompt-guardrails-core\r\n- **npm**: https://www.npmjs.com/package/@bstockwelldev/prompt-guardrails-core\r\n","readmeFilename":"README.md"}