{ "name": "robeing-github-service-request", "nodes": [ { "parameters": { "httpMethod": "POST", "path": "skills/github/request", "responseMode": "responseNode", "options": {} }, "id": "gh-req-001", "name": "Webhook In", "type": "n8n-nodes-base.webhook", "typeVersion": 1, "position": [200, 260] }, { "parameters": { "jsCode": "const body = $json.body || {};\nreturn {\n intent: body.intent || '',\n slots: body.slots || {},\n user_id: body.user_id || '',\n channel: body.channel || 'slack',\n robeing_id: body.robeing_id || 'rb8001'\n};" }, "id": "gh-req-002", "name": "Normalize Payload", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [440, 260] }, { "parameters": { "jsCode": "const validIntents = new Set(['github_analyze', 'github_manage', 'git_ops']);\nreturn {\n ...$json,\n valid_intent: validIntents.has($json.intent)\n};" }, "id": "gh-req-003", "name": "Validate Intent", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [700, 260] }, { "parameters": { "conditions": { "boolean": [ { "value1": "={{ $json.valid_intent }}" } ] } }, "id": "gh-req-004", "name": "Intent OK?", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [940, 260] }, { "parameters": { "jsCode": "const slots = $json.slots || {};\nconst risk = slots.risk_level || 'low';\nconst requiresConfirmation = Boolean(slots.requires_confirmation);\nconst criticalActions = new Set(['force_push', 'reset_hard', 'delete_branch', 'delete_release']);\nconst action = slots.action || '';\nreturn {\n ...$json,\n risk_level: risk,\n denied: criticalActions.has(action) || risk === 'critical',\n requires_confirmation: requiresConfirmation || risk === 'high'\n};" }, "id": "gh-req-005", "name": "Risk Decision", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [1180, 260] }, { "parameters": { "conditions": { "boolean": [ { "value1": "={{ $json.denied }}" } ] } }, "id": "gh-req-006", "name": "Denied?", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [1420, 180] }, { "parameters": { "conditions": { "boolean": [ { "value1": "={{ $json.requires_confirmation }}" } ] } }, "id": "gh-req-007", "name": "Needs Confirmation?", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [1420, 360] }, { "parameters": { "conditions": { "string": [ { "value1": "={{ $json.intent }}", "operation": "equals", "value2": "github_analyze" } ] } }, "id": "gh-req-008", "name": "Route Analyze", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [1660, 500] }, { "parameters": { "conditions": { "string": [ { "value1": "={{ $json.intent }}", "operation": "equals", "value2": "github_manage" } ] } }, "id": "gh-req-009", "name": "Route Manage", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [1900, 560] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: false, message: 'unknown_intent', intent: $json.intent } }}" }, "id": "gh-req-010", "name": "Reject Unknown Intent", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [1180, 420] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: false, message: 'critical_action_denied', intent: $json.intent, slots: $json.slots } }}" }, "id": "gh-req-011", "name": "Reject Critical", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [1660, 120] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: false, message: 'confirmation_required', intent: $json.intent, slots: $json.slots } }}" }, "id": "gh-req-012", "name": "Return Confirmation", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [1660, 320] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: true, dispatch: 'analyze_target', intent: $json.intent, slots: $json.slots } }}" }, "id": "gh-req-013", "name": "Dispatch Analyze", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [1900, 460] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: true, dispatch: 'manage_resource', intent: $json.intent, slots: $json.slots } }}" }, "id": "gh-req-014", "name": "Dispatch Manage", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [2140, 520] }, { "parameters": { "respondWith": "json", "responseBody": "={{ { success: true, dispatch: 'run_git_operation', intent: $json.intent, slots: $json.slots } }}" }, "id": "gh-req-015", "name": "Dispatch Git Ops", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [2140, 620] } ], "connections": { "Webhook In": { "main": [ [ { "node": "Normalize Payload", "type": "main", "index": 0 } ] ] }, "Normalize Payload": { "main": [ [ { "node": "Validate Intent", "type": "main", "index": 0 } ] ] }, "Validate Intent": { "main": [ [ { "node": "Intent OK?", "type": "main", "index": 0 } ] ] }, "Intent OK?": { "main": [ [ { "node": "Risk Decision", "type": "main", "index": 0 } ], [ { "node": "Reject Unknown Intent", "type": "main", "index": 0 } ] ] }, "Risk Decision": { "main": [ [ { "node": "Denied?", "type": "main", "index": 0 } ] ] }, "Denied?": { "main": [ [ { "node": "Reject Critical", "type": "main", "index": 0 } ], [ { "node": "Needs Confirmation?", "type": "main", "index": 0 } ] ] }, "Needs Confirmation?": { "main": [ [ { "node": "Return Confirmation", "type": "main", "index": 0 } ], [ { "node": "Route Analyze", "type": "main", "index": 0 } ] ] }, "Route Analyze": { "main": [ [ { "node": "Dispatch Analyze", "type": "main", "index": 0 } ], [ { "node": "Route Manage", "type": "main", "index": 0 } ] ] }, "Route Manage": { "main": [ [ { "node": "Dispatch Manage", "type": "main", "index": 0 } ], [ { "node": "Dispatch Git Ops", "type": "main", "index": 0 } ] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "robeing-skills" } }