// ESTÚDIO — Página "Agentes": um agente pré-configurado por função do trabalho.
// Cada um recebe um tema e entrega pronto (via window.claude.complete).
// Exporta window.Agentes.
(function () {
  const { useState, useRef } = React;
  const { PageHead } = window.UI;
  const h = React.createElement;

  const VOZ = "Você trabalha para Lorenna Guerra (@lorennagn): criadora, mãe e comunicadora. " +
    "Público: mulheres 25-40, criadoras e empreendedoras iniciantes, muitas neurodivergentes. " +
    "Pilares: criação sustentável (anti-burnout), IA no dia a dia, bastidores de mãe atípica, repertório/referências e área de membros. " +
    "Tom de voz: direta, calorosa, sem jargão, como quem senta do seu lado. Honestidade acima de estética, processo acima de perfeição. " +
    "NUNCA use as palavras/ideias: 'hustle', 'não tem desculpa', 'só depende de você', 'guru', 'fórmula mágica', 'resultado garantido'. " +
    "Escreva sempre em português do Brasil. Entregue o resultado PRONTO PARA USAR, sem pedir mais informações e sem explicar o que você fez.";

  const AGENTES = [
    { id: "pesquisa", nome: "Pesquisa", emoji: "🔎", cor: "#6FA8D6",
      tagline: "Levanta ângulos, dados e o que já existe sobre o tema",
      entrega: "Resumo do tema · 5 ângulos originais · perguntas que a audiência faz · dados/fatos citáveis · o que evitar",
      ph: "Ex: rotina de gravação em lote para mães criadoras",
      system: VOZ + " Você é AGENTE DE PESQUISA. Dado um tema, entregue: (1) um resumo em 2-3 linhas do que é e por que importa pro público dela; (2) 5 ângulos originais e não óbvios pra abordar; (3) 4 perguntas reais que a audiência faz sobre isso; (4) 3 dados, fatos ou referências citáveis (se não tiver certeza, marque como '[confirmar]'); (5) 2 clichês a evitar. Use títulos e bullets." },
    { id: "conteudo", nome: "Escrever conteúdo", emoji: "✍️", cor: "#E8538D",
      tagline: "Roteiro completo de Reel, carrossel ou vídeo",
      entrega: "Gancho · desenvolvimento cena a cena (ou slide a slide) · CTA · sugestão de trilha/visual",
      ph: "Ex: como uso IA pra roteirizar uma semana de conteúdo — formato Reel",
      system: VOZ + " Você é AGENTE DE ROTEIRO. Dado um tema (e formato, se informado), entregue um roteiro pronto: (1) 3 opções de gancho pros primeiros 3 segundos; (2) o desenvolvimento cena a cena (Reel/vídeo) ou slide a slide (carrossel), com o texto exato de cada parte; (3) um CTA alinhado ao objetivo; (4) sugestão de trilha/áudio e ideia visual. Seja específico e escreva o texto que ela vai realmente falar/mostrar." },
    { id: "legendas", nome: "Escrever legendas", emoji: "💬", cor: "#E29B57", blocks: true,
      tagline: "Legenda que engaja e vende sem parecer venda",
      entrega: "3 versões (curta, média AIDA, storytelling) + hashtags — cada uma pronta pra copiar",
      ph: "Ex: legenda pra carrossel sobre bloqueio criativo",
      system: VOZ + " Você é AGENTE DE LEGENDAS. Dado o tema/conteúdo, entregue blocos de legenda prontos pra copiar e colar. " +
        "Separe CADA bloco com uma linha contendo apenas §§§. A primeira linha de cada bloco é o rótulo; da segunda linha em diante vem APENAS o texto final pronto pra colar (sem comentários seus). " +
        "Entregue exatamente estes blocos, nesta ordem: (1) rótulo 'Versão curta' — legenda curta e direta com CTA; (2) rótulo 'Versão média (AIDA)' — legenda média em estrutura AIDA com CTA; (3) rótulo 'Versão storytelling' — legenda em narrativa com CTA; (4) rótulo 'Hashtags de nicho' — 8 a 12 hashtags; (5) rótulo 'Hashtags amplas' — 8 a 12 hashtags. Cada legenda deve abrir com um gancho forte na primeira linha." },
    { id: "ganchos", nome: "Ganchos & títulos", emoji: "🎣", cor: "#9E8BCB",
      tagline: "Aberturas que seguram o dedo e títulos de vídeo",
      entrega: "10 ganchos de Reel/TikTok · 6 títulos de YouTube · 4 capas de carrossel",
      ph: "Ex: tema criação sustentável sem burnout",
      system: VOZ + " Você é AGENTE DE GANCHOS. Dado um tema, entregue: (1) 10 ganchos de 1ª linha pra Reel/TikTok (misturando curiosidade, quebra de padrão, contra-intuitivo e identificação); (2) 6 títulos de vídeo de YouTube otimizados pra clique honesto; (3) 4 frases de capa de carrossel. Sem clickbait vazio." },
    { id: "stories", nome: "Stories que vendem", emoji: "💰", cor: "#E8538D",
      tagline: "Sequência de stories que leva à venda",
      entrega: "Sequência de 6-7 telas (gancho→dor→virada→prova→oferta→escassez) com o texto de cada tela e a mecânica",
      ph: "Ex: vender a área de membros / o curso de criação com IA",
      system: VOZ + " Você é AGENTE DE STORIES DE VENDA. Dado o produto/oferta e o tema, entregue uma sequência de 6-7 telas de stories, cada uma com: rótulo da etapa (gancho, dor, virada, prova, oferta, escassez), o texto exato pra colocar na tela e qual figurinha/interação usar (enquete, caixinha, link). Termine com a mecânica de conversão (pra onde mandar). Honesto, sem pressão tóxica." },
    { id: "pautas", nome: "Banco de pautas", emoji: "💡", cor: "#7FB68C",
      tagline: "Ideias de conteúdo organizadas por pilar",
      entrega: "12 pautas divididas pelos pilares · formato sugerido · objetivo de cada uma",
      ph: "Ex: pautas de julho sobre IA e maternidade criativa",
      system: VOZ + " Você é AGENTE DE PAUTAS. Dado um tema ou período, entregue 12 ideias de conteúdo agrupadas pelos pilares dela. Pra cada pauta: título da ideia, formato sugerido (Reel, carrossel, vídeo, story, etc.) e o objetivo (atrair, nutrir, vender, autoridade). Varie os formatos e os objetivos." },
    { id: "repurpose", nome: "Reaproveitar", emoji: "♻️", cor: "#0A66C2",
      tagline: "1 conteúdo vira vários formatos e redes",
      entrega: "Do conteúdo-base: Reel, carrossel, Short YT, TikTok, newsletter, pin e stories",
      ph: "Ex: transformar meu vídeo 'gravar cansada' em vários formatos",
      system: VOZ + " Você é AGENTE DE REAPROVEITAMENTO. Dado um conteúdo-base (tema/vídeo/post), entregue como transformá-lo em: (1) Reel; (2) carrossel; (3) Short de YouTube; (4) TikTok; (5) edição de newsletter (Substack); (6) Pin do Pinterest; (7) sequência curta de stories. Pra cada um, dê o ângulo específico e a 1ª linha/gancho adaptada àquele formato." },
    { id: "membros", nome: "Área de membros", emoji: "⭐", cor: "#9E8BCB",
      tagline: "Estrutura uma aula, template ou material exclusivo",
      entrega: "Título · o que o membro vai aprender · roteiro/estrutura da aula ou material · recurso pra baixar",
      ph: "Ex: aula de edição de Reels no CapCut do zero",
      system: VOZ + " Você é AGENTE DA ÁREA DE MEMBROS. Dado um tema, estruture um material exclusivo e específico: (1) título claro do que será ensinado; (2) a transformação — o que o membro sai sabendo fazer; (3) o roteiro/estrutura passo a passo da aula ou do material; (4) um recurso complementar pra disponibilizar (template, imprimível, checklist, arquivo) com o que ele deve conter. Seja concreto no assunto." },
  ];

  function AgentWork({ agente, onBack }) {
    const { state, actions } = window.STORE.useStore();
    const [tema, setTema] = useState("");
    const [contexto, setContexto] = useState("");
    const [loading, setLoading] = useState(false);
    const [out, setOut] = useState("");
    const [err, setErr] = useState("");
    const [copied, setCopied] = useState(false);
    const [alvo, setAlvo] = useState("__novo");
    const [campo, setCampo] = useState("roteiro");
    const [savedMsg, setSavedMsg] = useState("");

    async function gerar() {
      if (!tema.trim() || loading) return;
      setLoading(true); setErr(""); setOut(""); setCopied(false);
      try {
        const userMsg = "TEMA: " + tema.trim() + (contexto.trim() ? ("\nCONTEXTO (rede, formato, objetivo): " + contexto.trim()) : "");
        const text = await window.claude.complete({
          system: agente.system,
          max_tokens: 2000,
          messages: [{ role: "user", content: userMsg }],
        });
        setOut(text || "");
      } catch (e) {
        setErr("Não consegui gerar agora. Tente de novo em alguns segundos.");
      }
      setLoading(false);
    }
    function copiar() {
      navigator.clipboard && navigator.clipboard.writeText(out);
      setCopied(true); setTimeout(() => setCopied(false), 1600);
    }
    function salvar() {
      if (!out) return;
      if (alvo === "__novo") {
        const titulo = tema.trim().slice(0, 70) || (agente.nome + " — resultado");
        const campoNovo = campo === "resumo" ? "resumo" : "roteiro";
        const id = actions.addConteudo({ titulo, [campoNovo]: out, status: "Roteirizado" });
        setSavedMsg("Criado na Produção ✓");
      } else {
        actions.appendToConteudo(alvo, campo, out);
        const c = state.conteudos.find((x) => x.id === alvo);
        setSavedMsg("Salvo em “" + (c ? c.titulo : "") + "” ✓");
      }
      setTimeout(() => setSavedMsg(""), 2600);
    }

    const blocos = agente.blocks && out
      ? out.split(/^\s*§§§\s*$/m).map((b) => b.trim()).filter(Boolean).map((b) => {
          const nl = b.indexOf("\n");
          return nl === -1 ? { label: "Copiar", body: b } : { label: b.slice(0, nl).replace(/[*#:]/g, "").trim(), body: b.slice(nl + 1).trim() };
        })
      : null;

    return h("div", { className: "agent-work" },
      h("button", { className: "agent-back", onClick: onBack }, "← Todos os agentes"),
      h("div", { className: "agent-work-head", style: { borderColor: agente.cor } },
        h("span", { className: "agent-ic", style: { background: agente.cor } }, agente.emoji),
        h("div", null,
          h("div", { className: "agent-work-nome" }, agente.nome),
          h("div", { className: "agent-work-tag" }, agente.tagline)
        )
      ),
      h("div", { className: "agent-entrega" }, h("b", null, "Entrega: "), agente.entrega),
      h("label", { className: "agent-label" }, "Tema"),
      h("textarea", { className: "agent-input", value: tema, placeholder: agente.ph, onChange: (e) => setTema(e.target.value), onKeyDown: (e) => { if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) gerar(); } }),
      h("label", { className: "agent-label" }, "Contexto (opcional) — rede, formato, objetivo"),
      h("input", { className: "agent-ctx", value: contexto, placeholder: "Ex: Instagram · Reel · vender a oficina", onChange: (e) => setContexto(e.target.value) }),
      h("div", { className: "agent-run" },
        h("button", { className: "btn-pink", onClick: gerar, disabled: !tema.trim() || loading, style: !loading && tema.trim() ? { background: agente.cor } : undefined }, loading ? "Gerando…" : "✨ Gerar pronto"),
        h("span", { className: "agent-hint" }, "⌘/Ctrl + Enter")
      ),
      err && h("div", { className: "agent-err" }, err),
      loading && h("div", { className: "agent-loading" }, h("span", { className: "agent-spin" }), " O agente está preparando sua entrega…"),
      blocos && blocos.length
        ? h("div", { className: "agent-blocks" }, blocos.map((bl, i) => h(BlocoCopiavel, { key: i, label: bl.label, body: bl.body })))
        : out && h("div", { className: "agent-out" },
            h("div", { className: "agent-out-head" },
              h("span", { className: "agent-out-t" }, "Entrega pronta"),
              h("button", { className: "agent-copy", onClick: copiar }, copied ? "✓ Copiado" : "⧉ Copiar")
            ),
            h("div", { className: "agent-out-body" }, out)
          ),
      out && h("div", { className: "agent-save" },
        h("span", { className: "agent-save-l" }, "💾 Salvar em"),
        h("select", { className: "agent-save-sel", value: alvo, onChange: (e) => setAlvo(e.target.value) },
          h("option", { value: "__novo" }, "+ Novo conteúdo (Produção)"),
          state.conteudos.slice(0, 60).map((c) => h("option", { key: c.id, value: c.id }, c.titulo.slice(0, 50)))
        ),
        h("select", { className: "agent-save-sel", value: campo, onChange: (e) => setCampo(e.target.value) },
          h("option", { value: "roteiro" }, "Conteúdo do post"),
          h("option", { value: "resumo" }, "Ideia / briefing")
        ),
        h("button", { className: "btn-pink sm", onClick: salvar }, "Salvar"),
        savedMsg && h("span", { className: "agent-saved" }, savedMsg)
      )
    );
  }

  function BlocoCopiavel({ label, body }) {
    const [c, setC] = useState(false);
    function cp() { navigator.clipboard && navigator.clipboard.writeText(body); setC(true); setTimeout(() => setC(false), 1600); }
    return h("div", { className: "agent-out" },
      h("div", { className: "agent-out-head" },
        h("span", { className: "agent-out-t" }, label),
        h("button", { className: "agent-copy", onClick: cp }, c ? "✓ Copiado" : "⧉ Copiar")
      ),
      h("div", { className: "agent-out-body" }, body)
    );
  }

  function Agentes() {
    const [sel, setSel] = useState(null);
    const agente = AGENTES.find((a) => a.id === sel);
    return h("div", { className: "page narrow" },
      h(PageHead, { titulo: "Agentes", sub: "Um agente pré-configurado por função. Escolha, mande o tema e receba pronto." }),
      agente
        ? h(AgentWork, { agente, onBack: () => setSel(null) })
        : h("div", { className: "agentes-grid" }, AGENTES.map((a) => h("button", { key: a.id, className: "agent-card", style: { "--agent-bg": a.cor + "18", "--agent-bd": a.cor + "3D" }, onClick: () => setSel(a.id) },
            h("span", { className: "agent-ic" }, a.emoji),
            h("div", { className: "agent-nome" }, a.nome),
            h("div", { className: "agent-tag" }, a.tagline),
            h("div", { className: "agent-go", style: { color: a.cor } }, "Abrir agente →")
          )))
    );
  }

  window.Agentes = Agentes;
})();
