From bc73ea10c37422c3a63c43108b8eaf8b13f68936 Mon Sep 17 00:00:00 2001 From: Khaliq Date: Fri, 16 Jan 2026 11:07:09 -0300 Subject: [PATCH] add in more validation logic --- .../src/__tests__/validation.test.ts | 21 +++++++++++++++++++ packages/converters/src/validation.ts | 16 ++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/converters/src/__tests__/validation.test.ts b/packages/converters/src/__tests__/validation.test.ts index 86b0da29..444d9a1a 100644 --- a/packages/converters/src/__tests__/validation.test.ts +++ b/packages/converters/src/__tests__/validation.test.ts @@ -70,6 +70,27 @@ You are a test agent. expect(result.valid).toBe(true); expect(result.errors).toHaveLength(0); }); + + it('should include property name in additionalProperties error', () => { + const invalidClaude = `--- +name: test-agent +description: "Test agent" +allowed-tools: Read, Write, Bash +--- + +# Test Agent + +You are a test agent. +`; + + const result = validateMarkdown('claude', invalidClaude, 'agent'); + expect(result.valid).toBe(false); + expect(result.errors.length).toBeGreaterThan(0); + // The error should include the invalid property name + const errorMessage = result.errors[0].message; + expect(errorMessage).toContain('allowed-tools'); + expect(errorMessage).toContain('must NOT have additional properties'); + }); }); describe('validateFormat', () => { diff --git a/packages/converters/src/validation.ts b/packages/converters/src/validation.ts index 5fe1fc93..e8812600 100644 --- a/packages/converters/src/validation.ts +++ b/packages/converters/src/validation.ts @@ -160,8 +160,20 @@ export function validateFormat( if (!valid && validate.errors) { for (const error of validate.errors) { - const path = error.instancePath || '/' + (error.params as { missingProperty?: string }).missingProperty || '/'; - const message = error.message || 'Validation error'; + const params = error.params as { + missingProperty?: string; + additionalProperty?: string; + allowedValues?: unknown[]; + }; + const path = error.instancePath || '/' + (params.missingProperty || ''); + let message = error.message || 'Validation error'; + + // Enhance error messages with additional context + if (error.keyword === 'additionalProperties' && params.additionalProperty) { + message = `${message}: '${params.additionalProperty}'`; + } else if (error.keyword === 'enum' && params.allowedValues) { + message = `${message}. Allowed values: ${params.allowedValues.join(', ')}`; + } // Categorize as error or warning based on severity const validationError: ValidationError = {