#!/usr/bin/env node
// Check actual answers by testing the API client directly for saola account
const { UmbrellaApiClient } = require('./dist/api-client.js');
async function checkAnswers() {
console.log(`π CHECKING ACTUAL ANSWERS FOR QUESTIONS.TEST`);
console.log(`π€ Account: saola (david+saola@umbrellacost.com)`);
console.log('β'.repeat(80));
try {
// Create API client and authenticate
const apiClient = new UmbrellaApiClient('https://api.umbrellacost.io/api/v1');
console.log('π Authenticating saola account...');
const authResult = await apiClient.authenticate({
username: 'david+saola@umbrellacost.com',
password: 'Dsamsung1!'
});
if (!authResult.success) {
throw new Error(`Authentication failed: ${authResult.error}`);
}
console.log('β
Authentication successful');
// Test each question's corresponding API call
const tests = [
{
q: "what is my total cost?",
test: async () => {
const result = await apiClient.makeRequest('/invoices/caui', {
startDate: '2025-08-11',
endDate: '2025-08-17',
groupBy: 'service',
periodGranLevel: 'day',
costType: ['cost', 'discount'],
isUnblended: true,
accountId: '532523076083'
});
return result;
}
},
{
q: "show me all available accounts",
test: async () => {
const result = await apiClient.makeRequest('/users', {});
return result;
}
},
{
q: "what do you recommend to do for saving AWS costs?",
test: async () => {
const result = await apiClient.getRecommendations({});
return result;
}
},
{
q: "Is there any anomalies on AWS?",
test: async () => {
const result = await apiClient.makeRequest('/anomaly-detection', {
startDate: '2025-08-11',
endDate: '2025-08-17'
});
return result;
}
}
];
for (let i = 0; i < tests.length; i++) {
const test = tests[i];
console.log(`\nπ Q${i + 1}: "${test.q}"`);
try {
const result = await test.test();
if (result.success && result.data) {
// Extract meaningful answers
if (test.q.includes('total cost')) {
if (Array.isArray(result.data)) {
const totalCost = result.data.reduce((sum, item) => sum + (item.cost || 0), 0);
console.log(`π€ ANSWER: Total cost $${totalCost.toFixed(2)} across ${result.data.length} services`);
} else {
console.log(`π€ ANSWER: Cost data structure:`, typeof result.data);
}
} else if (test.q.includes('available accounts')) {
if (Array.isArray(result.data)) {
console.log(`π€ ANSWER: ${result.data.length} accounts available`);
} else {
console.log(`π€ ANSWER: Account data available`);
}
} else if (test.q.includes('recommend')) {
if (Array.isArray(result.data)) {
const totalSavings = result.data.reduce((sum, rec) => sum + (rec.potentialSavings || rec.annualSavings || 0), 0);
console.log(`π€ ANSWER: ${result.data.length} recommendations with $${totalSavings.toFixed(2)} potential annual savings`);
} else if (result.total_potential_savings) {
console.log(`π€ ANSWER: Recommendations available with $${result.total_potential_savings} potential savings`);
} else {
console.log(`π€ ANSWER: Recommendations data available`);
}
} else if (test.q.includes('anomalies')) {
if (Array.isArray(result.data)) {
const openAnomalies = result.data.filter(a => a.status !== 'closed').length;
console.log(`π€ ANSWER: ${openAnomalies} open anomalies found`);
} else {
console.log(`π€ ANSWER: Anomaly data available`);
}
}
console.log(`β
Success`);
} else {
console.log(`β API Error: ${result.error || 'Unknown error'}`);
}
} catch (error) {
console.log(`β Test Error: ${error.message}`);
}
}
console.log('\nπ ANSWER CHECK COMPLETE');
} catch (error) {
console.error(`β Answer check failed:`, error.message);
}
}
checkAnswers().catch(console.error);