#!/usr/bin/env node
/**
* Test script to verify actual Saptiva API calls work
* Run with: node test-api.mjs
*/
import { spawn } from 'child_process';
import { config } from 'dotenv';
// Load .env file
config();
const server = spawn('node', ['dist/index.js'], {
env: { ...process.env },
stdio: ['pipe', 'pipe', 'pipe']
});
// Test sequence
const tests = [
{
name: 'List Models',
request: {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'saptiva_list_models',
arguments: {}
}
}
},
{
name: 'Chat Completion (Saptiva Turbo)',
request: {
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: {
name: 'saptiva_chat',
arguments: {
model: 'Saptiva Turbo',
messages: [
{ role: 'system', content: 'Eres un asistente útil y conciso.' },
{ role: 'user', content: '¿Cuál es la capital de México? Responde en una oración.' }
],
max_tokens: 100
}
}
}
},
{
name: 'Embedding',
request: {
jsonrpc: '2.0',
id: 3,
method: 'tools/call',
params: {
name: 'saptiva_embed',
arguments: {
text: 'Saptiva es una plataforma de inteligencia artificial'
}
}
}
}
];
let currentTest = 0;
let buffer = '';
function sendNextTest() {
if (currentTest >= tests.length) {
console.log('\n✅ All tests completed!');
server.kill();
process.exit(0);
return;
}
const test = tests[currentTest];
console.log(`\n📝 Test ${currentTest + 1}/${tests.length}: ${test.name}`);
console.log('─'.repeat(50));
buffer = '';
server.stdin.write(JSON.stringify(test.request) + '\n');
}
server.stdout.on('data', (data) => {
buffer += data.toString();
try {
const response = JSON.parse(buffer);
if (response.error) {
console.log('❌ Error:', response.error.message);
} else if (response.result) {
const content = response.result.content?.[0]?.text;
if (content) {
// Pretty print if JSON, otherwise print as-is
try {
const parsed = JSON.parse(content);
console.log('Response:', JSON.stringify(parsed, null, 2).substring(0, 500));
if (JSON.stringify(parsed).length > 500) console.log('... (truncated)');
} catch {
console.log('Response:', content.substring(0, 500));
if (content.length > 500) console.log('... (truncated)');
}
}
if (response.result.isError) {
console.log('❌ Tool error');
} else {
console.log('✅ Success');
}
}
currentTest++;
setTimeout(sendNextTest, 500);
} catch {
// Not complete JSON yet
}
});
server.stderr.on('data', (data) => {
const msg = data.toString().trim();
if (msg && !msg.includes('running on stdio')) {
console.error('Server:', msg);
}
});
server.on('error', (err) => {
console.error('Failed to start server:', err);
process.exit(1);
});
// Start tests after server is ready
setTimeout(sendNextTest, 1000);
// Timeout after 60 seconds
setTimeout(() => {
console.log('\n⏰ Timeout reached');
server.kill();
process.exit(1);
}, 60000);