1import { Body, Controller, HttpCode, Inject, Param, Post, UseGuards } from "@nestjs/common";
2import { ZodValidate } from "../../common/pipes/zod-validation.pipe.js";
3import { InternalServiceGuard } from "../../common/guards/internal-service.guard.js";
4import { AiTestSeamService } from "./ai-test-seam.service.js";
5import { AiUsageLimitsDto, MockAssistantDto, MockDbInvalidDto, MockFailDto, MockGenerateSeamDto, MockUnknownBlockIdDto, type AiUsageLimitsInput, type MockAssistantInput, type MockDbInvalidInput, type MockFailInput, type MockGenerateSeamInput, type MockUnknownBlockIdInput } from "./ai-test-seam.dto.js";
6
7
27@Controller("internal")
28@UseGuards(InternalServiceGuard)
29export class AiTestSeamController {
30 constructor(@Inject(AiTestSeamService) private readonly seam: AiTestSeamService) {}
31
32 @Post("workspaces/:workspaceId/ai/mock-fail")
33 @HttpCode(200)
34 armMockOutage(
35 @Param("workspaceId") workspaceId: string,
36 @Body(ZodValidate(MockFailDto)) body: MockFailInput
37 ) {
38 return this.seam.armMockOutage(workspaceId, body);
39 }
40
41 @Post("workspaces/:workspaceId/ai/usage-limits")
42 @HttpCode(200)
43 setAiUsageLimits(
44 @Param("workspaceId") workspaceId: string,
45 @Body(ZodValidate(AiUsageLimitsDto)) body: AiUsageLimitsInput
46 ) {
47 return this.seam.setAiUsageLimits(workspaceId, body);
48 }
49
50
55 @Post("workspaces/:workspaceId/ai/mock-unknown-id")
56 @HttpCode(200)
57 armMockUnknownBlockId(
58 @Param("workspaceId") workspaceId: string,
59 @Body(ZodValidate(MockUnknownBlockIdDto)) body: MockUnknownBlockIdInput
60 ) {
61 return this.seam.armMockUnknownBlockId(workspaceId, body);
62 }
63
64
70 @Post("workspaces/:workspaceId/ai/mock-db-invalid")
71 @HttpCode(200)
72 armMockDbInvalid(
73 @Param("workspaceId") workspaceId: string,
74 @Body(ZodValidate(MockDbInvalidDto)) body: MockDbInvalidInput
75 ) {
76 return this.seam.armMockDbInvalid(workspaceId, body);
77 }
78
79
85
91 @Post("workspaces/:workspaceId/ai/mock-assistant")
92 @HttpCode(200)
93 armMockAssistant(
94 @Param("workspaceId") workspaceId: string,
95 @Body(ZodValidate(MockAssistantDto)) body: MockAssistantInput
96 ) {
97 return this.seam.armMockAssistantSeam(workspaceId, body);
98 }
99
100 @Post("workspaces/:workspaceId/ai/mock-generate")
101 @HttpCode(200)
102 armMockGenerate(
103 @Param("workspaceId") workspaceId: string,
104 @Body(ZodValidate(MockGenerateSeamDto)) body: MockGenerateSeamInput
105 ) {
106 return this.seam.armMockGenerateSeam(workspaceId, body);
107 }
108}
109