import { MetadataProcessor } from './chunking/processor';
async function testMCPChunking() {
try {
console.log('Testing chunking with Salesforce MCP data...');
// Use the actual CallManagementService data from MCP
const callManagementService = {
"Id": "01pal00000UWPV3AAP",
"Name": "CallManagementService",
"Body": "public class CallManagementService {\n \n public class CallInitiationRequest {\n public String recordId;\n public String recordType; // 'Account', 'Contact', 'Lead'\n public String phoneNumber;\n public String assistantId;\n public String campaignId;\n }\n \n public class CallInitiationResponse {\n public Boolean success;\n public String message;\n public String callRecordId;\n public String vapiCallId;\n public String error;\n }\n \n @AuraEnabled\n public static CallInitiationResponse initiateDirectCall(String phoneNumber, String assistantId, String campaignId, String phoneNumberId) {\n CallInitiationResponse response = new CallInitiationResponse();\n System.debug('CallManagementService: Starting direct call initiation.');\n \n try {\n // Validate input\n if (String.isBlank(phoneNumber)) {\n response.success = false;\n response.error = 'Phone number is required';\n return response;\n }\n \n // Get default assistant ID if not provided\n if (String.isBlank(assistantId)) {\n assistantId = getDefaultAssistantId();\n }\n\n // Make direct API call to backend\n VapiApiService.VapiCallRequest vapiRequest = new VapiApiService.VapiCallRequest();\n vapiRequest.phoneNumber = phoneNumber;\n vapiRequest.assistantId = assistantId;\n vapiRequest.name = 'Direct-' + System.now().getTime();\n \n // Add phoneNumberId if provided\n if (String.isNotBlank(phoneNumberId)) {\n vapiRequest.phoneNumberId = phoneNumberId;\n }\n\n // Add basic metadata\n vapiRequest.metadata = new Map<String, Object>();\n vapiRequest.metadata.put('userId', UserInfo.getUserId());\n vapiRequest.metadata.put('orgId', UserInfo.getOrganizationId());\n if (String.isNotBlank(campaignId)) {\n vapiRequest.metadata.put('campaignId', campaignId);\n }\n\n System.debug('CallManagementService: Sending direct API call. vapiRequest=' + vapiRequest);\n VapiApiService.VapiCallResponse vapiResponse = VapiApiService.initiateCall(vapiRequest);\n System.debug('CallManagementService: Direct API response=' + vapiResponse);\n\n if (!vapiResponse.success) {\n response.success = false;\n response.error = vapiResponse.error;\n return response;\n }\n\n response.success = true;\n response.message = 'Call initiated successfully';\n response.vapiCallId = vapiResponse.id;\n System.debug('CallManagementService: Direct call successful. vapiCallId=' + vapiResponse.id);\n \n } catch (Exception e) {\n response.success = false;\n response.error = e.getMessage();\n System.debug('Direct call error: ' + e.getMessage());\n }\n \n return response;\n }\n\n private static String getDefaultAssistantId() {\n try {\n List<aidialer__AI_Dialer_Setting__mdt> settings = [\n SELECT aidialer__Value__c \n FROM aidialer__AI_Dialer_Setting__mdt \n WHERE DeveloperName = 'Default_Assistant_ID' \n LIMIT 1\n ];\n \n if (!settings.isEmpty()) {\n return settings[0].aidialer__Value__c;\n }\n } catch (Exception e) {\n System.debug('Error getting default assistant ID: ' + e.getMessage());\n }\n \n return '64b4c1c2-c370-49b3-b755-258d6288eb27'; // Default Vapi Assistant ID\n }\n}",
"Status": "Active",
"CreatedDate": "2025-08-27T19:35:30.000+0000",
"LastModifiedDate": "2025-08-31T14:43:19.000+0000",
fullName: "CallManagementService"
};
// Test chunking
const processor = new MetadataProcessor();
const chunks = await processor.processMetadata(
callManagementService,
'ApexClass',
'aicaller_dev_org'
);
console.log(`\n✓ Generated ${chunks.length} chunks for real CallManagementService:`);
chunks.forEach((chunk, index) => {
console.log(`\nChunk ${index + 1}:`);
console.log(` ID: ${chunk.id}`);
console.log(` Name: ${chunk.name}`);
console.log(` Path: ${chunk.path}`);
console.log(` Symbols (${chunk.symbols.length}): ${chunk.symbols.slice(0, 8).join(', ')}${chunk.symbols.length > 8 ? '...' : ''}`);
console.log(` References (${chunk.references.length}): ${chunk.references.slice(0, 3).map(r => r.fullName || r.name).join(', ')}${chunk.references.length > 3 ? '...' : ''}`);
console.log(` Content size: ${chunk.content.length} chars`);
});
// Test what aidialer objects we found
const aidialer_symbols = chunks.flatMap(c => c.symbols).filter(s => s.includes('aidialer'));
console.log(`\n✓ Found ${aidialer_symbols.length} aidialer-related symbols:`);
console.log(` ${aidialer_symbols.join(', ')}`);
console.log('\n✓ MCP chunking integration test completed successfully!');
} catch (error) {
console.error('✗ MCP chunking test failed:', error);
}
}
testMCPChunking();