packages / adapter-lmstudio / src / safety.ts

import {
  buildCoreGroundingInstruction,
  containsCoreInstructionLikeText,
  sanitizeCoreEvidenceBlocks,
  sanitizeCoreRetrievedText,
} from "../../core/src/safety";
import { buildRagEvidenceBlocks } from "../../core/src/retrievalPipeline";
import { toEvidenceBlocks, toRagCandidates } from "./lmstudioCoreBridge";
import type { EvidenceBlock } from "./types/evidence";
import type {
  SafetySanitizationOptions,
  StrictGroundingMode,
} from "./types/safety";

export function containsInstructionLikeText(value: string) {
  return containsCoreInstructionLikeText(value);
}

export function sanitizeRetrievedText(
  value: string,
  options: SafetySanitizationOptions
) {
  return sanitizeCoreRetrievedText(value, options);
}

export function sanitizeEvidenceBlocks(
  blocks: Array<EvidenceBlock>,
  options: SafetySanitizationOptions
): Array<EvidenceBlock> {
  return toEvidenceBlocks(
    sanitizeCoreEvidenceBlocks(
      buildRagEvidenceBlocks(toRagCandidates(blocks.map((block) => block.entry))),
      options
    )
  ).map((sanitizedBlock, index) => ({
    ...blocks[index]!,
    content: sanitizedBlock.content,
  }));
}

export function buildGroundingInstruction(strictGroundingMode: StrictGroundingMode) {
  return buildCoreGroundingInstruction(strictGroundingMode);
}