#!/bin/bash set -e # Create an isolated git worktree for an AI agent. # Usage: scripts/dev/new-agent-worktree.sh # Example: scripts/dev/new-agent-worktree.sh kimi finance-reports AGENT_NAME="${1:-}" FEATURE="${2:-}" if [[ -z "$AGENT_NAME" || -z "$FEATURE" ]]; then echo "Usage: scripts/dev/new-agent-worktree.sh " echo "Example: scripts/dev/new-agent-worktree.sh kimi finance-reports" exit 1 fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" BRANCH="agent/${AGENT_NAME}-${FEATURE}" WORKTREE_DIR="${PROJECT_ROOT}/../TaskTitan-${AGENT_NAME}-${FEATURE}" cd "${PROJECT_ROOT}" echo "=== Creating worktree for agent '${AGENT_NAME}' ===" git fetch origin if git rev-parse --verify "${BRANCH}" >/dev/null 2>&1; then echo "Branch ${BRANCH} already exists locally." else git branch "${BRANCH}" origin/main echo "Branch ${BRANCH} created from origin/main." fi if [[ -d "${WORKTREE_DIR}" ]]; then echo "Worktree ${WORKTREE_DIR} already exists." else git worktree add "${WORKTREE_DIR}" "${BRANCH}" echo "Worktree created: ${WORKTREE_DIR}" fi cd "${WORKTREE_DIR}" if [[ ! -d node_modules ]]; then echo "=== Installing dependencies ===" npm ci if [[ -f server/documents/worker/package.json ]]; then cd server/documents/worker npm ci cd "${WORKTREE_DIR}" fi fi echo "" echo "=== Agent workspace ready ===" echo "Worktree: ${WORKTREE_DIR}" echo "Branch: ${BRANCH}" echo "" echo "To start working:" echo " cd ${WORKTREE_DIR}" echo " git checkout ${BRANCH}"