3c73d470f5
Add tkmind_compat REST routes (including config/read), PostgreSQL session storage, and TKMind platform extensions so upstream Goose 1.49 can serve Portal locally without changing H5 contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ENGINE="${1:-}"
|
|
PROJECT_DIR="${2:-}"
|
|
TASK="${3:-}"
|
|
DRY_RUN="${4:-}"
|
|
|
|
AIDER_HOME="${AIDER_HOME:-/Users/john/Project/aider}"
|
|
AIDER_BIN="${AIDER_BIN:-${GOOSE_AIDER_BIN:-${AIDER_HOME}/aider.sh}}"
|
|
|
|
if [[ -f "${AIDER_HOME}/.env" ]]; then
|
|
set -a
|
|
# shellcheck disable=SC1091
|
|
source "${AIDER_HOME}/.env"
|
|
set +a
|
|
fi
|
|
|
|
if [[ -z "$ENGINE" || -z "$PROJECT_DIR" || -z "$TASK" ]]; then
|
|
echo "Usage: coding_router.sh <aider|goose|auto> <project_dir> <task> [--dry-run]"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -d "$PROJECT_DIR" ]]; then
|
|
echo "Project dir not found: $PROJECT_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
choose_engine() {
|
|
case "$ENGINE" in
|
|
aider) echo "aider" ;;
|
|
goose) echo "goose" ;;
|
|
auto)
|
|
if echo "$TASK" | grep -qE '修复|bug|Bug|BUG|重构|跨文件|实现|新增|改造|兼容|报错|测试失败|commit|提交|代码修改|开发|feature|refactor|fix'; then
|
|
echo "aider"
|
|
else
|
|
echo "goose"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Unknown engine: $ENGINE"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
SELECTED_ENGINE="$(choose_engine)"
|
|
echo "Selected engine: $SELECTED_ENGINE"
|
|
|
|
if [[ "$DRY_RUN" == "--dry-run" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
cd "$PROJECT_DIR"
|
|
echo "===== git status before ====="
|
|
git status --short || true
|
|
|
|
case "$SELECTED_ENGINE" in
|
|
aider)
|
|
if [[ ! -x "$AIDER_BIN" ]]; then
|
|
echo "Aider not executable: $AIDER_BIN"
|
|
exit 1
|
|
fi
|
|
"$AIDER_BIN" --yes-always --message "$TASK"
|
|
echo "===== git status after ====="
|
|
git status --short || true
|
|
;;
|
|
goose)
|
|
echo "Goose developer tools handle this task in-session: $TASK"
|
|
exit 2
|
|
;;
|
|
esac
|