/**
 * Ambient Agent 常量定义
 */

// 目标生命周期状态
const GoalState = {
  PENDING: 'pending',      // 待激活
  ACTIVE: 'active',        // 执行中
  COMPLETED: 'completed',   // 已完成
  FAILED: 'failed'         // 已失败
}

// 事件描述（用于生成插件描述）
const EventDescriptions = {
  'tool:result': '工具执行结果事件 - 参数: name(工具名), args(执行参数), result(执行结果), error(错误信息)',
  'scheduler:reminder': '定时提醒事件 - 参数: taskId(任务ID), message(提醒消息), time(触发时间)',
  'scheduler:task_completed': '任务完成事件 - 参数: taskId(任务ID), result(任务结果)',
  'scheduler:task_failed': '任务失败事件 - 参数: taskId(任务ID), error(错误信息)',
  'agent:message': '代理消息事件 - 参数: content(消息内容), sessionId(会话ID), agentId(代理ID)',
  'think:thought_completed': '思考完成事件 - 参数: mode(思考模式), topic(思考主题), thought(思考内容), depth(思考深度)',
  'email:received': '收到邮件事件 - 参数: from(发件人), to(收件人), subject(主题), text(正文), body(HTML正文), messageId(消息ID), timestamp(时间戳)',
  'webhook:received': 'Webhook接收事件 - 参数: headers(HTTP头), body(请求体), query(查询参数), path(请求路径)'
}

// 监听的事件类型列表
const DefaultEvents = [
  // 工具事件
  'tool:call',
  'tool:result',
  'tool:error',
  // Scheduler 事件
  'scheduler:task_created',
  'scheduler:reminder',
  'scheduler:task_completed',
  'scheduler:task_failed',
  // Agent/Think 事件
  'agent:message',
  'think:thought_completed',
  // Email/Webhook 事件
  'email:received',
  'webhook:received',
  'webhook:processed',
  // Worker/Subagent 事件
  'worker:completed',
  'worker:error',
  'subagent:chat:end'
]

// 系统提示词模板
const SystemPrompts = {
  ambientWorker: `你是 ambient-worker，一个专门执行后台任务的子 agent。

你的职责：
1. 执行 LLM 调用的任务（如生成回复、发送消息）
2. 不主动思考，只执行给定任务
3. 快速响应，不等待用户交互

当收到任务时，直接执行并返回结果。`
}

// 思考模式提示词
const ThinkModePrompts = {
  reflect: (goal, topic) => `作为Ambient Agent，反思当前目标：
标题: ${goal.title}
描述: ${goal.description || '无'}
优先级: ${goal.priority}
状态: ${goal.state}
尝试次数: ${goal.attempts}

${topic ? `额外关注点: ${topic}` : ''}

请反思：
1. 这个目标仍然相关且可实现吗？
2. 操作是否适合这个目标？
3.有什么可以改进的？`,

  brainstorm: (goal, topic) => `为Ambient Agent目标头脑风暴新方法：
标题: ${goal.title}
${goal.description ? `描述: ${goal.description}` : ''}
计划的操作数: ${goal.actions ? goal.actions.length : 0}

${topic ? `关注点: ${topic}` : '生成关于如何更有效地追求这个目标的新想法。'}`,

  plan: (goal, topic) => `为Ambient Agent目标制定更精细的计划：
标题: ${goal.title}
${goal.description ? `描述: ${goal.description}` : ''}
${topic ? `额外上下文: ${topic}` : ''}

制定一个清晰、可操作的计划。`,

  analyze: (goal, topic) => `分析Ambient Agent目标：
标题: ${goal.title}
状态: ${goal.state}
优先级: ${goal.priority}
操作: ${goal.actions ? JSON.stringify(goal.actions) : '无'}

${topic ? `分析重点: ${topic}` : '这个目标的优势、劣势和潜在问题是什么？'}`
}

// 自由思考提示词
const FreeThinkPrompts = {
  reflect: (topic) => `Ambient Agent反思: ${topic || '思考系统和目标的当前状态。有什么可以改进的？'}`,
  brainstorm: (topic) => `Ambient Agent头脑风暴: ${topic || '生成关于新目标或方法的有创意想法。'}`,
  plan: (topic) => `Ambient Agent计划: ${topic || '为待实现的目标制定计划。'}`,
  analyze: (topic) => `Ambient Agent分析: ${topic || '分析当前目标及其进展。'}`
}

module.exports = {
  GoalState,
  EventDescriptions,
  DefaultEvents,
  SystemPrompts,
  ThinkModePrompts,
  FreeThinkPrompts
}
