claude-with-launch.mjsβ’5.75 kB
// Simulazione Claude con Launch Visum
import { spawn } from 'child_process';
console.log("π€ CLAUDE SIMULAZIONE - Con Launch Visum\n");
async function sendMCPRequest(method, params = {}) {
return new Promise((resolve) => {
const child = spawn('node', ['enhanced-visum-mcp.mjs'], {
stdio: ['pipe', 'pipe', 'pipe'],
cwd: process.cwd()
});
let output = '';
let stderr = '';
child.stdout.on('data', (data) => {
output += data.toString();
});
child.stderr.on('data', (data) => {
stderr += data.toString();
});
child.on('close', () => {
try {
const lines = output.trim().split('\n');
const jsonLine = lines.find(line => line.startsWith('{'));
if (jsonLine) {
const response = JSON.parse(jsonLine);
resolve({ success: true, response, stderr });
} else {
resolve({ success: false, error: 'No JSON response', output, stderr });
}
} catch (error) {
resolve({ success: false, error: error.message, output, stderr });
}
});
const request = {
jsonrpc: "2.0",
id: Math.floor(Math.random() * 1000),
method: method,
params: params
};
child.stdin.write(JSON.stringify(request) + '\n');
child.stdin.end();
setTimeout(() => {
child.kill();
resolve({ success: false, error: 'Timeout' });
}, 15000);
});
}
async function claudeWorkflow() {
console.log("π€ Claude: 'Devo analizzare la rete di trasporto'");
console.log("π§ Claude pensa: Prima verifico i tools disponibili...\n");
// Step 1: List tools
console.log("π 1. Lista dei tools disponibili");
const toolsResult = await sendMCPRequest("tools/list");
if (toolsResult.success) {
const tools = toolsResult.response.result?.tools || [];
console.log(`β
Trovati ${tools.length} tools:`);
tools.forEach((tool, i) => {
console.log(` ${i+1}. ${tool.name} - ${tool.description}`);
});
// Check if launch_visum is available
const hasLaunch = tools.some(t => t.name === 'launch_visum');
console.log(`π Launch Visum disponibile: ${hasLaunch ? 'SΓ' : 'NO'}`);
} else {
console.log("β Errore nel recuperare i tools");
return false;
}
console.log("\nπ€ Claude: 'Perfetto! Ora lancio Visum'");
// Step 2: Launch Visum
console.log("π 2. Lancio Visum");
const launchResult = await sendMCPRequest("tools/call", {
name: "launch_visum",
arguments: {}
});
if (launchResult.success) {
const content = launchResult.response.result?.content?.[0]?.text;
if (content?.includes("β
")) {
console.log("β
Visum lanciato con successo!");
// Extract process info
const pidMatch = content.match(/Process ID:\*\* (\d+)/);
if (pidMatch) {
console.log(`π Process ID: ${pidMatch[1]}`);
}
} else {
console.log("β Lancio Visum fallito");
console.log("Dettagli:", content?.substring(0, 150) + "...");
return false;
}
} else {
console.log("β Errore nel lancio:", launchResult.error);
return false;
}
console.log("\nπ€ Claude: 'Ora aspetto un po' per Visum e poi controllo'");
await new Promise(resolve => setTimeout(resolve, 3000)); // Wait 3 seconds
// Step 3: Check Visum
console.log("π 3. Verifica Visum");
const checkResult = await sendMCPRequest("tools/call", {
name: "check_visum",
arguments: {}
});
if (checkResult.success) {
const content = checkResult.response.result?.content?.[0]?.text;
if (content?.includes("β
")) {
console.log("β
Visum Γ¨ accessibile via COM!");
// Extract version
const versionMatch = content.match(/Version:\*\* (\d+)/);
if (versionMatch) {
console.log(`π¦ Version: ${versionMatch[1]}`);
}
} else {
console.log("β οΈ Visum non ancora pronto, potrebbe servire piΓΉ tempo");
return false;
}
} else {
console.log("β Errore nel check:", checkResult.error);
return false;
}
console.log("\nπ€ Claude: 'Perfetto! Ora analizzo la rete'");
// Step 4: Analyze Network
console.log("π 4. Analisi della rete");
const analysisResult = await sendMCPRequest("tools/call", {
name: "analyze_network",
arguments: {}
});
if (analysisResult.success) {
const content = analysisResult.response.result?.content?.[0]?.text;
if (content?.includes("β
")) {
console.log("β
Analisi completata!");
// Extract network stats
const nodesMatch = content.match(/Nodes:\*\* (\w+)/);
const linksMatch = content.match(/Links:\*\* (\w+)/);
const zonesMatch = content.match(/Zones:\*\* (\w+)/);
if (nodesMatch && linksMatch && zonesMatch) {
console.log(`π Rete: ${nodesMatch[1]} nodi, ${linksMatch[1]} link, ${zonesMatch[1]} zone`);
}
return true;
} else {
console.log("β οΈ Analisi fallita, probabilmente serve caricare un modello");
console.log("π‘ Claude: 'Va bene, almeno Visum Γ¨ attivo ora!'");
return true; // Success parziale
}
} else {
console.log("β Errore nell'analisi:", analysisResult.error);
return false;
}
}
claudeWorkflow().then((success) => {
console.log("\nπ RISULTATO FINALE:");
if (success) {
console.log("π β
Claude Γ¨ riuscito nell'automazione Visum!");
console.log(" - MCP server funzionante");
console.log(" - Visum lanciato correttamente");
console.log(" - COM automation operativa");
console.log(" - Pronto per l'analisi di rete");
} else {
console.log("β Workflow Claude incompleto");
}
}).catch(console.error);