feat: 重构配置生命周期为 Authoring/Normalized/Resolved 三层
将变量替换和 expect 简写展开统一放入 Normalized 阶段, 运行时 AJV 使用 Normalized schema,导出 schema 面向 Authoring Config。 主要变更: - 新增 normalizer.ts 实现 normalizeAuthoringConfig() - 拆分 Authoring/Normalized 双 schema,checker 接口支持 authoring/normalized 片段 - config-loader 流程:normalize → Normalized AJV → semantic → resolve - validator 兼容层自动分派 raw/normalized expect 形态 - 删除 rawExpect,store.expect 列写入 null - Authoring schema 对 integer/boolean/enum 字段接受变量引用 - 修复 DB/HTTP validate 入口守卫和 LLM options integer 变量引用 - 优化 compact() 避免 undefined 覆盖隐患 - 移除 content.ts 恒为 true 的前置条件 - 同步 5 个主规范并归档 change
This commit is contained in:
@@ -14,8 +14,14 @@ function createChecker(type: string): Checker {
|
||||
execute: () => Promise.resolve<CheckResult>({} as unknown as CheckResult),
|
||||
resolve: () => ({}) as unknown as ResolvedTargetBase,
|
||||
schemas: {
|
||||
config: Type.Object({}, { additionalProperties: false }),
|
||||
expect: Type.Object({}, { additionalProperties: false }),
|
||||
authoring: {
|
||||
config: Type.Object({}, { additionalProperties: false }),
|
||||
expect: Type.Object({}, { additionalProperties: false }),
|
||||
},
|
||||
normalized: {
|
||||
config: Type.Object({}, { additionalProperties: false }),
|
||||
expect: Type.Object({}, { additionalProperties: false }),
|
||||
},
|
||||
},
|
||||
serialize: () => ({ config: "", target: "" }),
|
||||
type,
|
||||
@@ -68,7 +74,9 @@ describe("CheckerRegistry", () => {
|
||||
|
||||
expect(first.supportedTypes).toEqual(["http", "cmd", "db", "tcp", "icmp", "udp", "llm", "custom"]);
|
||||
expect(second.supportedTypes).toEqual(["http", "cmd", "db", "tcp", "icmp", "udp", "llm"]);
|
||||
expect(first.definitions.every((checker) => checker.schemas.config && checker.schemas.expect)).toBe(true);
|
||||
expect(
|
||||
first.definitions.every((checker) => checker.schemas.authoring.config && checker.schemas.normalized.expect),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
test("默认 registry 注册 icmp type", () => {
|
||||
|
||||
Reference in New Issue
Block a user