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);