| 99 | // inside the test body (before the test returns) so it's captured as that |
| 100 | // test's own output. No dynamic subtests - the test tree stays static. |
| 101 | function _reportModels(label: string, models: ModelDescriptionSchema[]): void { |
| 102 | const ids = models.map(m => m.id); |
| 103 | const shown = ids.slice(0, MAX_IDS_REPORTED); |
| 104 | const rest = ids.length > MAX_IDS_REPORTED ? `\n ... +${ids.length - MAX_IDS_REPORTED} more` : ''; |
| 105 | console.log(`[${label}] ${models.length} model${models.length === 1 ? '' : 's'}:\n ${shown.join('\n ')}${rest}`); |
| 106 | } |
| 107 | |
| 108 | // Capture `[DEV]` emissions from vendor validators (llmDevValidateParameterSpecs_DEV, |
| 109 | // llmsAntValidateModelDefs_DEV, openaiValidateModelDefs_DEV, geminiValidate*, |