#!/bin/bash
# Open a new Terminal.app window and start a Claude Code session scoped to a specific CHL agent
# using Claude Code's native --agent flag.
#
# Usage: bin/launch-agent.sh <agent-name>
#
# Used by the dashboard's ▶ Launch button (POST /api/agents/<name>/launch).

set -euo pipefail

AGENT="${1:-}"
PROJECT_DIR="/Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness"

if [ -z "$AGENT" ]; then
    echo "Usage: $0 <agent-name>" >&2
    echo "  Available agents:" >&2
    ls -1 "$PROJECT_DIR/.claude/agents/"*.md 2>/dev/null | xargs -I{} basename {} .md | grep -v '^_template$\|^README$' | sed 's/^/    /' >&2
    exit 1
fi

if [ ! -f "$PROJECT_DIR/.claude/agents/$AGENT.md" ]; then
    echo "Error: agent '$AGENT' not found in .claude/agents/" >&2
    exit 1
fi

# Validate agent name shape — defence in depth before composing AppleScript
if ! [[ "$AGENT" =~ ^[a-z0-9][a-z0-9-]*$ ]]; then
    echo "Error: invalid agent name (must match [a-z0-9][a-z0-9-]*)" >&2
    exit 1
fi

# Escape the project path for AppleScript double-quoted string (\ → \\, " → \")
ESCAPED_PATH=$(printf '%s' "$PROJECT_DIR" | sed 's/\\/\\\\/g; s/"/\\"/g')

osascript <<EOF
tell application "Terminal"
    activate
    do script "cd \"$ESCAPED_PATH\" && claude --agent $AGENT"
end tell
EOF

echo "Terminal.app launched with agent: $AGENT"
