@collective-intelligence/extensions-sdk-backend-zod
可选 Zod 4 作者适配器 @collective-intelligence/extensions-sdk。 。 。 .
核心SDK保持提供者中立;这个软件包拥有Zod并曝光一个
公用适配器.
zod (单位:千美元)>=4.4.2 <5)是同级依赖关系。 安装在适配器旁边这样
适配器和你的计划分享一个Zod实例:
bun add @collective-intelligence/extensions-sdk \
@collective-intelligence/extensions-sdk-backend-zod zod
import type { PackageCodec } from "@collective-intelligence/extensions-sdk"
import { zodSchema } from "@collective-intelligence/extensions-sdk-backend-zod"
import { z } from "zod"
const identifier = zodSchema(
z.codec(z.string().regex(/^item:[0-9]+$/), z.number().int(), {
decode: (wire) => Number(wire.slice(5)),
encode: (value) => `item:${value}`
})
)
const outputSchema: PackageCodec<string, number> = identifier
zodSchema(...) 推断Zod input 作为电线类型和Zod output 作为
执行价值。 审定用途 safeParseAsync; 编码用途
safeEncodeAsync,所以同步的改进和编码 保留了他们的原生
行为.
适配器还创建决定性输入和输出 JSON Schema Draft
2020-12 仅限交换消费者预测. 运行时间验证和
编码总是直接给Zod打电话. 两个方向都描述了Zod的 input
线型:输入验证消耗了该线型,输出编码
生产它。 佐德号
output 类型仍然是进程内域值,并由本地验证
反向编码,而不是作为运输JSON的广告。 解码器,
改造、预处理器、成功计划、强迫、捕获、覆盖和
对定制的改进保守地报告如下: structural 忠诚
因为他们的原生回调或语义可以比便携式更严格
计划 不支持的 JSON Schema 构造在适配器创建时失败
而不是默默地拓宽.
单向转变
Zod变换和预处理器不提供反向编码. 他们 因此,适配器结果只解码器,没有输出预测:
const parsedNumber = zodSchema(z.string().transform(Number))
await parsedNumber.validate("42") // { value: 42 }
// parsedNumber does not satisfy PackageCodec<string, number>
对于嵌入的物体、阵列、联盟、拖累、记录、精确
选项、承诺和其他包装. z.success(...) 也是只解码器.
使用明确的 z.codec(inputSchema, outputSchema, { decode, encode }) 何时
计划必须在输出位置被接受。 懒人计划被视为
保守地解码器,因为其递归类型无法证明编码器
能力静态.
提供者字符串( N)zod/4)只是诊断元数据。 主机发送
结构 validate 财务报告和审定财务报表 encode 能力; project(...) 仅是
适用于便携式消费者。 没有注册或供应商开关.
包装边界
运行 bun run test:pack 以验证已公布的边界。 它会建立和包装
此软件包和 @collective-intelligence/extensions-sdk,安装包装
文物和同龄人 zod 临时副本 test/consumer,则
检查和运行该消费者。 建筑需要底座SDK
因此,建立 @collective-intelligence/extensions-sdk 先说.