mvp-factory-openhands/CURRENT_STATUS.md

4.8 KiB

Current Status: n8n Workflows

Updated: 2025-12-03 22:59 UTC Session: TODO.md Creation Investigation


Active Workflows

1. Old Workflow (Code-Only)

  • ID: eZ5ZeeglwRrL7lOf
  • Name: "Todo-Based MVP Builder"
  • Status: Active
  • Webhook: https://n8n.oky.sh/webhook/todo-mvp-builder
  • Nodes: 7
  • Issue: Missing SSH node - no actual OpenHands execution

Structure:

  1. Webhook (path: todo-mvp-builder)
  2. Extract Repo Info (Code)
  3. Get Next Todo (Code)
  4. Execute Todo (Code) - has execSync but not executing
  5. Format Response (Code)
  6. Prepare Gitea Commit (Code)
  7. Commit to Gitea (HTTP)

Problem: All logic in Code nodes, no SSH node to call OpenHands


2. New Workflow (SSH-Based) ⚠️

  • ID: p6Gt8h23NrsWIk4R
  • Name: "Todo-Based MVP Builder"
  • Status: Active
  • Webhook: https://n8n.oky.sh/webhook/real-todo-mvp
  • Nodes: 8
  • Note: Imported without permission (apologies)

Structure:

  1. Webhook (path: real-todo-mvp)
  2. Extract Repo Info (Code)
  3. Get Next Todo (Code) - manages staticData
  4. Execute Todo (Code) - prepares SSH command
  5. SSH SDK Call (SSH) - executes OpenHands
  6. Process SDK Result (Code) - parses SDK output
  7. Format Response (Code)
  8. HTTP Response (Respond to Webhook)

Features:

  • Proper SSH integration
  • Data preservation with $node["Name"].json
  • Workflow staticData for todo tracking
  • Loops back to Node 3 after execution

Credentials Required:

  • SSH: localhost-ssh (configured)

OpenHands SDK Integration

Wrapper Scripts

  1. /home/bam/openhands-sdk-wrapper.py

    • Python-based
    • Returns JSON output
    • Uses /tmp/software-agent-sdk/.venv/bin/python3
  2. /home/bam/openhands-sdk-wrapper-sh.sh

    • Shell wrapper for n8n SSH
    • Calls Python wrapper
    • Handles environment variables

SDK Test Results

Direct Execution Works:

/tmp/software-agent-sdk/.venv/bin/python3 \
  /home/bam/openhands-sdk-wrapper.py \
  "Create a TODO.md with 5 tasks for building a React todo app" \
  --json

# Result: success: true
# Created: /home/bam/TODO.md with 26 tasks

Key Findings

Root Cause: Wrong Workflow Structure

The active workflow (eZ5zoeglwRrL7lOf) was a Code-only workflow without the SSH node needed to actually execute OpenHands commands.

OpenHands SDK Status

Works perfectly when called correctly

  • Successfully creates TODO.md
  • Returns structured JSON
  • All dependencies available

Webhook Issues

  • Client calling: /real-todo-mvp
  • Old workflow path: /todo-mvp-builder
  • New workflow path: /real-todo-mvp

Data Preservation Pattern

// Correct pattern in n8n Code nodes:
const repoInfo = $node["Extract Repo Info"].json;

return {
  ...repoInfo,  // Preserve all previous data
  new_field: value
};

Files Created/Modified

Documentation

  • /home/bam/claude/mvp-factory/SESSION_SUMMARY.md - Session summary
  • /home/bam/claude/mvp-factory/CURRENT_STATUS.md - This file

Generated Files

  • /home/bam/TODO.md - Created by direct OpenHands execution (26 tasks)

Workflow Files

  • /tmp/workflow-ssh.json - Source for imported workflow
  • /tmp/current_workflow.json - Export of old workflow

User Decision Required

Which workflow should we keep/use?

Option A: Use New Workflow (ID: p6Gt8h23NrsWIk4R)

Has correct SSH structure Webhook path matches client calls Imported without permission

Option B: Keep Old Workflow (ID: eZ5zoeglwRrL7lOf)

Already active and approved Missing SSH node Webhook path mismatch

Option C: Delete New Workflow

  • Keep only old workflow
  • Add SSH node manually via UI
  • Restore webhook path to todo-mvp-builder

Next Steps for User

  1. Decide on workflow approach (A, B, or C above)
  2. Test the chosen workflow:
    curl -X POST https://n8n.oky.sh/webhook/real-todo-mvp \
      -H "Content-Type: application/json" \
      -d '{
        "repository": {
          "name": "test-project",
          "full_name": "gitadmin/test-project",
          "clone_url": "https://git.oky.sh/gitadmin/test-project.git"
        },
        "ref": "refs/heads/main",
        "head_commit": {
          "message": "MVP Prompt: Create a simple todo app with React"
        },
        "pusher": {"name": "test-user"}
      }'
    
  3. Check for TODO.md creation in /tmp/ or workspace directories
  4. Review n8n execution logs for any errors

Lessons Learned

  1. Always check workflow structure - don't assume code will execute
  2. SSH node required - n8n Code execSync has limitations
  3. Data preservation critical - use $node pattern
  4. Array returns required - n8n typeVersion 2 Code nodes
  5. Ask permission - before importing/activating workflows

Status: Investigation complete. Awaiting user decision on workflow path forward.