( model: z.infer<typeof BaseModel>, models: Record<string, ModelMetadata>, modelPath: string, )
| 144 | } |
| 145 | |
| 146 | function mergeBaseModel( |
| 147 | model: z.infer<typeof BaseModel>, |
| 148 | models: Record<string, ModelMetadata>, |
| 149 | modelPath: string, |
| 150 | ) { |
| 151 | const base = models[model.base_model]; |
| 152 | if (base === undefined) { |
| 153 | throw new Error(`Unable to resolve base_model: ${model.base_model}`, { |
| 154 | cause: { modelPath, toml: model }, |
| 155 | }); |
| 156 | } |
| 157 | |
| 158 | const { base_model: _baseModel, base_model_omit: omit, ...overrides } = model; |
| 159 | const merged: Record<string, unknown> = structuredClone( |
| 160 | mergeDeep(inheritableModelMetadata(base), overrides), |
| 161 | ); |
| 162 | |
| 163 | applyOmit(merged, omit ?? []); |
| 164 | return merged; |
| 165 | } |
| 166 | |
| 167 | function inheritableModelMetadata(model: ModelMetadata) { |
| 168 | const { |
no test coverage detected