UNPKG

@autobe/agent

Version:

AI backend server code generator

73 lines (66 loc) 2.71 kB
import { AutoBeDatabaseSchemaDefinition } from "@autobe/interface"; import { IAutoBePreliminaryComplete } from "../../common/structures/IAutoBePreliminaryComplete"; import { IAutoBePreliminaryGetAnalysisSections } from "../../common/structures/IAutoBePreliminaryGetAnalysisSections"; import { IAutoBePreliminaryGetPreviousAnalysisSections } from "../../common/structures/IAutoBePreliminaryGetPreviousAnalysisSections"; import { IAutoBePreliminaryGetPreviousDatabaseSchemas } from "../../common/structures/IAutoBePreliminaryGetPreviousDatabaseSchemas"; export interface IAutoBeDatabaseSchemaApplication { /** * Process schema generation task. * * @param props Preliminary data request, write submission, or completion * confirmation */ process(props: IAutoBeDatabaseSchemaApplication.IProps): void; } export namespace IAutoBeDatabaseSchemaApplication { export interface IProps { /** * Think before you act. * * For preliminary requests: what information is missing and why? * * For write: what you're submitting and key design decisions. * * For complete: why you consider the last write final. */ thinking: string; /** * Action to perform. Exhausted preliminary types are removed from the * union, physically preventing repeated calls. */ request: | IWrite | IAutoBePreliminaryComplete | IAutoBePreliminaryGetAnalysisSections | IAutoBePreliminaryGetPreviousAnalysisSections | IAutoBePreliminaryGetPreviousDatabaseSchemas; } /** Submit production-ready database schema models. */ export interface IWrite { /** Type discriminator for write submission. */ type: "write"; /** * Database design plan for the target table and any child tables (1NF * decomposition). * * Child table naming: singular form of targetTable as prefix (e.g., * "shopping_order_items"). Never recreate existing tables from * otherComponents. Strict 1NF/2NF/3NF adherence. Junction tables: * {table1}_{table2}. Materialized views: mv_ prefix. */ plan: string; /** * Schema definition with exactly one * {@link AutoBeDatabaseSchemaDefinition.model} (the target table). * Additional child tables go in * {@link AutoBeDatabaseSchemaDefinition.newDesigns} as name + description * pairs. * * Key rules: UUID "id" primary keys, data types limited to * uuid/string/int/double/ datetime/boolean/uri, no derived values, strict * 3NF, mv_ prefix for materialized views, consistent * created_at/updated_at/deleted_at, PlainIndexes never single FK. */ definition: AutoBeDatabaseSchemaDefinition; } }