UNPKG

@autobe/agent

Version:

AI backend server code generator

108 lines (101 loc) 4.22 kB
import { AutoBeOpenApi } from "@autobe/interface"; import { tags } from "typia"; import { IAutoBePreliminaryGetAnalysisFiles } from "../../common/structures/IAutoBePreliminaryGetAnalysisFiles"; import { IAutoBePreliminaryGetPrismaSchemas } from "../../common/structures/IAutoBePreliminaryGetPrismaSchemas"; export interface IAutoBeInterfaceAuthorizationsApplication { /** * Process authorization operations generation task or preliminary data * requests. * * Generates authorization operations for the given roles and ensures the * interface reflects correct permissions and access levels. * * @param props Request containing either preliminary data request or complete * task */ process(props: IAutoBeInterfaceAuthorizationsApplication.IProps): void; } export namespace IAutoBeInterfaceAuthorizationsApplication { export interface IProps { /** * Think before you act. * * Before requesting preliminary data or completing your task, reflect on your * current state and explain your reasoning: * * For preliminary requests (getAnalysisFiles, getPrismaSchemas, etc.): * - What critical information is missing that you don't already have? * - Why do you need it specifically right now? * - Be brief - state the gap, don't list everything you have. * * For completion (complete): * - What key assets did you acquire? * - What did you accomplish? * - Why is it sufficient to complete? * - Summarize - don't enumerate every single item. * * This reflection helps you avoid duplicate requests and premature completion. */ thinking: string; /** * Type discriminator for the request. * * Determines which action to perform: preliminary data retrieval * (getAnalysisFiles, getPrismaSchemas) or final authorization operations * generation (complete). When preliminary returns empty array, that type is * removed from the union, physically preventing repeated calls. */ request: | IComplete | IAutoBePreliminaryGetAnalysisFiles | IAutoBePreliminaryGetPrismaSchemas; } /** * Request to generate authorization operations. * * Executes authorization operations generation to define the authorization * requirements for the given roles. Ensures operations reflect correct * permissions and access levels for each role. */ export interface IComplete { /** * Type discriminator for the request. * * Determines which action to perform: preliminary data retrieval or actual * task execution. Value "complete" indicates this is the final task * execution request. */ type: "complete"; /** * Array of API operations to generate authorization operation for. * * Each operation in this array must include: * * - Specification: Detailed API specification with clear purpose and * functionality * - Path: Resource-centric URL path (e.g., "/resources/{resourceId}") * - Method: HTTP method (get, post, put, delete, patch) * - Description: Extremely detailed multi-paragraph description referencing * Prisma schema comments * - Summary: Concise one-sentence summary of the endpoint * - Parameters: Array of all necessary parameters with descriptions and * schema definitions * - RequestBody: For POST/PUT/PATCH methods, with typeName referencing * components.schemas * - ResponseBody: With typeName referencing appropriate response type * * All operations must follow strict quality standards: * * 1. Detailed descriptions referencing Prisma schema comments * 2. Accurate parameter definitions matching path parameters * 3. Appropriate request/response body type references * 4. Consistent patterns for CRUD operations * * For list retrievals (typically PATCH), include pagination, search, and * sorting. For detail retrieval (GET), return a single resource. For * creation (POST), use .ICreate request body. For modification (PUT), use * .IUpdate request body. */ operations: AutoBeOpenApi.IOperation[] & tags.MinItems<1>; } }