{"version":3,"file":"guardrail.mjs","names":[],"sources":["../../../../../../../ai/src/guard/guardrail.ts"],"sourcesContent":["import type { AgentMiddleware } from \"../contracts/middleware/middleware.contract\";\nimport type {\n  GuardOptions,\n  GuardrailDetector,\n  InjectionDetectorOptions,\n  OpenAiModerationOptions,\n  PiiDetectorOptions,\n  TopicFilterOptions,\n} from \"./contracts\";\nimport { injection, moderation, pii, topic } from \"./detectors\";\nimport { guard } from \"./guard\";\n\n/**\n * The callable `ai.guardrail` surface — the {@link guard} factory with the\n * built-in detector factories attached as methods, so the whole guardrail\n * vocabulary lives under one name:\n *\n * - `ai.guardrail(options)` — build the composed middleware.\n * - `ai.guardrail.pii(o?)` / `.topic(o)` / `.injection(o?)` / `.moderation(o?)`\n *   — build a detector to pass into the factory's `input` / `output` / `tool`\n *   arrays.\n *\n * @example\n * const policy = ai.guardrail({\n *   output: [ai.guardrail.pii({ onMatch: \"redact\" })],\n * });\n */\nexport interface GuardrailFactory {\n  /** Build the composed guardrail {@link AgentMiddleware}. */\n  (options: GuardOptions): AgentMiddleware;\n  /** Built-in PII detector (regex + dictionary, zero runtime dep). */\n  pii(options?: PiiDetectorOptions): GuardrailDetector;\n  /** Built-in topic filter (allow / deny string | RegExp lists). */\n  topic(options: TopicFilterOptions): GuardrailDetector;\n  /** Built-in jailbreak / prompt-injection marker detector. */\n  injection(options?: InjectionDetectorOptions): GuardrailDetector;\n  /** Optional OpenAI-backed moderation detector (lazy `openai` peer). */\n  moderation(options?: OpenAiModerationOptions): GuardrailDetector;\n}\n\n/**\n * The `ai.guardrail` value: the {@link guard} factory with the detector\n * factories assigned onto it. Built once and shared.\n */\nexport const guardrail: GuardrailFactory = Object.assign(guard, {\n  pii,\n  topic,\n  injection,\n  moderation,\n});\n\n// `ai.guardrail` is registered natively on the core `ai` object (in `../ai`),\n// now that the guardrail suite ships inside `@warlock.js/ai`.\n"],"mappings":";;;;;;;;;;;;AA4CA,MAAa,YAA8B,OAAO,OAAO,OAAO;CAC9D;CACA;CACA;CACA;AACF,CAAC"}