Files
Fu-Jie_openwebui-extensions/plugins/debug/copilot-sdk/run_owui_api_docs_phases.sh

138 lines
5.4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# run_owui_api_docs_phases.sh
# One-click runner: generate OpenWebUI API documentation across 8 phases.
#
# Usage:
# ./plugins/debug/copilot-sdk/run_owui_api_docs_phases.sh
# ./plugins/debug/copilot-sdk/run_owui_api_docs_phases.sh --start-phase 3
# ./plugins/debug/copilot-sdk/run_owui_api_docs_phases.sh --only-phase 1
#
# Working directory: /Users/fujie/app/python/oui/open-webui (open-webui source)
# Task files: plugins/debug/copilot-sdk/tasks/owui-api-docs/phases/
set -euo pipefail
# ── Resolve paths ────────────────────────────────────────────────────────────
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" # openwebui-extensions root
TASKS_DIR="${SCRIPT_DIR}/tasks/owui-api-docs/phases"
TARGET_CWD="/Users/fujie/app/python/oui/open-webui" # source repo to scan
RUNNER="${SCRIPT_DIR}/auto_programming_task.py"
PYTHON="${PYTHON:-python3}"
# ── Arguments ────────────────────────────────────────────────────────────────
START_PHASE=1
ONLY_PHASE=""
while [[ $# -gt 0 ]]; do
case "$1" in
--start-phase)
START_PHASE="$2"; shift 2 ;;
--only-phase)
ONLY_PHASE="$2"; shift 2 ;;
*)
echo "Unknown argument: $1" >&2; exit 1 ;;
esac
done
# ── Phase definitions ─────────────────────────────────────────────────────────
declare -a PHASE_FILES=(
"01_route_index.txt"
"02_auth_users_groups_models.txt"
"03_chats_channels_memories_notes.txt"
"04_files_folders_knowledge_retrieval.txt"
"05_ollama_openai_audio_images.txt"
"06_tools_functions_pipelines_skills_tasks.txt"
"07_configs_prompts_evaluations_analytics_scim_utils.txt"
"08_consolidation_index.txt"
)
declare -a PHASE_LABELS=(
"Route Index (master table)"
"Auth / Users / Groups / Models"
"Chats / Channels / Memories / Notes"
"Files / Folders / Knowledge / Retrieval"
"Ollama / OpenAI / Audio / Images"
"Tools / Functions / Pipelines / Skills / Tasks"
"Configs / Prompts / Evaluations / Analytics / SCIM / Utils"
"Consolidation — README + JSON"
)
# ── Pre-flight checks ─────────────────────────────────────────────────────────
echo "============================================================"
echo " OpenWebUI API Docs — Phase Runner"
echo "============================================================"
echo " Source (--cwd): ${TARGET_CWD}"
echo " Task files: ${TASKS_DIR}"
echo " Runner: ${RUNNER}"
echo ""
if [[ ! -d "${TARGET_CWD}" ]]; then
echo "ERROR: Target source directory not found: ${TARGET_CWD}" >&2
exit 1
fi
if [[ ! -f "${RUNNER}" ]]; then
echo "ERROR: Runner script not found: ${RUNNER}" >&2
exit 1
fi
# ── Run phases ────────────────────────────────────────────────────────────────
TOTAL=${#PHASE_FILES[@]}
PASSED=0
FAILED=0
for i in "${!PHASE_FILES[@]}"; do
PHASE_NUM=$((i + 1))
TASK_FILE="${TASKS_DIR}/${PHASE_FILES[$i]}"
LABEL="${PHASE_LABELS[$i]}"
# --only-phase filter
if [[ -n "${ONLY_PHASE}" && "${PHASE_NUM}" != "${ONLY_PHASE}" ]]; then
echo " [SKIP] Phase ${PHASE_NUM}: ${LABEL}"
continue
fi
# --start-phase filter
if [[ "${PHASE_NUM}" -lt "${START_PHASE}" ]]; then
echo " [SKIP] Phase ${PHASE_NUM}: ${LABEL} (before start phase)"
continue
fi
if [[ ! -f "${TASK_FILE}" ]]; then
echo " [ERROR] Task file not found: ${TASK_FILE}" >&2
FAILED=$((FAILED + 1))
break
fi
echo ""
echo "──────────────────────────────────────────────────────────"
echo " Phase ${PHASE_NUM}/${TOTAL}: ${LABEL}"
echo " Task file: ${PHASE_FILES[$i]}"
echo "──────────────────────────────────────────────────────────"
if "${PYTHON}" "${RUNNER}" \
--task-file "${TASK_FILE}" \
--cwd "${TARGET_CWD}" \
--model "claude-sonnet-4.6" \
--reasoning-effort high \
--no-plan-first; then
echo " ✓ Phase ${PHASE_NUM} completed successfully."
PASSED=$((PASSED + 1))
else
EXIT_CODE=$?
echo ""
echo " ✗ Phase ${PHASE_NUM} FAILED (exit code: ${EXIT_CODE})." >&2
echo " Fix the issue and re-run with: --start-phase ${PHASE_NUM}" >&2
FAILED=$((FAILED + 1))
exit "${EXIT_CODE}"
fi
done
# ── Summary ──────────────────────────────────────────────────────────────────
echo ""
echo "============================================================"
echo " Run complete: ${PASSED} passed, ${FAILED} failed"
echo " Output: ${TARGET_CWD}/api_docs/"
echo "============================================================"