/** * Conversation Log: o registro do que os agentes falaram entre si durante um run. * * O `protocol/messages.ts` define os OBJETOS trocados; este módulo é o canal. * Existe para responder uma pergunta que o trace sozinho não respondia: quem * pediu o quê a quem, com base em qual artefato, e o que voltou. * * A regra da arquitetura vale aqui inteira: mensagem carrega REFERÊNCIA de * artefato (`runId:nodeId`), nunca cópia do conteúdo. Um `payload` só entra * quando é uma estrutura pequena e decisória (a lista de issues de uma * crítica, por exemplo) — nunca o texto produzido pelo nó. Sem isso o log * viraria uma segunda cópia do run inteiro, que é exatamente o desperdício que * o protocolo existe para evitar. * * O log é determinístico: nenhuma chamada de modelo, nenhum resumo gerado. */ import { type AgentMessage, type AgentMessageType } from './messages.js'; /** Linha compacta do log, formato persistido no `RunTrace`. */ export interface ConversationEntry { id: string; from: string; to: string; type: AgentMessageType; taskId: string; artifactRefs?: string[]; /** Resumo de UMA linha do que a mensagem carrega. Nunca o conteúdo inteiro. */ summary: string; confidence?: number; timestamp: string; } export declare class ConversationLog { private readonly entries; /** Mensagens descartadas pelo teto: contadas para que o log nunca minta por omissão. */ private dropped; /** * Registra uma mensagem. `summary` é obrigatório e é o que aparece no * `izanagi explain`: quem não conseguir resumir a mensagem em uma linha * provavelmente está tentando mandar conteúdo, e não uma mensagem. */ record(input: { from: string; to: string; type: AgentMessageType; taskId: string; summary: string; artifactRefs?: string[]; payload?: unknown; confidence?: number; }): AgentMessage; /** Todas as mensagens registradas, em ordem cronológica. */ all(): ConversationEntry[]; /** Mensagens de uma tarefa específica (nodeId). */ forTask(taskId: string): ConversationEntry[]; get size(): number; get droppedCount(): number; /** Contagem por tipo, para a telemetria e o relatório final. */ countByType(): Record; } //# sourceMappingURL=conversation.d.ts.map