164
},
165
validateOrDefault<T extends Partial<{ [K in keyof D]: SchemaValue<D[K]> }>>(values: { [K in keyof T]?: unknown } | undefined, defaults: T): T {
167
>
const raw: { [K in keyof T]?: unknown } = values ?? {};
168
>
for (const key of Object.keys(definition)) {
169
>
const prop = definition[key];
170
>
const candidate = raw[key];
171
>
if (candidate !== undefined && prop.validate(candidate)) {
172
result[key] = candidate;
173
>
} else if (Object.prototype.hasOwnProperty.call(defaults, key)) {
agentHostSchema.ts
174
result[key] = (defaults as Record<string, unknown>)[key];
175
}
177
>
// → leave unset so higher-scope defaults can fill in.
178
>
}
179
>
return result as T;
180
>
},
181
};
182
}