import { MicroAgenticaHistory } from "@agentica/core";
import {
  AutoBeFunctionCallingMetric,
  IAutoBeTokenUsageJson,
} from "@autobe/interface";

/**
 * Result from RAG iteration in preliminary orchestration.
 *
 * Returned by process callback in `AutoBePreliminaryController.orchestrate()`.
 * If `value` is `null`, RAG loop continues; if non-null, orchestration
 * completes.
 *
 * @author Samchon
 */
export interface IAutoBeOrchestrateResult<T> {
  /** Task result: `null` = needs more context, non-null = completed. */
  value: T | null;

  /** LLM conversation histories including function calling. */
  histories: MicroAgenticaHistory[];

  /** Token usage metrics for this iteration. */
  tokenUsage: IAutoBeTokenUsageJson.IComponent;

  /** Function calling performance metrics. */
  metric: AutoBeFunctionCallingMetric;
}
