| #!/usr/bin/env bash |
| |
| |
|
|
| set -e |
|
|
| SPACE_URL="${1:-https://itachi1824-compliance-auditor-env.hf.space}" |
| BOLD='\033[1m' |
| GREEN='\033[0;32m' |
| RED='\033[0;31m' |
| NC='\033[0m' |
|
|
| pass() { echo -e " ${GREEN}✓${NC} $1"; } |
| fail() { echo -e " ${RED}✗${NC} $1"; exit 1; } |
|
|
| echo -e "${BOLD}Pre-submission validation${NC}" |
| echo "Space: $SPACE_URL" |
| echo "" |
|
|
| |
| echo -e "${BOLD}Step 1/5: Required files${NC}" |
| [ -f "inference.py" ] && pass "inference.py" || fail "inference.py missing" |
| [ -f "Dockerfile" ] && pass "Dockerfile" || fail "Dockerfile missing" |
| [ -f "openenv.yaml" ] && pass "openenv.yaml" || fail "openenv.yaml missing" |
| [ -f "README.md" ] && pass "README.md" || fail "README.md missing" |
| [ -f "pyproject.toml" ] && pass "pyproject.toml" || fail "pyproject.toml missing" |
| [ -f "models.py" ] && pass "models.py" || fail "models.py missing" |
| [ -f "client.py" ] && pass "client.py" || fail "client.py missing" |
| [ -d "server" ] && pass "server/" || fail "server/ missing" |
|
|
| |
| echo "" |
| echo -e "${BOLD}Step 2/5: openenv validate${NC}" |
| if command -v openenv &>/dev/null || python -m openenv.cli validate &>/dev/null; then |
| python -m openenv.cli validate 2>&1 | grep -q "OK" && pass "openenv validate" || fail "openenv validate failed" |
| else |
| echo " ⚠ openenv CLI not installed, skipping" |
| fi |
|
|
| |
| echo "" |
| echo -e "${BOLD}Step 3/5: Space health${NC}" |
| HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$SPACE_URL/health") |
| [ "$HTTP_CODE" = "200" ] && pass "/health returns 200" || fail "/health returned $HTTP_CODE" |
|
|
| TASKS=$(curl -s "$SPACE_URL/tasks" | python -c "import sys,json; print(len(json.load(sys.stdin)['tasks']))" 2>/dev/null) |
| [ "$TASKS" -ge 3 ] && pass "/tasks returns $TASKS tasks (>=3)" || fail "Only $TASKS tasks (need 3+)" |
|
|
| |
| echo "" |
| echo -e "${BOLD}Step 4/5: Reset + API${NC}" |
| RESET=$(curl -s -X POST "$SPACE_URL/api/reset" -H "Content-Type: application/json" -d '{"difficulty":"easy"}') |
| SID=$(echo "$RESET" | python -c "import sys,json; print(json.load(sys.stdin)['session_id'])" 2>/dev/null) |
| [ -n "$SID" ] && pass "/api/reset creates session" || fail "/api/reset failed" |
|
|
| TOOL=$(curl -s -X POST "$SPACE_URL/api/call_tool" -H "Content-Type: application/json" -d "{\"session_id\":\"$SID\",\"tool_name\":\"get_system_overview\",\"arguments\":{}}") |
| echo "$TOOL" | python -c "import sys,json; d=json.load(sys.stdin); assert 'result' in d" 2>/dev/null && pass "/api/call_tool works" || fail "/api/call_tool failed" |
|
|
| |
| echo "" |
| echo -e "${BOLD}Step 5/5: Stdout format${NC}" |
| grep -q "API_BASE_URL" inference.py && pass "API_BASE_URL in inference.py" || fail "Missing API_BASE_URL" |
| grep -q "MODEL_NAME" inference.py && pass "MODEL_NAME in inference.py" || fail "Missing MODEL_NAME" |
| grep -q "HF_TOKEN" inference.py && pass "HF_TOKEN in inference.py" || fail "Missing HF_TOKEN" |
| grep -q '\[START\]' inference.py && pass "[START] format present" || fail "Missing [START]" |
| grep -q '\[STEP\]' inference.py && pass "[STEP] format present" || fail "Missing [STEP]" |
| grep -q '\[END\]' inference.py && pass "[END] format present" || fail "Missing [END]" |
|
|
| echo "" |
| echo -e "${BOLD}========================================${NC}" |
| echo -e "${GREEN}${BOLD} All checks passed!${NC}" |
| echo -e "${GREEN}${BOLD} Ready to submit.${NC}" |
| echo -e "${BOLD}========================================${NC}" |
|
|