index.js 1.55 KB
/**
 * `@drama/moderation` 公共面(唯一对外入口,§3 契约)。
 *
 * 内容安全闸:把「判定内容是否安全/合规」封装成与生成解耦、与厂商解耦的注入式 package。
 * 对外只暴露 `createModeration`(工厂)、`ModerationError`(结构化错误)、
 * `createFakeRules` / `createFakeGuardPort`(测试注入)。
 *
 * 一期能力:敏感词/长度/格式闸(`checkText`)+ 生成链路**前置**安全护栏
 * (`guardGeneration`,block 阻断回流)+ 供 `@drama/llm` 注入消费的 `ModerationPort`
 * (经实例的 `asModerationPort()` 取得)。基础安全类目判定来自注入的 `llmGuardPort`,
 * 本包不自训/自写分类模型。
 *
 * 边界纪律(架构红线):包内不读 `process.env`、不建任何顶层连接;规则与 Port 全部
 * 由 `createModeration` 参数注入。moderation 不 import llm,llm 经注入 Port 调本包(架构 §8)。
 *
 * 二期(分级 + 区域策略)将扩展 `policy`/`region` 的实现而不改本签名。
 *
 * @typedef {import('./moderation.js').Moderation} Moderation
 * @typedef {import('./moderation.js').CheckTextResult} CheckTextResult
 * @typedef {import('./guard.js').GuardResult} GuardResult
 * @typedef {import('./guard.js').GuardPort} GuardPort
 * @typedef {import('./port.js').ModerationPort} ModerationPort
 * @typedef {import('./rules-check.js').Rules} Rules
 */

export { createModeration } from './moderation.js'
export { ModerationError } from './errors.js'
export { createFakeRules, createFakeGuardPort } from './fake.js'