import { D365PipeClient } from './tools/d365-pipe-client.js';
async function testDynamicReflection() {
console.log('=== TESTING DYNAMIC D365 REFLECTION ===\n');
const client = new D365PipeClient();
try {
console.log('π Connecting...');
await client.connect();
console.log('β
Connected!\n');
// Test the dynamic discovery
console.log('π Discovering AxTable capabilities...');
const response = await client.sendRequest('discoverModificationCapabilities', '', {
objectType: 'AxTable'
});
if (response.Success && response.Data) {
const capabilities = response.Data;
console.log(`\nβ
SUCCESS! Found ${capabilities.ModificationMethods?.length || 0} methods`);
console.log('\nπ― Key Methods Discovered:');
capabilities.ModificationMethods?.slice(0, 7).forEach(method => {
console.log(` β’ ${method.Name}(${method.Parameters?.map(p => p.Type).join(', ') || ''})`);
});
console.log('\nποΈ Related Field Types Available:');
capabilities.RelatedTypeConstructors?.slice(0, 5).forEach(type => {
console.log(` β’ ${type.Name}`);
});
console.log('\nπ DYNAMIC REFLECTION WORKING!');
console.log(' This proves agents can discover D365 capabilities in real-time');
console.log(' without any hardcoded abstraction layers!');
} else {
console.log('β Failed:', response.Error);
}
} catch (error) {
console.error('β Error:', error.message);
} finally {
client.disconnect();
console.log('\nπ Disconnected');
}
}
testDynamicReflection().catch(console.error);