@autobe/agent
Version:
AI backend server code generator
105 lines (104 loc) • 4.56 kB
TypeScript
import { AutoBeRealizeCollectorMapping } from "@autobe/interface";
import { IAutoBePreliminaryComplete } from "../../common/structures/IAutoBePreliminaryComplete";
import { IAutoBePreliminaryGetDatabaseSchemas } from "../../common/structures/IAutoBePreliminaryGetDatabaseSchemas";
/**
* Generates collector functions that convert API request DTOs to Prisma
* database inputs (API → DB) via plan/draft/revise workflow.
*/
export interface IAutoBeRealizeCollectorWriteApplication {
/**
* Process collector generation task.
*
* @param props Preliminary data request, write submission, or completion
* confirmation
*/
process(props: IAutoBeRealizeCollectorWriteApplication.IProps): void;
}
export declare namespace IAutoBeRealizeCollectorWriteApplication {
interface IProps {
/**
* Think before you act.
*
* For preliminary requests: what database schemas are missing and why?
*
* For write: what you're submitting and key mapping decisions.
*
* For complete: why you consider the last write final.
*
* Note: All DTO type information is available transitively from the plan's
* DTO type names. You only need to request database schemas.
*/
thinking: string;
/**
* Action to perform. Exhausted preliminary types are removed from the
* union, physically preventing repeated calls.
*/
request: IWrite | IAutoBePreliminaryGetDatabaseSchemas | IAutoBePreliminaryComplete;
}
/** Generate collector module via plan/draft/revise. */
interface IWrite {
/** Type discriminator for write submission. */
type: "write";
/**
* Collector implementation plan. MUST contain four sections:
*
* 1. Database Schema Field Inventory — ALL fields with exact names from schema
* 2. DTO Property Inventory — ALL properties with types
* 3. Field-by-Field Mapping Strategy — explicit mapping for every field
* 4. Edge Cases and Special Handling — nullable, arrays, conditionals
*
* This forces you to READ the actual schema (not imagine it) and creates an
* explicit specification that the draft must implement.
*/
plan: string;
/**
* Field-by-field mapping for complete database coverage.
*
* MUST include EVERY field and relation from the database schema — no
* exceptions. Each mapping specifies:
*
* - `member`: Exact Prisma field/relation name — read from schema, NOT from
* DTO property names or FK column names
* - `kind`: scalar, belongsTo, hasOne, or hasMany
* - `nullable`: true/false for scalar/belongsTo, null for hasMany/hasOne
* - `how`: How to obtain/generate the value for that field
*
* The `kind` property forces explicit classification BEFORE deciding how to
* handle it, preventing errors like treating belongsTo as scalar.
*
* Missing even a single field will cause validation failure.
*/
mappings: AutoBeRealizeCollectorMapping[];
/**
* Complete implementation following plan's mapping table. EVERY field from
* plan Section 3 MUST appear. Implement:
*
* - Namespace with collect() function
* - All field mappings (direct, connect, nested create)
* - Neighbor collector reuse (NEVER inline when collector exists)
* - UUID generation with v4(), proper Prisma CreateInput types
*/
draft: string;
/** Reviews draft and produces final code. */
revise: IReviseProps;
}
interface IReviseProps {
/**
* MUST systematically verify four checklists:
*
* 1. Schema Fidelity — cross-check EVERY field name against plan Section 1
* 2. Plan Adherence — verify EVERY mapping from Section 3 is implemented
* 3. System Rules — neighbor reuse, props structure, satisfies type
* 4. Type Safety — compilation check, nullable handling, async/await
*
* Identify issues with line numbers. This catches hallucinated fields,
* missing mappings, and rule violations.
*/
review: string;
/**
* Final collector code with all review improvements applied, or null if
* draft needs no changes.
*/
final: string | null;
}
}