/** * TypeBox → OpenAI Structured Outputs 兼容 JSON Schema 转换器 * * PD 的输出 schema 用 TypeBox(@sinclair/typebox)定义。OpenAI 兼容的 * `response_format: { type: 'json_schema', ... }` 需要标准 JSON Schema。 * TypeBox schema 序列化后已是标准 JSON Schema(draft 风格),本模块只做两件事: * * 1. 递归为每个 object 添加 `additionalProperties: false`(OpenAI strict 约束的最佳努力, * 也是 llamacpp grammar 转换的推荐形态) * 2. 移除 TypeBox / JSON Schema 元字段($schema / $id),避免部分 provider 拒绝未知关键词 * * 保留的 JSON Schema 子集(OpenAI Structured Outputs 支持): * type / properties / required / items / enum / const / anyOf / oneOf / allOf / * minLength / maxLength / minimum / maximum / description * * 注意:不强制 strict: true(PD 部分 schema 含 Optional 字段——TypeBox Optional * 序列化为"不在 required 数组",strict 模式会拒绝,故由调用方决定是否传 strict)。 */ import type { TSchema } from '@sinclair/typebox'; /** * 将 TypeBox schema 转换为 OpenAI Structured Outputs 兼容的 JSON Schema(纯对象)。 * * 输入可以是 TypeBox TSchema(内部会序列化)或已是纯 JSON 的 schema 对象。 * 输出为可直接放入 `response_format.json_schema.schema` 的普通对象。 */ export declare function typeboxToOpenAIJsonSchema(schema: TSchema | Record): Record; /** * 生成合法的 JSON Schema name(OpenAI 要求 ^[a-zA-Z0-9_-]+$)。 * schemaRef(如 'philosopher-output-v1')已符合;此处兜底清理非法字符。 */ export declare function sanitizeSchemaName(schemaRef: string): string; //# sourceMappingURL=schema-json-converter.d.ts.map