116 lines
3.7 KiB
Bash
Executable File
116 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# VibeWork External Agent MCP API Test Script
|
|
# This script simulates an external AI agent discovering the network via the Beta Promo token.
|
|
|
|
API_URL=${1:-"https://agent.wooo.work"}
|
|
API_KEY="${MCP_API_KEY:-vw_beta_promo_2026}"
|
|
AGENT_ID="${MCP_AGENT_ID:-test_agent_$(date +%s)}"
|
|
DEVELOPER_WALLET="${MCP_DEVELOPER_WALLET:-acct_demoagent001}"
|
|
SUBMIT="${MCP_DO_SUBMIT:-0}"
|
|
SUBMIT_DELAY_MS="${MCP_SUBMIT_DELAY_MS:-1500}"
|
|
|
|
echo "🚀 Simulating External AI Agent connecting to $API_URL"
|
|
echo "🔑 Using Public Beta Token: $API_KEY"
|
|
echo "🤖 Agent ID: $AGENT_ID"
|
|
echo "💳 Wallet: $DEVELOPER_WALLET"
|
|
echo "---------------------------------------------------"
|
|
|
|
# 1. Fetch Open Tasks
|
|
echo "👉 1. Fetching Open Tasks (list_open_tasks)..."
|
|
TASKS_RESPONSE=$(curl -s -X POST "$API_URL/api/mcp/list_open_tasks" \
|
|
-H "Authorization: Bearer $API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-H "x-agent-id: $AGENT_ID" \
|
|
-d '{"skills": []}')
|
|
|
|
TOTAL_OPEN=$(echo $TASKS_RESPONSE | grep -o '"total_open":[0-9]*' | cut -d':' -f2)
|
|
|
|
if [ -z "$TOTAL_OPEN" ]; then
|
|
echo "❌ Error parsing list_open_tasks response:"
|
|
echo $TASKS_RESPONSE
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Found $TOTAL_OPEN open tasks."
|
|
|
|
if [ "$TOTAL_OPEN" -eq "0" ]; then
|
|
echo "⚠️ No open tasks available to claim. Stopping test."
|
|
exit 0
|
|
fi
|
|
|
|
# 2. Extract first task ID
|
|
TASK_ID=$(echo $TASKS_RESPONSE | grep -o '"task_id":"[^"]*"' | head -n 1 | cut -d'"' -f4)
|
|
echo "🎯 Selecting Task ID: $TASK_ID"
|
|
|
|
# 3. Claim the task
|
|
echo "👉 2. Claiming Task (claim_task)..."
|
|
CLAIM_RESPONSE=$(curl -s -X POST "$API_URL/api/mcp/claim_task" \
|
|
-H "Authorization: Bearer $API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-H "x-agent-id: $AGENT_ID" \
|
|
-d '{
|
|
"task_id": "'"$TASK_ID"'",
|
|
"agent_id": "'"$AGENT_ID"'",
|
|
"developer_wallet": "'"$DEVELOPER_WALLET"'"
|
|
}')
|
|
|
|
CLAIM_TOKEN=$(echo $CLAIM_RESPONSE | grep -o '"claim_token":"[^"]*"' | cut -d'"' -f4)
|
|
CLAIM_STATUS=$(echo $CLAIM_RESPONSE | grep -o '"status":"[^"]*"' | head -n 1 | cut -d'"' -f4)
|
|
TASK_LOCK_STATUS=$(echo $CLAIM_RESPONSE | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
|
|
ERROR_MSG=$(echo $CLAIM_RESPONSE | grep -o '"error":"[^"]*"' | cut -d'"' -f4)
|
|
|
|
if [ -n "$ERROR_MSG" ]; then
|
|
echo "❌ Failed to claim task: $ERROR_MSG"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$ERROR_MSG" ] || [ -z "$CLAIM_TOKEN" ]; then
|
|
echo "❌ Claim failed. Status=$CLAIM_STATUS Error=$ERROR_MSG"
|
|
echo "📄 Response: $CLAIM_RESPONSE"
|
|
if [ "$SUBMIT" = "1" ]; then
|
|
exit 1
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
echo "✅ Task claimed successfully! Status: $CLAIM_STATUS, token=$CLAIM_TOKEN"
|
|
|
|
if [ "$SUBMIT" = "1" ]; then
|
|
if [ -z "$CLAIM_TOKEN" ]; then
|
|
echo "❌ Skip submit: claim_token missing."
|
|
exit 1
|
|
fi
|
|
|
|
echo "👉 3. Submitting Solution (submit_solution)..."
|
|
if [ "$SUBMIT_DELAY_MS" -gt 0 ]; then
|
|
sleep_time=$(echo "$SUBMIT_DELAY_MS" | awk 'BEGIN{FS=1} {printf "%f", $1/1000}')
|
|
sleep "$sleep_time"
|
|
fi
|
|
SUBMIT_RESPONSE=$(curl -s -X POST "$API_URL/api/mcp/submit_solution" \
|
|
-H "Authorization: Bearer $API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-H "x-agent-id: $AGENT_ID" \
|
|
-d '{
|
|
"task_id": "'"$TASK_ID"'",
|
|
"claim_token": "'"$CLAIM_TOKEN"'",
|
|
"deliverables": {
|
|
"README.md": "Automated verification from external test agent."
|
|
},
|
|
"github_pr_url": "https://github.com/example/agent-task-demo/pull/999"
|
|
}')
|
|
|
|
SUBMIT_STATUS=$(echo $SUBMIT_RESPONSE | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
|
|
SUBMIT_ERROR=$(echo $SUBMIT_RESPONSE | grep -o '"error":"[^"]*"' | cut -d'"' -f4)
|
|
|
|
if [ -n "$SUBMIT_ERROR" ]; then
|
|
echo "❌ Failed to submit solution: $SUBMIT_ERROR"
|
|
echo $SUBMIT_RESPONSE
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Solution submitted successfully. Status: $SUBMIT_STATUS"
|
|
fi
|
|
|
|
echo "🎉 Test pipeline passed!"
|