backup: workflow V2.6 production (avant patch charge HC auto) + outils n8n-pull/n8n-push
This commit is contained in:
47
tools/n8n-pull.mjs
Normal file
47
tools/n8n-pull.mjs
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env node
|
||||
// Usage: node tools/n8n-pull.mjs [workflowId] [outputFile]
|
||||
// GET un workflow n8n et l'écrit en JSON (pretty) dans un fichier local.
|
||||
// Clé API lue depuis ~/.config/opencode/opencode.json (mcp.n8n-mcp.environment).
|
||||
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
|
||||
const WORKFLOW_ID = process.argv[2] || 'ATswvGfG4KJUls0K';
|
||||
const OUT = process.argv[3] || `workflows/pull-${WORKFLOW_ID}.json`;
|
||||
|
||||
function loadApiConfig() {
|
||||
if (process.env.N8N_API_KEY) {
|
||||
return {
|
||||
url: process.env.N8N_URL || 'https://n8n.airtria.pro',
|
||||
key: process.env.N8N_API_KEY
|
||||
};
|
||||
}
|
||||
const cfgPath = path.join(os.homedir(), '.config/opencode/opencode.json');
|
||||
const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf8'));
|
||||
const env = cfg?.mcp?.['n8n-mcp']?.environment || {};
|
||||
if (!env.N8N_API_KEY) {
|
||||
console.error('Clé API n8n introuvable (env N8N_API_KEY ou opencode.json)');
|
||||
process.exit(1);
|
||||
}
|
||||
return {
|
||||
url: (env.N8N_API_URL || 'https://n8n.airtria.pro/api/v1').replace(/\/api\/v1\/?$/, ''),
|
||||
key: env.N8N_API_KEY
|
||||
};
|
||||
}
|
||||
|
||||
const { url, key } = loadApiConfig();
|
||||
|
||||
const res = await fetch(`${url}/api/v1/workflows/${WORKFLOW_ID}`, {
|
||||
headers: { 'X-N8N-API-KEY': key }
|
||||
});
|
||||
if (!res.ok) {
|
||||
console.error(`GET échoué: ${res.status} ${res.statusText}`);
|
||||
console.error(await res.text());
|
||||
process.exit(1);
|
||||
}
|
||||
const wf = await res.json();
|
||||
fs.mkdirSync(path.dirname(OUT), { recursive: true });
|
||||
fs.writeFileSync(OUT, JSON.stringify(wf, null, 2) + '\n');
|
||||
console.log(`OK: "${wf.name}" (${wf.nodes?.length} nodes, active=${wf.active}) -> ${OUT}`);
|
||||
console.log(`updatedAt: ${wf.updatedAt}`);
|
||||
Reference in New Issue
Block a user