"""
压缩相关 Prompt

包含 Level 2 消息压缩（LLM 总结）使用的 prompt。
"""

# ===== 压缩总结 =====

COMPRESSION_PROMPT_TEMPLATE = """请对以上对话历史进行压缩总结。

### 摘要要求
1. 保留关键决策、结论和产出（如创建的文件、修改的代码、得出的分析结论）
2. 保留重要的上下文（如用户的要求、约束条件、之前的讨论结果）
3. 省略中间探索过程、重复的工具调用细节
4. 使用结构化格式（标题 + 要点 + 相关资源引用，若有）
5. 控制在 2000 字以内

当前 GoalTree 状态：
{goal_tree_prompt}

格式要求：
[[SUMMARY]]
(此处填写结构化的摘要内容)

**生成摘要后立即停止，不要继续执行原有任务。**
"""

# 保留旧名以兼容 compaction.py 的调用
COMPRESSION_EVAL_PROMPT_TEMPLATE = COMPRESSION_PROMPT_TEMPLATE

SINGLE_TURN_PROMPT = """请对以上对话历史进行压缩总结。

### 摘要要求
1. 保留关键决策、结论和产出（如创建的文件、修改的代码、得出的分析结论）
2. 保留重要的上下文（如用户的要求、约束条件、之前的讨论结果）
3. 省略中间探索过程、重复的工具调用细节
4. 使用结构化格式（标题 + 要点 + 相关资源引用，若有）
5. 控制在 2000 字以内

当前 GoalTree 状态：
{goal_tree_prompt}

格式要求：
[[SUMMARY]]
(此处填写结构化的摘要内容)
"""

SUMMARY_HEADER_TEMPLATE = """## 对话历史摘要（自动压缩）

{summary_text}

---
*以上为压缩摘要，原始对话历史已归档。*
"""

# ===== 辅助函数 =====

def build_compression_eval_prompt(
    goal_tree_prompt: str,
    ex_reference_list: str = "",
) -> str:
    return COMPRESSION_EVAL_PROMPT_TEMPLATE.format(
        goal_tree_prompt=goal_tree_prompt,
        ex_reference_list=ex_reference_list,
    )


def build_single_turn_prompt(goal_tree_prompt: str) -> str:
    return SINGLE_TURN_PROMPT.format(goal_tree_prompt=goal_tree_prompt)


def build_summary_header(summary_text: str) -> str:
    return SUMMARY_HEADER_TEMPLATE.format(summary_text=summary_text)
