import { IMicroAgenticaHistoryJson } from "@agentica/core"; import { AutoBeEventSource, AutoBePreliminaryAcquisition, AutoBePreliminaryKind, AutoBePreliminaryRewriteEvent } from "@autobe/interface"; import { IJsonSchemaApplication, ILlmApplication, IValidation } from "@typia/interface"; import { AutoBeContext } from "../../context/AutoBeContext"; import { AutoBeState } from "../../context/AutoBeState"; import { IAutoBePreliminaryRequest } from "./structures/AutoBePreliminaryRequest"; import { IAutoBeOrchestrateResult } from "./structures/IAutoBeOrchestrateResult"; import { IAutoBePreliminaryCollection } from "./structures/IAutoBePreliminaryCollection"; /** * RAG controller for incremental context loading. * * Manages LLM's incremental data requests via function calling, preventing * duplicates and auto-resolving dependencies. * * - `all`: globally available data (from state) * - `local`: currently loaded data (agent context) * - Auto-complements prerequisites, $ref dependencies, and neighbors * * @author Samchon */ export declare class AutoBePreliminaryController { private readonly source; private readonly source_id; private readonly kinds; private readonly argumentTypeNames; private readonly dispatch; private readonly all; private readonly local; private readonly config; private readonly state; private analysisPageOffset; private previousWrites; private completed; /** * Initializes controller with data collections and auto-complements * dependencies. * * @param props Constructor configuration including kinds, state, and initial * data. */ constructor(props: AutoBePreliminaryController.IProps); /** * Validates request for duplicates and non-existent items. * * @param input LLM's function calling request to validate. * @returns Validation result with errors if duplicates or non-existent items * found. */ validate(input: IAutoBePreliminaryRequest): IValidation>; /** * Generates dynamic system prompts with `LOADED`/`AVAILABLE` lists. * * @returns Assistant and system messages with loaded/available item lists. */ getHistories(): IMicroAgenticaHistoryJson[]; /** * Returns the orchestration source that created this controller. * * @returns Source event type (e.g., `"realizeWrite"`, `"interfaceSchema"`). */ getSource(): Exclude; /** * Returns data types enabled for this controller. * * @returns Array of enabled kinds (e.g., `["databaseSchemas", * "interfaceSchemas"]`). */ getKinds(): Kind[]; /** * Returns configuration (e.g., database schema format: `"ast"` | `"text"`). * * @returns Controller configuration object. */ getConfig(): AutoBePreliminaryController.IConfig; /** * Returns function calling type names available in LLM application. * * @returns Array of request type names from `oneOf` union. */ getArgumentTypeNames(): string[]; /** * Returns all globally available data from state. * * @returns Complete dataset that can be requested. */ getAll(): Pick; /** * Returns currently loaded data in agent context. * * @returns Subset of data already provided to LLM. */ getLocal(): Pick; /** * Extracts acquisition metadata from the currently loaded preliminary data. * * Transforms the local preliminary collection into a normalized acquisition * structure that is suitable for event tracking, including only metadata such * as filenames, schema names, and operation identifiers rather than full * objects. * * @returns Acquisition metadata derived from currently loaded data, * normalized for event tracking. */ getAcquisition(): Pick; /** * Returns the current AutoBe state. * * @returns Current pipeline state containing all phase histories. */ getState(): AutoBeState; /** Returns current page offset for analysis section metadata pagination. */ getAnalysisPageOffset(): number; getPreviousWrite(): Record | null; /** Advances analysis section metadata page by PAGE_SIZE. */ advanceAnalysisPage(): void; /** * Dynamically adjusts LLM application schema at runtime. * * Removes `getPreviousXXX` types from union/oneOf when no previous iteration * exists. Mutates application's `anyOf`/`oneOf` array, `$defs`, and * `discriminator` mapping. Also erases corresponding `kinds` from * controller's `all`/`local` collections. * * @param application LLM application to modify (mutated in-place) */ fixApplication(application: ILlmApplication, enumerable?: boolean): ILlmApplication; /** * Runs RAG loop for incremental context loading. * * Repeats until process returns non-null value or exceeds the maximum number * of iterations (`AutoBeConfigConstant.RAG_LIMIT`). Each iteration: LLM * requests data → `orchestratePreliminary` adds to `local` → next iteration * with updated context. * * When RAG_LIMIT is exhausted, throws `AutoBePreliminaryExhaustedError` which * can be caught alongside `AutoBeTimeoutError` for force-pass. * * @param ctx AutoBe context for `conversate` and state access. * @param process Callback that runs LLM `conversate` and returns result. * @returns Final value when process returns non-null or throws after * exceeding `AutoBeConfigConstant.RAG_LIMIT` retries. */ orchestrate(ctx: AutoBeContext, process: (out: (result: AutoBeContext.IResult) => (value: T | null) => IAutoBeOrchestrateResult) => Promise>): Promise; } export declare namespace AutoBePreliminaryController { /** Constructor props for `AutoBePreliminaryController`. */ interface IProps { /** Orchestration source creating this controller. */ source: Exclude; /** LLM application schema for function calling validation. */ application: IJsonSchemaApplication; dispatch: (event: AutoBePreliminaryRewriteEvent) => void; /** * Data types to enable (e.g., `["databaseSchemas", * "interfaceOperations"]`). */ kinds: Kind[]; /** Current AutoBe state containing generated artifacts. */ state: AutoBeState; /** Override globally available data (defaults to state). */ all?: Partial>; /** Initial loaded data for agent context. */ local?: Partial>; /** Controller configuration options. */ config?: Partial>; } /** Result from orchestration process callback. */ interface IProcessResult { /** Returned value if task completed, `undefined` if needs more context. */ value: T | undefined; /** Conversation histories including function calling. */ histories: IMicroAgenticaHistoryJson[]; } /** Controller configuration options. */ interface IConfig { /** Database schema format: `"ast"` (JSON) or `"text"` (Database DSL). */ database: Kind extends "databaseSchemas" | "previousDatabaseSchemas" ? "ast" | "text" : never; databaseProperty: boolean; } }