LOGOS-SPCW-Matroska / antigravity_workflow.json
GitHub Copilot
Protocol 22: Update HF Inference to Router endpoint
edae06c
{
"name": "Antigravity Image Research Extractor",
"nodes": [
{
"parameters": {
"path": "C:/Users/Nauti/Desktop/LOGOS CURSOR/LOGOS Notes",
"fileExtensions": "jpg,jpeg,png,pdf,heic",
"options": {
"recurse": true
}
},
"id": "image_scanner",
"name": "Scan Images (Notes)",
"type": "n8n-nodes-base.readFilesFromFolder",
"position": [
250,
300
]
},
{
"parameters": {
"jsCode": "// ROUTER: Classify images for specialized analysis\nconst images = items.map(item => {\n const fileName = item.json.fileName;\n const fileSize = item.json.size || 0;\n \n let taskType = 'general_vision';\n let priority = 1;\n \n // Route by filename patterns and size\n if (fileName.includes('diagram') || fileName.includes('sketch')) {\n taskType = 'diagram_analysis';\n priority = 3;\n } else if (fileName.includes('note') || fileName.includes('handwritten')) {\n taskType = 'handwriting_ocr';\n priority = 2;\n } else if (fileName.includes('ui') || fileName.includes('interface')) {\n taskType = 'ui_analysis';\n priority = 3;\n } else if (fileSize < 500000) {\n taskType = 'handwriting_ocr'; // Smaller files likely notes\n priority = 2;\n } else {\n taskType = 'diagram_analysis'; // Larger files likely detailed diagrams\n priority = 3;\n }\n \n return {\n json: {\n fileName,\n taskType,\n priority,\n fullPath: item.json.directory + '/' + fileName,\n fileSize\n },\n binary: item.binary\n };\n});\n\nreturn images;"
},
"id": "router",
"name": "Neural Router",
"type": "n8n-nodes-base.code",
"position": [
450,
300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false
},
"conditions": [
{
"id": "handwriting_path",
"leftValue": "={{ $json.taskType }}",
"rightValue": "handwriting_ocr",
"operator": {
"type": "string",
"operation": "equals"
}
},
{
"id": "diagram_path",
"leftValue": "={{ $json.taskType }}",
"rightValue": "diagram_analysis",
"operator": {
"type": "string",
"operation": "equals"
}
},
{
"id": "ui_path",
"leftValue": "={{ $json.taskType }}",
"rightValue": "ui_analysis",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"options": {}
},
"id": "switch",
"name": "Task Switch",
"type": "n8n-nodes-base.switch",
"position": [
650,
300
]
},
{
"parameters": {
"method": "POST",
"url": "https://api-inference.huggingface.co/models/microsoft/trocr-base-handwritten",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"inputs\": \"{{ $binary.data.toString('base64') }}\"\n}",
"options": {}
},
"id": "ocr_analyst",
"name": "OCR Handwriting (TrOCR)",
"type": "n8n-nodes-base.httpRequest",
"position": [
850,
200
]
},
{
"parameters": {
"method": "POST",
"url": "http://localhost:1234/v1/chat/completions",
"authentication": "none",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"model\": \"llava-v1.6-mistral-7b\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a technical diagram analyst specializing in geometry, polyforms, and compression systems. Identify: 1) Mathematical concepts shown, 2) Geometric shapes/polyhedra types, 3) Compression techniques mentioned, 4) UI/workflow elements. Output structured JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Analyze this diagram from {{ $json.fileName }}. Focus on polyform development, compression methods, and UI design.\"\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"data:image/jpeg;base64,{{ $binary.data.toString('base64') }}\"\n }\n }\n ]\n }\n ],\n \"temperature\": 0.2,\n \"max_tokens\": 1500\n}",
"options": {}
},
"id": "diagram_analyst",
"name": "Diagram Analyst (LLaVA)",
"type": "n8n-nodes-base.httpRequest",
"position": [
850,
300
]
},
{
"parameters": {
"method": "POST",
"url": "http://localhost:1234/v1/chat/completions",
"authentication": "none",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"model\": \"llava-v1.6-mistral-7b\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a UI/UX analyst. Extract: 1) Interface components shown, 2) Interaction patterns, 3) Data visualization methods, 4) Success indicators mentioned, 5) User workflow steps. Output structured JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Analyze UI design from {{ $json.fileName }}. Identify successful patterns for polyform visualization and user interaction.\"\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"data:image/jpeg;base64,{{ $binary.data.toString('base64') }}\"\n }\n }\n ]\n }\n ],\n \"temperature\": 0.3,\n \"max_tokens\": 1200\n}",
"options": {}
},
"id": "ui_analyst",
"name": "UI Analyst (LLaVA)",
"type": "n8n-nodes-base.httpRequest",
"position": [
850,
400
]
},
{
"parameters": {
"mode": "mergeByPosition",
"options": {}
},
"id": "merge",
"name": "Merge Analysis",
"type": "n8n-nodes-base.merge",
"position": [
1050,
300
]
},
{
"parameters": {
"jsCode": "// SYNTHESIS: Parse vision model responses and structure results\nconst results = items.map(item => {\n let analysis = {};\n \n try {\n // Handle TrOCR response (array format)\n if (Array.isArray(item.json)) {\n analysis = {\n extracted_text: item.json[0]?.generated_text || item.json.toString(),\n confidence: item.json[0]?.score || 0.8\n };\n }\n // Handle LLaVA response (OpenAI format)\n else if (item.json.choices) {\n const content = item.json.choices[0]?.message?.content || '{}';\n analysis = JSON.parse(content);\n }\n // Handle direct JSON response\n else if (typeof item.json === 'object') {\n analysis = item.json;\n }\n else {\n analysis = { raw_response: JSON.stringify(item.json) };\n }\n } catch (e) {\n analysis = {\n raw_response: JSON.stringify(item.json),\n parse_error: true,\n error_detail: e.message\n };\n }\n \n return {\n json: {\n file: item.json.fileName || 'unknown',\n taskType: item.json.taskType,\n analysis,\n timestamp: new Date().toISOString()\n }\n };\n});\n\nreturn results;"
},
"id": "synthesizer",
"name": "Synthesizer",
"type": "n8n-nodes-base.code",
"position": [
1250,
300
]
},
{
"parameters": {
"method": "POST",
"url": "http://localhost:1234/v1/chat/completions",
"authentication": "none",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"model\": \"nvidia/nemotron-3-nano\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are the RESEARCH SYNTHESIZER for a polyform compression project. Analyze handwritten notes and diagrams to extract: 1) POLYFORM TYPES (Platonic, Archimedean, Johnson, near-miss solids, geodesics), 2) COMPRESSION METHODS (vertex encoding, edge compression, spheroid nets), 3) SUCCESSFUL UI PATTERNS from iterations, 4) MATHEMATICAL INSIGHTS (topology, manifolds, optimization), 5) CRITICAL GAPS to address. Output: Executive Summary, Key Findings by Category, Priority Next Steps, Integration Opportunities.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Synthesize these image analyses from research notes:\\n\\n{{ JSON.stringify($json) }}\\n\\nFocus on actionable insights for building the polyform generator and compression library.\"\n }\n ],\n \"temperature\": 0.3,\n \"max_tokens\": 3000\n}",
"options": {}
},
"id": "jury",
"name": "Jury Consensus (Nemotron)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1450,
300
]
},
{
"parameters": {
"operation": "write",
"fileName": "=/tmp/polyform_research_{{ DateTime.now().toFormat('yyyyMMdd_HHmmss') }}.json",
"options": {}
},
"id": "save_results",
"name": "Save Research Synthesis",
"type": "n8n-nodes-base.writeFile",
"position": [
1650,
300
]
}
],
"connections": {
"image_scanner": {
"main": [
[
{
"node": "router",
"type": "main",
"index": 0
}
]
]
},
"router": {
"main": [
[
{
"node": "switch",
"type": "main",
"index": 0
}
]
]
},
"switch": {
"main": [
[
{
"node": "ocr_analyst",
"type": "main",
"index": 0
}
],
[
{
"node": "diagram_analyst",
"type": "main",
"index": 0
}
],
[
{
"node": "ui_analyst",
"type": "main",
"index": 0
}
]
]
},
"ocr_analyst": {
"main": [
[
{
"node": "merge",
"type": "main",
"index": 0
}
]
]
},
"diagram_analyst": {
"main": [
[
{
"node": "merge",
"type": "main",
"index": 1
}
]
]
},
"ui_analyst": {
"main": [
[
{
"node": "merge",
"type": "main",
"index": 2
}
]
]
},
"merge": {
"main": [
[
{
"node": "synthesizer",
"type": "main",
"index": 0
}
]
]
},
"synthesizer": {
"main": [
[
{
"node": "jury",
"type": "main",
"index": 0
}
]
]
},
"jury": {
"main": [
[
{
"node": "save_results",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}