claude-open-project.mjs•5.11 kB
// Simulazione: Claude apre il progetto Visum
import { spawn } from 'child_process';
console.log("🤖 CLAUDE: 'Certo! Apro il progetto Visum per te'");
console.log("═".repeat(60));
const projectPath = "H:\\go\\italferr2025\\Campoleone\\100625_Versione_base_v0.3_sub_ok_priv.ver";
console.log("👤 User richiesta:");
console.log(` Apri il progetto: ${projectPath}`);
async function claudeOpenProject() {
console.log("\n🧠 Claude pensa: 'Userò l'MCP per aprire questo progetto in Visum...'");
// Simula la richiesta MCP di Claude
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();
if (data.toString().includes('ready for Claude')) {
console.log("✅ MCP Server connesso!");
}
});
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "open_project",
arguments: {
projectPath: projectPath
}
}
};
console.log("📤 Claude invia richiesta MCP: open_project");
console.log(` 📁 Percorso: ${projectPath}`);
child.stdin.write(JSON.stringify(request) + '\n');
child.stdin.end();
return new Promise((resolve) => {
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 });
} else {
resolve({ success: false, error: 'No JSON response', output, stderr });
}
} catch (error) {
resolve({ success: false, error: error.message, output, stderr });
}
});
setTimeout(() => {
child.kill();
resolve({ success: false, error: 'Timeout dopo 30 secondi' });
}, 30000); // Timeout più lungo per apertura progetto
});
}
async function simulateClaudeResponse() {
console.log("\n🔄 Claude esegue: tool open_project...");
const result = await claudeOpenProject();
console.log("\n📥 Risposta MCP ricevuta!");
if (result.success && result.response.result) {
const content = result.response.result.content?.[0]?.text;
if (content?.includes("✅")) {
console.log("🤖 Claude: '🎉 Perfetto! Ho aperto il progetto con successo!'");
console.log("📊 Dettagli progetto:");
// Estrai informazioni dal contenuto della risposta
const fileMatch = content.match(/File:\*\* (.+)/);
const statusMatch = content.match(/Status:\*\* (.+)/);
const sizeMatch = content.match(/Size:\*\* (.+)/);
if (fileMatch) console.log(` 📄 File: ${fileMatch[1]}`);
if (statusMatch) console.log(` ✅ Status: ${statusMatch[1]}`);
if (sizeMatch) console.log(` 📏 Dimensione: ${sizeMatch[1]}`);
console.log("\n🤖 Claude: 'Il progetto Campoleone è ora caricato in Visum!'");
console.log("🎯 Cosa posso fare ora:");
console.log(" 📊 Analizzare la rete di trasporto");
console.log(" 🚌 Verificare le linee del trasporto pubblico");
console.log(" 📈 Eseguire calcoli e simulazioni");
console.log(" 📋 Generare report e statistiche");
} else if (content?.includes("❌")) {
console.log("🤖 Claude: '❌ Mi dispiace, ho avuto un problema nell'aprire il progetto'");
console.log("🔍 Possibili cause:");
console.log(" • File non trovato nel percorso specificato");
console.log(" • Visum non è connesso correttamente");
console.log(" • Formato file non supportato");
const errorMatch = content.match(/Error:\*\* (.+)/);
if (errorMatch) {
console.log(` 💬 Errore: ${errorMatch[1]}`);
}
}
return content?.includes("✅");
} else {
console.log("🤖 Claude: '❌ C'è stato un problema di comunicazione con Visum'");
console.log(`💻 Errore tecnico: ${result.error}`);
return false;
}
}
async function runSimulation() {
const success = await simulateClaudeResponse();
console.log("\n" + "═".repeat(60));
console.log("📋 RIEPILOGO OPERAZIONE");
console.log("═".repeat(60));
if (success) {
console.log("🎉 ✅ SUCCESSO!");
console.log("👤 Richiesta: Aprire progetto Visum");
console.log("🤖 Claude: ✅ Progetto aperto correttamente");
console.log("📁 File: Campoleone (Italferr 2025)");
console.log("🔧 MCP Tool: open_project funzionante");
} else {
console.log("❌ PROBLEMA");
console.log("👤 Richiesta: Aprire progetto Visum");
console.log("🤖 Claude: ❌ Errore nell'apertura");
console.log("🔧 Necessario debug MCP/Visum");
}
return success;
}
runSimulation().then((success) => {
console.log(`\n🏁 Simulazione completata: ${success ? 'SUCCESS' : 'FAILED'}`);
}).catch(console.error);