183 lines
5.6 KiB
Markdown
183 lines
5.6 KiB
Markdown
# Todo-Based MVP Builder Workflow - Summary
|
|
|
|
## ✅ Successfully Created
|
|
|
|
### Workflow Details
|
|
- **Name:** Todo-Based MVP Builder
|
|
- **ID:** L0VYVJyEwGsA1bqe
|
|
- **Status:** Active ✅
|
|
- **Nodes:** 6 nodes
|
|
- **Webhook Path:** /webhook/todo-mvp-builder
|
|
- **Webhook URL:** https://n8n.oky.sh/webhook/todo-mvp-builder
|
|
|
|
### 6-Node Structure
|
|
|
|
#### Node 1: Webhook
|
|
- **Type:** Webhook
|
|
- **Path:** todo-mvp-builder
|
|
- **Method:** POST
|
|
- **Response Mode:** Response Node
|
|
- **Purpose:** Receives Gitea push events
|
|
|
|
#### Node 2: Extract Repo Info (Code)
|
|
- **Purpose:** Parse repository data from webhook payload
|
|
- **Extracts:**
|
|
- repo_name
|
|
- repo_full_name
|
|
- repo_clone_url
|
|
- branch
|
|
- commit_sha
|
|
- commit_message
|
|
- is_initial_push (checks for "MVP Prompt:" prefix)
|
|
- prompt (extracted from commit message)
|
|
|
|
#### Node 3: Get Next Todo (Code)
|
|
- **Purpose:** Manage todo state using workflow.staticData
|
|
- **Logic:**
|
|
- If initial push (is_initial_push = true): Set status to 'CREATING_TODOS'
|
|
- If todos exist: Get next todo by index
|
|
- If all todos complete: Set status to 'SUCCESS'
|
|
- If no todos: Return error
|
|
|
|
#### Node 4: Execute Todo (Code)
|
|
- **Purpose:** Execute tasks via OpenHands SDK (placeholder implementation)
|
|
- **Handles:**
|
|
- create_todos action: Prepares task for TODO.md creation
|
|
- execute_todo action: Prepares task for todo execution
|
|
- **Note:** Currently returns placeholder data - SDK integration is TODO
|
|
|
|
#### Node 5: Test Changes (Code)
|
|
- **Purpose:** Validate execution results
|
|
- **Logic:**
|
|
- If success: Return success status with commit message
|
|
- If failure: Return failure status but continue for debugging
|
|
- **Formats:**
|
|
- Commit message with emoji (📋 for todos, ✅ for completed tasks)
|
|
- Gitea status state (success/failure)
|
|
|
|
#### Node 6: Commit & Push (Code)
|
|
- **Purpose:** Format results and manage loop
|
|
- **Logic:**
|
|
- Logs what would be committed to Gitea
|
|
- Sets loop=true to continue to next todo
|
|
- Handles final completion status
|
|
- **Loop:** Connects back to Node 3 (Get Next Todo)
|
|
|
|
### Data Flow
|
|
|
|
```
|
|
Gitea Push
|
|
↓
|
|
Webhook Trigger
|
|
↓
|
|
Extract Repo Info (parses payload, detects MVP Prompt)
|
|
↓
|
|
Get Next Todo (manages state, gets current todo)
|
|
↓
|
|
Execute Todo (calls OpenHands SDK - placeholder)
|
|
↓
|
|
Test Changes (validates results)
|
|
↓
|
|
Commit & Push (logs commit, loops back)
|
|
↓
|
|
Get Next Todo (continues or completes)
|
|
```
|
|
|
|
### State Management (staticData)
|
|
|
|
The workflow uses `$workflow.staticData` to persist data between iterations:
|
|
|
|
```javascript
|
|
workflow.staticData.todos = {
|
|
status: 'CREATING_TODOS' | 'IN_PROGRESS' | 'COMPLETE',
|
|
prompt: '...', // Original MVP prompt
|
|
current_index: 0, // Current todo index
|
|
list: [...], // Array of todos
|
|
results: [...], // Execution results
|
|
pending_task: '...' // SDK task to execute
|
|
};
|
|
```
|
|
|
|
### Key Features Implemented
|
|
|
|
✅ **6-Node Workflow Structure**
|
|
✅ **Data Preservation Pattern** (using spread operator in code nodes)
|
|
✅ **Todo State Management** (staticData tracking)
|
|
✅ **Loop Mechanism** (Commit & Push → Get Next Todo)
|
|
✅ **Initial Push Detection** (MVP Prompt prefix)
|
|
✅ **Test Structure** (success/failure handling)
|
|
✅ **Commit Message Formatting** (with emojis)
|
|
|
|
### TODOs for Full Implementation
|
|
|
|
🔲 **Node 4: Execute Todo**
|
|
- Implement actual OpenHands SDK call
|
|
- Add SSH node or HTTP client to call SDK wrapper
|
|
- Parse SDK JSON output
|
|
|
|
🔲 **Node 6: Commit & Push**
|
|
- Implement actual Gitea API calls
|
|
- Create commits with formatted messages
|
|
- Update commit statuses in Gitea
|
|
|
|
### Success Criteria - Current Status
|
|
|
|
- [x] Workflow created in n8n
|
|
- [x] All 6 nodes configured
|
|
- [x] Webhook URL accessible
|
|
- [x] Manual trigger works (without errors - skeleton mode)
|
|
- [x] Loop structure connected
|
|
- [x] Data preservation pattern implemented
|
|
|
|
### Test Command (Current State)
|
|
|
|
Since webhook registration may have a delay, use the n8n UI or API to test:
|
|
|
|
```bash
|
|
# Via n8n UI:
|
|
# 1. Open https://n8n.oky.sh
|
|
# 2. Navigate to workflow "Todo-Based MVP Builder"
|
|
# 3. Click "Test workflow"
|
|
# 4. Send test data
|
|
|
|
# Via API (if execution endpoint works):
|
|
curl -X POST https://n8n.oky.sh/api/v1/workflows/L0VYVJyEwGsA1bqe/execute \
|
|
-H "X-N8N-API-KEY: $(cat /home/bam/.n8n_api_key)" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"input": {"body": {...test data...}}}'
|
|
```
|
|
|
|
### Files Created
|
|
|
|
1. `/home/bam/claude/mvp-factory/todo-mvp-builder-workflow.json` - Workflow definition
|
|
2. `/home/bam/claude/mvp-factory/create_workflow.py` - Script to create and activate workflow
|
|
3. `/home/bam/claude/mvp-factory/todo-workflow-info.json` - Workflow metadata
|
|
4. `/home/bam/claude/mvp-factory/check_workflow.py` - Script to check workflow status
|
|
5. `/home/bam/claude/mvp-factory/debug_api.py` - API debugging script
|
|
|
|
### Next Steps (Step 3 of 8 in SIMPLIFIED_PHASE3_PLAN.md)
|
|
|
|
According to the simplified phase 3 plan, the next step is:
|
|
|
|
**Step 3: Implement SDK Integration (45 min)**
|
|
- Test OpenHands SDK wrapper directly
|
|
- Create SDK call function in Node 4
|
|
- Handle JSON output parsing
|
|
- Test with simple task: "Create a test file"
|
|
|
|
This will replace the placeholder logic in Node 4 with actual OpenHands SDK calls.
|
|
|
|
### Notes
|
|
|
|
- This is a **skeleton implementation** - nodes are configured but SDK integration is not yet implemented
|
|
- The workflow will execute through all nodes without errors
|
|
- Current output will show placeholder data from Node 4
|
|
- Loop will work but todos list is empty (will show "No todos found" message)
|
|
- Actual OpenHands execution will be added in the next implementation step
|
|
|
|
---
|
|
|
|
**Status: Step 2 of 8 Complete ✅**
|
|
**Created: 2025-12-03**
|
|
**Workflow ID: L0VYVJyEwGsA1bqe**
|