Sobre o projeto

BareAgent é uma biblioteca leve de orquestração de agentes, sem dependências, para Node.js, que fornece um loop pensar→agir→observar para agentes de IA. Diferente de estruturas mais pesadas como LangChain, CrewAI ou AutoGen, o BareAgent foca em blocos de construção componíveis em vez de uma estrutura monolítica, e o núcleo não importa nenhuma dependência externa. As capacidades principais incluem: - **Loop**: O ciclo central pensar→agir→observar que é executado até uma meta ser concluída, com pontos de integração opcionais para governança de políticas, engenharia de contexto e poda de transcrição. - **Planner & runPlan**: Divide metas em um DAG de etapas e executa as etapas em ondas paralelas com consciência de dependências e nova tentativa por etapa. - **recurse (RLM)**: Uma primitiva de decomposição recursiva que decompõe tarefas difíceis, distribui subtarefas, verifica resultados e sintetiza uma resposta final. Suporta geração orientada por modelo, expansão forçada e particionamento orientado por dados. Inclui contagem honesta sobre corpora via recuperação baseada em varredura que conta por código em vez de depender de números declarados pelo modelo. - **Memória**: Armazenamento persistente e recuperação entre sessões via interface Store substituível (JSON, SQLite ou litextx). - **Governança**: A integração opcional com bareguard fornece um único ponto de controle de políticas sobre todas as chamadas de LLM e ferramentas, com registro de auditoria, limites de orçamento e pontos de verificação de aprovação humana. - **Resiliência**: Nova tentativa com backoff e jitter, disjuntor (circuit breaker) e failover de provedor. - **Provedores**: Suporta APIs compatíveis com OpenAI, Anthropic, Gemini, Ollama, CLIPipe e provedores personalizados. Todos retornam um formato normalizado com métricas honestas de token/custo, incluindo relatório de camadas de cache de prompt. - **Ferramentas**: Qualquer função pode ser uma ferramenta. Navegação web embutida (barebrowse), controle móvel (baremobile) e execução de shell. A Ponte MCP (MCP Bridge) descobre automaticamente servidores MCP a partir de configurações de IDE. - **Multilinguagem**: Pode ser executado como subprocesso a partir de Python, Go, Rust, Ruby ou Java via JSONL em stdin/stdout. - **Streaming**: Eventos JSONL estruturados para progresso em tempo real. - **Avaliador & refine**: Avalia a saída por predicado, rubrica ou crítico agêntico, com um loop limitado de gerar→avaliar→regenerar. - **Agendador**: Acionadores cron ou relativos com persistência de trabalhos entre reinicializações. - **Checkpoint**: Portão de aprovação humana com transporte trazido pelo usuário. - **Spawn**: Cria agentes filhos com log de auditoria e orçamento compartilhados. - **Defer**: Enfileira ações para execução posterior por um despertador. - **SkillRegistry**: Expõe habilidades sob demanda via um catálogo de meta-ferramentas. - **stash**: Compacta trabalhos concluídos para fora da janela de contexto ativa ou dobra automaticamente sob pressão de tokens. A biblioteca é projetada para ser leve o suficiente para ser completamente compreendida, ao mesmo tempo que é completa o suficiente para evitar reinventar a roda. Ela é distribuída com zero dependências obrigatórias; pares opcionais incluem bareguard para governança, better-sqlite3 para armazenamento SQLite e cron-parser para agendamento. Licenciada sob Apache 2.0.