#!/usr/bin/env node // Crée un workflow n8n depuis un fichier JSON local (POST /api/v1/workflows). // Usage: node tools/n8n-create.mjs import fs from 'fs'; import os from 'os'; import path from 'path'; const INPUT = process.argv[2]; if (!INPUT) { console.error('Usage: node tools/n8n-create.mjs '); process.exit(1); } const local = JSON.parse(fs.readFileSync(INPUT, 'utf8')); const cfg = JSON.parse(fs.readFileSync(path.join(os.homedir(), '.config/opencode/opencode.json'), 'utf8')); const env = cfg.mcp['n8n-mcp'].environment; const url = env.N8N_API_URL.replace(/\/api\/v1\/?$/, ''); const headers = { 'X-N8N-API-KEY': env.N8N_API_KEY, 'Content-Type': 'application/json' }; const body = { name: local.name, nodes: local.nodes, connections: local.connections, settings: { executionOrder: local.settings?.executionOrder || 'v1', callerPolicy: local.settings?.callerPolicy || 'workflowsFromSameOwner', }, }; const res = await fetch(`${url}/api/v1/workflows`, { method: 'POST', headers, body: JSON.stringify(body) }); const text = await res.text(); if (!res.ok) { console.error(`CRÉATION REFUSÉE: ${res.status} ${res.statusText}`); console.error(text.slice(0, 1000)); process.exit(1); } const created = JSON.parse(text); console.log(`Créé: "${created.name}" id=${created.id} (active=${created.active})`); console.log(`→ reporter l'id dans le fichier local si besoin: ${INPUT}`);