#!/usr/bin/env node
/**
* API Requirements Guidance Test
* Verifies that Claude receives comprehensive API requirements upfront
*/
import { createClaudeGuidedComposer } from '../dist/claude-guided-composer.js';
async function testAPIRequirementsGuidance() {
console.error('๐จ Testing API Requirements Guidance (Prevention-First Approach)\n');
const composer = createClaudeGuidedComposer();
// Test guidance for photosynthesis lesson (the scenario that failed)
const guidance = await composer.provideLessonGuidance(
"Crie uma aula de biologia sobre fotossรญntese",
"Ciรชncias",
"6ยบ ano"
);
console.error('๐ Testing API Requirements Section');
// Verify API requirements are provided
if (guidance.apiRequirements) {
console.error('โ
API requirements section present');
// Check critical field mappings
const quizRequirements = guidance.apiRequirements.widgetAPIRequirements['quiz-1'];
if (quizRequirements && quizRequirements.criticalNote) {
console.error('โ
Quiz field requirements specified:');
console.error(` Note: ${quizRequirements.criticalNote}`);
}
const listRequirements = guidance.apiRequirements.widgetAPIRequirements['list-1'];
if (listRequirements && listRequirements.criticalNote) {
console.error('โ
List field requirements specified:');
console.error(` Note: ${listRequirements.criticalNote}`);
}
const hotspotsRequirements = guidance.apiRequirements.widgetAPIRequirements['hotspots-1'];
if (hotspotsRequirements && hotspotsRequirements.criticalNote) {
console.error('โ
Hotspots field requirements specified:');
console.error(` Note: ${hotspotsRequirements.criticalNote}`);
}
// Check common mistakes section
if (guidance.apiRequirements.commonMistakes) {
console.error('โ
Common mistakes guide provided');
const fieldErrors = guidance.apiRequirements.commonMistakes.fieldNameErrors;
console.error(` Quiz mistake prevention: ${fieldErrors.quiz?.correct}`);
console.error(` List mistake prevention: ${fieldErrors.list?.correct}`);
}
// Check critical reminders
if (guidance.apiRequirements.criticalReminders) {
console.error('โ
Critical reminders provided:');
guidance.apiRequirements.criticalReminders.slice(0, 3).forEach((reminder, i) => {
console.error(` ${i + 1}. ${reminder}`);
});
}
} else {
console.error('โ API requirements section missing');
}
console.error('\n๐ Testing Instructions Priority');
// Check that instructions prioritize API requirements
if (guidance.instructions.includes('FOLLOW API REQUIREMENTS FIRST')) {
console.error('โ
Instructions prioritize API requirements');
} else {
console.error('โ Instructions do not emphasize API requirements');
}
if (guidance.instructions.includes('Study the apiRequirements section')) {
console.error('โ
Instructions direct Claude to study API requirements first');
} else {
console.error('โ Instructions do not direct to API requirements section');
}
console.error('\n๐ Testing Specific Field Guidance');
const expectedGuidance = [
'Use "options" array with "correct_option"',
'Use "items" array (NOT "list_items")',
'Use numeric coordinates like 50, 30',
'Use "flashcards_items"',
'Minimum 20 characters'
];
expectedGuidance.forEach(expected => {
if (guidance.instructions.includes(expected)) {
console.error(`โ
Includes guidance: "${expected}"`);
} else {
console.error(`โ Missing guidance: "${expected}"`);
}
});
console.error('\n๐ฏ Prevention-First Approach Results:');
console.error(' โ
API requirements provided upfront before content creation');
console.error(' โ
Exact field names and formats specified');
console.error(' โ
Common mistakes explicitly prevented');
console.error(' โ
Critical reminders highlighted');
console.error(' โ
Instructions prioritize API understanding');
console.error('\n๐ Expected Claude Behavior Improvement:');
console.error(' 1. Claude studies API requirements FIRST');
console.error(' 2. Claude generates content with correct field names');
console.error(' 3. validate_lesson_data โ Success (no field name errors)');
console.error(' 4. format_for_composer โ Success (minimal transformation needed)');
console.error(' 5. save_composition_api โ Success (no 500 API errors)');
console.error('\nโ
Prevention-first approach should eliminate most API errors at source');
}
testAPIRequirementsGuidance().catch(console.error);