Framework para orquestração e coordenação de múltiplos agentes de IA em sistemas distribuídos.
- Orquestração Distribuída: Coordena agentes rodando em diferentes processos/servidores
- Event Bus Nativo: Sistema de eventos para comunicação assíncrona
- Registry Inteligente: Descoberta automática e health check de agentes
- Workflows Declarativos: Configure fluxos complexos via eventos
- Proxy Transparente: Comunicação uniforme com agentes locais e remotos
- Zero Dependências: Funciona independente de infraestrutura externa
npm install @riligar/orchestrator-sdk @riligar/agents-sdkimport { Orchestrator } from "@riligar/orchestrator-sdk";
import { Logger } from "@riligar/agents-sdk";
const logger = new Logger({ level: "verbose" });
// Criar orchestrator
const orchestrator = new Orchestrator({
name: "my-orchestrator",
logger,
});
// Registrar agentes remotos
await orchestrator.registerAgent("agent-1", "http://localhost:3001", [
"capability.process",
"capability.analyze",
]);
// Configurar workflow
orchestrator.setupWorkflow("data-processing", {
"data.received": {
targetCapability: "capability.process",
task: "Processar dados recebidos",
contextMapping: {
dataId: "data.id",
content: "data.content",
},
emitEvent: "data.processed",
},
});
// Executar tarefa
const result = await orchestrator.executeByCapability(
"capability.process",
"Processar arquivo importante"
);
console.log("Resultado:", result);- Orchestrator: Coordenador central
- AgentRegistry: Registro e descoberta de agentes
- EventBus: Sistema de eventos assíncronos
- AgentProxy: Abstração de comunicação
- Workflow: Fluxos automatizados
[Orchestrator] ↔ [AgentRegistry] ↔ [AgentProxy] ↔ [Remote Agent]
↕ ↕
[EventBus] ↔ [Workflow] [Local Agent]
// Registrar agentes especializados
await crm.registerAgent("lead-capture", "http://lead-service:3001", [
"lead.qualify",
"lead.score",
]);
await crm.registerAgent("relationship", "http://relationship-service:3002", [
"customer.engage",
"conversation.manage",
]);
// Workflow automático
crm.setupWorkflow("lead-to-customer", {
"lead.qualified": {
targetCapability: "customer.engage",
task: "Iniciar relacionamento com lead qualificado",
contextMapping: {
leadId: "data.leadId",
score: "data.score",
},
emitEvent: "relationship.started",
},
});
// Sistema funciona automaticamente!// Health check automático
orchestrator.startHealthCheck(30000); // 30s
// Status completo
const status = orchestrator.getStatus();
console.log("Agentes ativos:", status.registry.activeAgents);
console.log("Workflows:", status.workflows.active);
// Estatísticas de performance
const stats = orchestrator.getProxyStats();
stats.forEach((stat) => {
console.log(`${stat.agentId}: ${stat.successRate} sucesso`);
});registerAgent(id, url, capabilities)- Registra agente remotoregisterLocalAgent(id, instance, capabilities)- Registra agente localexecuteOnAgent(id, task, context)- Executa em agente específicoexecuteByCapability(capability, task, context)- Executa por capacidadesetupWorkflow(name, mappings)- Configura workflowemit(eventType, data)- Emite eventogetStatus()- Status completo
publish(eventType, data, source)- Publica eventosubscribe(eventType, agentId, handler, filters)- Subscreve a eventogetStats()- Estatísticas de eventos
findAgentByCapability(capability)- Encontra agente por capacidadegetActiveAgents()- Lista agentes ativosstartHealthCheck(interval)- Inicia monitoramento
# Instalar dependências
npm install
# Build
npm run build
# Exemplo
node examples/crm-orchestrated.jsApache-2.0
Contribuições são bem-vindas! Veja os issues para oportunidades.
Parte do ecossistema RiLiGar 🚀