#!/bin/bash

# Agent打包脚本 - 用于快速打包某个Agent的所有文件

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 显示使用说明
show_usage() {
    echo "使用方法: ./package_agent.sh [Agent编号或名称]"
    echo ""
    echo "示例:"
    echo "  ./package_agent.sh 01"
    echo "  ./package_agent.sh Auth"
    echo "  ./package_agent.sh 01-Agent-Auth"
    echo ""
    echo "可用的Agent:"
    ls -d [0-9][0-9]-Agent-* 2>/dev/null | sed 's/^/  /'
}

# 检查参数
if [ -z "$1" ]; then
    show_usage
    exit 1
fi

# 查找Agent目录
AGENT_DIR=""
SEARCH_TERM=$1

# 尝试不同的匹配方式
if [ -d "$SEARCH_TERM" ]; then
    AGENT_DIR="$SEARCH_TERM"
elif [ -d "[0-9][0-9]-Agent-$SEARCH_TERM" ]; then
    AGENT_DIR=$(ls -d [0-9][0-9]-Agent-$SEARCH_TERM 2>/dev/null | head -1)
elif [ -d "$SEARCH_TERM-Agent-"* ]; then
    AGENT_DIR=$(ls -d $SEARCH_TERM-Agent-* 2>/dev/null | head -1)
else
    # 模糊匹配
    AGENT_DIR=$(ls -d *-Agent-*$SEARCH_TERM* 2>/dev/null | head -1)
fi

# 检查是否找到目录
if [ -z "$AGENT_DIR" ] || [ ! -d "$AGENT_DIR" ]; then
    echo -e "${RED}错误: 找不到Agent目录 '$SEARCH_TERM'${NC}"
    echo ""
    show_usage
    exit 1
fi

echo -e "${GREEN}找到Agent目录: $AGENT_DIR${NC}"

# 创建输出目录
OUTPUT_DIR="packaged"
mkdir -p "$OUTPUT_DIR"

# 生成输出文件名
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
OUTPUT_FILE="$OUTPUT_DIR/${AGENT_DIR}_${TIMESTAMP}.tar.gz"

# 创建临时目录
TEMP_DIR=$(mktemp -d)
PACKAGE_DIR="$TEMP_DIR/$AGENT_DIR"
mkdir -p "$PACKAGE_DIR"

# 复制Agent文件
echo "正在打包Agent文件..."
cp -r "$AGENT_DIR"/* "$PACKAGE_DIR/" 2>/dev/null

# 复制通用基础文件
echo "添加通用基础文件..."
mkdir -p "$PACKAGE_DIR/00-通用基础"
cp -r "00-通用基础"/* "$PACKAGE_DIR/00-通用基础/" 2>/dev/null

# 添加项目脚手架的关键文件引用
echo "添加项目基础代码引用..."
mkdir -p "$PACKAGE_DIR/_project_base"
cat > "$PACKAGE_DIR/_project_base/README.md" << EOF
# 项目基础代码引用

这些是项目脚手架中的关键文件，Agent开发时需要参考：

## 基础模型
- app/models/base.py - BaseModel, SoftDeleteMixin, AuditMixin
- app/schemas/base.py - BaseSchema, ResponseModel, PageModel

## 核心功能
- app/core/exceptions.py - 统一异常处理
- app/core/logger.py - 日志配置
- app/core/middleware.py - 中间件定义
- app/config/settings.py - 系统配置

## 开发规范
请查看 00-通用基础/base_prompt.md 了解详细的开发规范。
EOF

# 添加快速启动脚本
cat > "$PACKAGE_DIR/START_HERE.md" << EOF
# $AGENT_DIR 快速启动指南

## 1. 了解你的角色
请先阅读 \`prompt.md\` 了解你的职责和任务。

## 2. 理解项目上下文
查看 \`context.md\` 了解项目结构和依赖关系。

## 3. 查看API规范
如果有 \`api_contract.yaml\`，请仔细阅读API接口定义。

## 4. 参考示例代码
查看 \`examples/\` 目录中的示例代码。

## 5. 遵循开发规范
务必遵循 \`00-通用基础/base_prompt.md\` 中的规范。

## 6. 使用检查清单
按照 \`checklist.md\` 进行开发和自检。

## 开始开发
\`\`\`
我是$AGENT_DIR，准备开始开发工作。
我已经阅读了所有相关文档，理解了我的职责。
请确认项目根目录路径，我将开始创建代码。
\`\`\`
EOF

# 创建压缩包
cd "$TEMP_DIR"
tar -czf "$OUTPUT_FILE" "$AGENT_DIR"
cd - > /dev/null

# 清理临时文件
rm -rf "$TEMP_DIR"

# 显示结果
echo -e "${GREEN}✅ 打包完成！${NC}"
echo -e "输出文件: ${YELLOW}$OUTPUT_FILE${NC}"
echo -e "文件大小: $(du -h "$OUTPUT_FILE" | cut -f1)"
echo ""
echo "你可以："
echo "1. 将此文件上传到Cursor云端"
echo "2. 解压后在本地Cursor中使用"
echo "3. 分享给其他开发者"

# 显示包含的文件
echo ""
echo "包含的文件:"
tar -tzf "$OUTPUT_FILE" | head -20
if [ $(tar -tzf "$OUTPUT_FILE" | wc -l) -gt 20 ]; then
    echo "... 以及更多文件"
fi
