// Keep browser-safe: do not import user-publish.mjs (uses node:fs/path/url).
const PUBLISH_SKILL_NAME = 'static-page-publish';

const WEB_INTENT_PATTERNS = [
  /(?:今天|今日|最新|热点|热搜|新闻|头条|头条新闻|最新消息|发生了什么|最近发生)/u,
  /(?:latest|breaking)\s+news/i,
  /what(?:'s| is)?\s+happening/i,
];

const WEB_NEWS_INTENT_PATTERNS = [
  /(?:今天|今日|最新|热点|热搜|新闻|头条|头条新闻|热榜|热议|舆情|突发)/u,
  /(?:today|latest|breaking|trending)\s+(?:news|stories|headlines|topics)/i,
  /(?:what(?:'s| is)?\s+the\s+latest|what(?:'s| is)?\s+trending)/i,
];

export const CHAT_SKILL_DEFINITIONS = [
  {
    id: 'web-search',
    label: '查资料',
    icon: 'web',
    skillName: 'web',
    requiresSkill: 'web',
    prefillOnly: true,
    promptKey: 'web',
  },
  {
    id: 'code-search',
    label: '搜代码',
    icon: 'search',
    skillName: 'search',
    requiresSkill: 'search',
    prefillOnly: true,
    promptKey: 'search',
  },
  {
    id: 'form-collect',
    label: '表单收集',
    icon: 'form',
    skillName: 'form-builder',
    requiresSkill: 'form-builder',
    prefillOnly: true,
    promptKey: 'form-builder',
  },
  {
    id: 'table-view',
    label: '数据表格',
    icon: 'table',
    skillName: 'table-viewer',
    requiresSkill: 'table-viewer',
    prefillOnly: true,
    promptKey: 'table-viewer',
  },
  {
    id: 'product-campaign-page',
    label: '商品页',
    icon: 'page',
    skillName: 'product-campaign-page',
    requiresSkill: 'product-campaign-page',
    promptKey: 'product-campaign-page',
  },
  {
    id: 'summarize',
    label: '总结内容',
    icon: 'summary',
    prefillOnly: true,
    promptKey: 'summarize',
  },
  {
    id: 'analyze',
    label: '深度分析',
    icon: 'analyze',
    prefillOnly: true,
    promptKey: 'analyze',
  },
  {
    id: 'generate-page',
    label: '生成页面',
    icon: 'page',
    skillName: PUBLISH_SKILL_NAME,
    requiresPublish: true,
    promptKey: 'generate-page',
  },
];

export function buildChatSkillPrompt(promptKey, skillName) {
  switch (promptKey) {
    case 'web':
      return `请使用 ${skillName ?? 'web'} 技能：帮我搜索并查阅相关资料（优先官方文档），并给出中文摘要与来源链接。我的问题是：`;
    case 'search':
      return `请使用 ${skillName ?? 'search'} 技能：帮我在工作区中查找代码或文件。我要找的是：`;
    case 'form-builder':
      return `请使用 ${skillName ?? 'form-builder'} 技能：请用交互式表单收集以下场景所需的结构化字段（字段不超过 8 个）：`;
    case 'table-viewer':
      return `请使用 ${skillName ?? 'table-viewer'} 技能：请把以下数据整理成可排序、可筛选的交互式表格：`;
    case 'product-campaign-page':
      return (
        `请使用 ${skillName ?? 'product-campaign-page'} 技能：帮我制作一个商品宣传 / 活动页。` +
        '请先询问商品链接、页面主题、是否有商品图片或品牌素材；信息足够后，生成包含购买跳转按钮的页面方案。' +
        '如果我确认要发布成 H5 页面，请继续使用 static-page-publish 技能生成可访问链接。'
      );
    case 'summarize':
      return '请总结以下内容，提炼核心结论、重点信息和可执行建议（条理清晰、中文输出）：';
    case 'analyze':
      return '请深入分析以下内容，给出结构化解读：背景、关键发现、风险或机会、以及建议下一步：';
    case 'generate-page':
      return `请使用 ${skillName ?? PUBLISH_SKILL_NAME} 技能：在我的专属 MindSpace 发布目录生成静态 HTML 页面，并给出可公网访问的完整链接。`;
    default:
      return '';
  }
}

function buildWebNewsSkillPrompt(skillName) {
  return `请使用 ${skillName ?? 'web'} 技能：先搜索今天/最新相关的新闻与热点，优先一手来源和权威媒体，整理 3-5 条最相关结果，按时间或热度排序；然后给出中文摘要、关键信息、事件背景和来源链接。我的问题是：`;
}

export function filterChatSkills(options, ctx) {
  return options.filter((skill) => {
    if (skill.requiresPublish && !ctx.canPublish) return false;
    if (skill.requiresSkill && !ctx.grantedSkills?.includes(skill.requiresSkill)) return false;
    return true;
  });
}

export function buildAutoChatSkillPrefix(text, grantedSkills = []) {
  const trimmed = String(text ?? '').trim();
  if (!trimmed) return '';
  if (!grantedSkills.includes('web')) return '';
  if (WEB_NEWS_INTENT_PATTERNS.some((pattern) => pattern.test(trimmed))) {
    return buildWebNewsSkillPrompt('web');
  }
  if (!WEB_INTENT_PATTERNS.some((pattern) => pattern.test(trimmed))) return '';
  return buildChatSkillPrompt('web', 'web');
}
