@autobe/agent
Version:
AI backend server code generator
96 lines (95 loc) • 3.51 kB
TypeScript
import { CamelCasePattern, PascalCasePattern } from "@autobe/interface";
import { IAutoBePreliminaryComplete } from "../../common/structures/IAutoBePreliminaryComplete";
import { IAutoBePreliminaryGetDatabaseSchemas } from "../../common/structures/IAutoBePreliminaryGetDatabaseSchemas";
/**
* Generates authentication components (provider, decorator, payload) for an
* actor type.
*/
export interface IAutoBeRealizeAuthorizationWriteApplication {
/**
* Process authentication generation task.
*
* @param next Preliminary data request, write submission, or completion
* confirmation
*/
process(next: IAutoBeRealizeAuthorizationWriteApplication.IProps): void;
}
export declare namespace IAutoBeRealizeAuthorizationWriteApplication {
interface IProps {
/**
* Think before you act.
*
* For preliminary requests: what database schemas are missing and why?
*
* For write: what authentication components you're submitting.
*
* 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 | IAutoBePreliminaryGetDatabaseSchemas | IAutoBePreliminaryComplete;
}
/**
* Request to generate authentication components (provider, decorator,
* payload).
*/
interface IWrite {
/** Type discriminator for write submission. */
type: "write";
/**
* Authentication Provider function (JWT verification, role validation, DB
* queries).
*/
provider: IAutoBeRealizeAuthorizationWriteApplication.IProvider;
/**
* Authentication Decorator (NestJS parameter decorator injecting
* authenticated user data).
*/
decorator: IAutoBeRealizeAuthorizationWriteApplication.IDecorator;
/**
* Authentication Payload Type (TypeScript type for authenticated user data
* in Controller methods).
*/
payload: IAutoBeRealizeAuthorizationWriteApplication.IPayloadType;
}
interface IProvider {
/**
* Provider function name in {role}Authorize format (e.g., adminAuthorize).
* MUST use camelCase.
*/
name: string & CamelCasePattern;
/**
* Complete TypeScript code. MUST include: jwtAuthorize call, role type
* check, MyGlobal.prisma.{tableName} query,
* ForbiddenException/UnauthorizedException handling.
*/
content: string;
}
interface IDecorator {
/**
* Decorator name in {Actor}Auth format (e.g., AdminAuth, UserAuth). MUST
* use PascalCase.
*/
name: string & PascalCasePattern;
/**
* Complete TypeScript code. MUST include: SwaggerCustomizer integration,
* createParamDecorator calling Provider, Singleton pattern via tstl.
*/
content: string;
}
interface IPayloadType {
/**
* Payload type name in {Actor}Payload format (e.g., AdminPayload,
* UserPayload). MUST use PascalCase.
*/
name: string & PascalCasePattern;
/**
* Complete TypeScript code. MUST include: id field with UUID validation,
* type field as role discriminator, typia tags.
*/
content: string;
}
}