UNPKG

@autobe/agent

Version:

AI backend server code generator

114 lines (113 loc) 4.98 kB
import { AutoBeRealizeTransformerSelectMapping, AutoBeRealizeTransformerTransformMapping } from "@autobe/interface"; import { IAutoBePreliminaryGetDatabaseSchemas } from "../../common/structures/IAutoBePreliminaryGetDatabaseSchemas"; export interface IAutoBeRealizeTransformerCorrectApplication { /** * Process transformer correction task or preliminary data requests. * * @param props Preliminary data request or write submission */ process(props: IAutoBeRealizeTransformerCorrectApplication.IProps): void; } export declare namespace IAutoBeRealizeTransformerCorrectApplication { interface IProps { /** * Think before you act. * * For preliminary requests: what critical information is missing? * * For write: what errors you're fixing and the correction strategy. */ thinking: string; /** * Action to perform. Exhausted preliminary types are removed from the * union, physically preventing repeated calls. */ request: IWrite | IAutoBePreliminaryGetDatabaseSchemas; } /** Correct transformer compilation errors via think/draft/revise. */ interface IWrite { /** Type discriminator for write submission. */ type: "write"; /** * Systematic error analysis. MUST contain four sections: * * 1. Error Inventory — categorize ALL compilation errors by root cause * 2. Root Cause Analysis — identify WHY each error occurs (wrong field, wrong * transform, etc.) * 3. Schema Verification — cross-check error-related fields against actual * database schema * 4. Correction Strategy — specific fix for each error in BOTH select() and * transform() * * This forces you to understand the REAL problem (not guess) and plan * surgical fixes that address root causes, not symptoms. */ think: string; /** * Selection mapping verification for select(). For each database field * needed by transform(), document: * * - `member`: Exact Prisma field/relation name (snake_case) — verify against * the Relation Mapping Table and member list * - `kind`: scalar, belongsTo, hasOne, or hasMany * - `nullable`: true/false for scalar/belongsTo, null for hasMany/hasOne * - `how`: Current state + correction plan ("No change needed", "Fix: wrong * field name", etc.) * * **Common selection errors to identify**: * * - Wrong field name (typo or doesn't exist in schema) * - Missing required field (transform() uses it but select() doesn't) * - Wrong syntax (true for relation, or nested select for scalar) * * Missing even a single required field will cause validation failure. */ selectMappings: AutoBeRealizeTransformerSelectMapping[]; /** * Transform mapping verification. MUST include EVERY DTO property. * * - `property`: Exact DTO property name (camelCase) * - `how`: Current state + correction plan ("No change needed", "Fix: * [problem] → [solution]") * * Even correct properties must be included with "No change needed" to * ensure complete review. * * Missing even a single property will cause validation failure. */ transformMappings: AutoBeRealizeTransformerTransformMapping[]; /** * Complete corrected code. EVERY error from think Section 1 MUST be * addressed. Implement: * * - Field name corrections in select() (exact database field names) * - Type casts in transform() (Decimal→Number, DateTime→ISO) * - Neighbor transformer reuse (replace inline logic if transformer exists) * * Apply fixes surgically — change ONLY what's broken, preserve working * logic. */ draft: string; /** Reviews draft corrections and produces final error-free code. */ revise: IReviseProps; } interface IReviseProps { /** * MUST systematically verify four checklists: * * 1. Error Resolution — confirm EVERY error from think Section 1 is fixed * 2. Root Cause Fix — verify fixes address root causes (not workarounds/hacks) * 3. System Rules — neighbor reuse, select (not include), proper types * 4. No Regression — confirm no NEW errors, Payload type matches select() * * Catch Band-Aid fixes (any casts, type assertions) that hide real * problems. */ review: string; /** * Final error-free code with all corrections applied, or null if draft * needs no changes. */ final: string | null; } }