@autobe/agent 0.0.0 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/LICENSE +21 -21
  2. package/lib/AutoBeAgent.d.ts +9 -7
  3. package/lib/AutoBeAgent.js +106 -14
  4. package/lib/AutoBeAgent.js.map +1 -1
  5. package/lib/analyze/AnalyzeAgent.d.ts +24 -0
  6. package/lib/analyze/AnalyzeAgent.js +817 -0
  7. package/lib/analyze/AnalyzeAgent.js.map +1 -0
  8. package/lib/analyze/CreateReviewerAgent.d.ts +16 -0
  9. package/lib/analyze/CreateReviewerAgent.js +97 -0
  10. package/lib/analyze/CreateReviewerAgent.js.map +1 -0
  11. package/lib/analyze/Planning.d.ts +63 -0
  12. package/lib/{orchestrate/orchestratePrisma.js → analyze/Planning.js} +28 -11
  13. package/lib/analyze/Planning.js.map +1 -0
  14. package/lib/constants/AutoBeSystemPromptConstant.d.ts +14 -0
  15. package/lib/constants/AutoBeSystemPromptConstant.js +4 -0
  16. package/lib/constants/AutoBeSystemPromptConstant.js.map +1 -0
  17. package/lib/context/AutoBeContext.d.ts +7 -3
  18. package/lib/context/IAutoBeApplication.d.ts +72 -32
  19. package/lib/context/IAutoBeApplicationProps.d.ts +22 -2
  20. package/lib/context/IAutoBeApplicationResult.d.ts +0 -1
  21. package/lib/context/assertSchemaModel.d.ts +2 -0
  22. package/lib/context/assertSchemaModel.js +15 -0
  23. package/lib/context/assertSchemaModel.js.map +1 -0
  24. package/lib/{internal/transformAgenticaHistory.d.ts → factory/createAgenticaHistory.d.ts} +1 -1
  25. package/lib/{internal/transformAgenticaHistory.js → factory/createAgenticaHistory.js} +3 -4
  26. package/lib/factory/createAgenticaHistory.js.map +1 -0
  27. package/lib/factory/createAutoBeApplication.js +1195 -0
  28. package/lib/factory/createAutoBeApplication.js.map +1 -0
  29. package/lib/factory/createAutoBeState.js.map +1 -0
  30. package/lib/factory/index.d.ts +2 -0
  31. package/lib/factory/index.js +19 -0
  32. package/lib/factory/index.js.map +1 -0
  33. package/lib/factory/invertOpenApiDocument.d.ts +3 -0
  34. package/lib/factory/invertOpenApiDocument.js +51 -0
  35. package/lib/factory/invertOpenApiDocument.js.map +1 -0
  36. package/lib/index.d.ts +3 -3
  37. package/lib/index.js +4 -4
  38. package/lib/index.js.map +1 -1
  39. package/lib/index.mjs +5455 -547
  40. package/lib/index.mjs.map +1 -1
  41. package/lib/orchestrate/facade/transformFacadeStateMessage.d.ts +2 -0
  42. package/lib/orchestrate/facade/transformFacadeStateMessage.js +46 -0
  43. package/lib/orchestrate/facade/transformFacadeStateMessage.js.map +1 -0
  44. package/lib/orchestrate/index.d.ts +2 -2
  45. package/lib/orchestrate/index.js +2 -2
  46. package/lib/orchestrate/index.js.map +1 -1
  47. package/lib/orchestrate/interface/OpenApiEndpointComparator.d.ts +5 -0
  48. package/lib/orchestrate/interface/OpenApiEndpointComparator.js +16 -0
  49. package/lib/orchestrate/interface/OpenApiEndpointComparator.js.map +1 -0
  50. package/lib/orchestrate/interface/orchestrateInterface.d.ts +5 -0
  51. package/lib/orchestrate/interface/orchestrateInterface.js +61 -0
  52. package/lib/orchestrate/interface/orchestrateInterface.js.map +1 -0
  53. package/lib/orchestrate/interface/orchestrateInterfaceComponents.d.ts +4 -0
  54. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js +702 -0
  55. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js.map +1 -0
  56. package/lib/orchestrate/interface/orchestrateInterfaceEndpoints.d.ts +4 -0
  57. package/lib/orchestrate/interface/orchestrateInterfaceEndpoints.js +452 -0
  58. package/lib/orchestrate/interface/orchestrateInterfaceEndpoints.js.map +1 -0
  59. package/lib/orchestrate/interface/orchestrateInterfaceOperations.d.ts +4 -0
  60. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js +2065 -0
  61. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js.map +1 -0
  62. package/lib/orchestrate/interface/transformInterfaceHistories.d.ts +3 -0
  63. package/lib/orchestrate/interface/transformInterfaceHistories.js +94 -0
  64. package/lib/orchestrate/interface/transformInterfaceHistories.js.map +1 -0
  65. package/lib/orchestrate/orchestrateAnalyze.d.ts +1 -3
  66. package/lib/orchestrate/orchestrateAnalyze.js +60 -6
  67. package/lib/orchestrate/orchestrateAnalyze.js.map +1 -1
  68. package/lib/orchestrate/{orchestratePrisma.d.ts → prisma/orchestratePrisma.d.ts} +3 -6
  69. package/lib/orchestrate/prisma/orchestratePrisma.js +103 -0
  70. package/lib/orchestrate/prisma/orchestratePrisma.js.map +1 -0
  71. package/lib/orchestrate/prisma/orchestratePrismaCompiler.d.ts +6 -0
  72. package/lib/orchestrate/prisma/orchestratePrismaCompiler.js +436 -0
  73. package/lib/orchestrate/prisma/orchestratePrismaCompiler.js.map +1 -0
  74. package/lib/orchestrate/prisma/orchestratePrismaComponent.d.ts +5 -0
  75. package/lib/orchestrate/prisma/orchestratePrismaComponent.js +437 -0
  76. package/lib/orchestrate/prisma/orchestratePrismaComponent.js.map +1 -0
  77. package/lib/orchestrate/prisma/orchestratePrismaSchema.d.ts +7 -0
  78. package/lib/orchestrate/prisma/orchestratePrismaSchema.js +369 -0
  79. package/lib/orchestrate/prisma/orchestratePrismaSchema.js.map +1 -0
  80. package/lib/orchestrate/prisma/transformPrismaCompilerHistories.d.ts +3 -0
  81. package/lib/orchestrate/prisma/transformPrismaCompilerHistories.js +44 -0
  82. package/lib/orchestrate/prisma/transformPrismaCompilerHistories.js.map +1 -0
  83. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.d.ts +3 -0
  84. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js +42 -0
  85. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js.map +1 -0
  86. package/lib/orchestrate/prisma/transformPrismaHistories.d.ts +3 -0
  87. package/lib/orchestrate/prisma/transformPrismaHistories.js +46 -0
  88. package/lib/orchestrate/prisma/transformPrismaHistories.js.map +1 -0
  89. package/lib/orchestrate/prisma/transformPrismaSchemaHistories.d.ts +3 -0
  90. package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js +46 -0
  91. package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js.map +1 -0
  92. package/lib/structures/IAutoBeConfig.d.ts +4 -4
  93. package/lib/utils/StringUtil.d.ts +4 -0
  94. package/lib/utils/StringUtil.js +43 -0
  95. package/lib/utils/StringUtil.js.map +1 -0
  96. package/lib/utils/divideArray.d.ts +4 -0
  97. package/lib/utils/divideArray.js +19 -0
  98. package/lib/utils/divideArray.js.map +1 -0
  99. package/lib/utils/emplaceMap.d.ts +1 -0
  100. package/lib/utils/emplaceMap.js +13 -0
  101. package/lib/utils/emplaceMap.js.map +1 -0
  102. package/package.json +29 -8
  103. package/src/AutoBeAgent.ts +227 -101
  104. package/src/analyze/AnalyzeAgent.ts +167 -0
  105. package/src/analyze/CreateReviewerAgent.ts +126 -0
  106. package/src/analyze/Planning.ts +75 -0
  107. package/src/constants/AutoBeSystemPromptConstant.ts +15 -0
  108. package/src/context/AutoBeContext.ts +19 -15
  109. package/src/context/AutoBeState.ts +15 -15
  110. package/src/context/AutoBeTokenUsage.ts +3 -3
  111. package/src/context/IAutoBeApplication.ts +112 -72
  112. package/src/context/IAutoBeApplicationProps.ts +27 -6
  113. package/src/context/IAutoBeApplicationResult.ts +3 -4
  114. package/src/context/assertSchemaModel.ts +17 -0
  115. package/src/{internal/transformAgenticaHistory.ts → factory/createAgenticaHistory.ts} +51 -54
  116. package/src/{internal → factory}/createAutoBeApplication.ts +52 -47
  117. package/src/{internal → factory}/createAutoBeState.ts +14 -14
  118. package/src/factory/index.ts +2 -0
  119. package/src/factory/invertOpenApiDocument.ts +63 -0
  120. package/src/index.ts +13 -12
  121. package/src/orchestrate/facade/transformFacadeStateMessage.ts +58 -0
  122. package/src/orchestrate/index.ts +5 -5
  123. package/src/orchestrate/interface/OpenApiEndpointComparator.ts +15 -0
  124. package/src/orchestrate/interface/orchestrateInterface.ts +66 -0
  125. package/src/orchestrate/interface/orchestrateInterfaceComponents.ts +324 -0
  126. package/src/orchestrate/interface/orchestrateInterfaceEndpoints.ts +140 -0
  127. package/src/orchestrate/interface/orchestrateInterfaceOperations.ts +247 -0
  128. package/src/orchestrate/interface/transformInterfaceHistories.ts +98 -0
  129. package/src/orchestrate/orchestrateAnalyze.ts +86 -21
  130. package/src/orchestrate/orchestrateRealize.ts +18 -18
  131. package/src/orchestrate/orchestrateTest.ts +18 -18
  132. package/src/orchestrate/prisma/orchestratePrisma.ts +117 -0
  133. package/src/orchestrate/prisma/orchestratePrismaCompiler.ts +194 -0
  134. package/src/orchestrate/prisma/orchestratePrismaComponent.ts +176 -0
  135. package/src/orchestrate/prisma/orchestratePrismaSchema.ts +181 -0
  136. package/src/orchestrate/prisma/transformPrismaCompilerHistories.ts +49 -0
  137. package/src/orchestrate/prisma/transformPrismaComponentsHistories.ts +46 -0
  138. package/src/orchestrate/prisma/transformPrismaHistories.ts +50 -0
  139. package/src/orchestrate/prisma/transformPrismaSchemaHistories.ts +50 -0
  140. package/src/structures/IAutoBeConfig.ts +25 -25
  141. package/src/structures/IAutoBeProps.ts +13 -13
  142. package/src/structures/IAutoBeVendor.ts +3 -3
  143. package/src/utils/StringUtil.ts +45 -0
  144. package/src/utils/divideArray.ts +16 -0
  145. package/src/utils/emplaceMap.ts +14 -0
  146. package/lib/factory/transformRouteDocument.d.ts +0 -3
  147. package/lib/factory/transformRouteDocument.js +0 -50
  148. package/lib/factory/transformRouteDocument.js.map +0 -1
  149. package/lib/internal/createAutoBeApplication.js +0 -1452
  150. package/lib/internal/createAutoBeApplication.js.map +0 -1
  151. package/lib/internal/createAutoBeState.js.map +0 -1
  152. package/lib/internal/transformAgenticaHistory.js.map +0 -1
  153. package/lib/orchestrate/interface/AutoBeInterfaceAgent.d.ts +0 -0
  154. package/lib/orchestrate/interface/AutoBeInterfaceAgent.js +0 -2
  155. package/lib/orchestrate/interface/AutoBeInterfaceAgent.js.map +0 -1
  156. package/lib/orchestrate/orchestrateInterface.d.ts +0 -8
  157. package/lib/orchestrate/orchestrateInterface.js +0 -22
  158. package/lib/orchestrate/orchestrateInterface.js.map +0 -1
  159. package/lib/orchestrate/orchestratePrisma.js.map +0 -1
  160. package/src/factory/transformRouteDocument.ts +0 -49
  161. package/src/orchestrate/interface/AutoBeInterfaceAgent.ts +0 -0
  162. package/src/orchestrate/orchestrateInterface.ts +0 -21
  163. package/src/orchestrate/orchestratePrisma.ts +0 -21
  164. /package/lib/{internal → factory}/createAutoBeApplication.d.ts +0 -0
  165. /package/lib/{internal → factory}/createAutoBeState.d.ts +0 -0
  166. /package/lib/{internal → factory}/createAutoBeState.js +0 -0
@@ -0,0 +1,1195 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createAutoBeController = void 0;
40
+ const __typia_transform__validateReport = __importStar(require("typia/lib/internal/_validateReport.js"));
41
+ const typia_1 = __importDefault(require("typia"));
42
+ const assertSchemaModel_1 = require("../context/assertSchemaModel");
43
+ const orchestrateInterface_1 = require("../orchestrate/interface/orchestrateInterface");
44
+ const orchestrateAnalyze_1 = require("../orchestrate/orchestrateAnalyze");
45
+ const orchestrateRealize_1 = require("../orchestrate/orchestrateRealize");
46
+ const orchestrateTest_1 = require("../orchestrate/orchestrateTest");
47
+ const orchestratePrisma_1 = require("../orchestrate/prisma/orchestratePrisma");
48
+ const createAutoBeController = (props) => {
49
+ (0, assertSchemaModel_1.assertSchemaModel)(props.model);
50
+ const application = collection[props.model];
51
+ return {
52
+ protocol: "class",
53
+ name: "autobe",
54
+ application,
55
+ execute: {
56
+ analyze: (0, orchestrateAnalyze_1.orchestrateAnalyze)(props.context),
57
+ prisma: (0, orchestratePrisma_1.orchestratePrisma)(props.context),
58
+ interface: (0, orchestrateInterface_1.orchestrateInterface)(props.context),
59
+ test: (0, orchestrateTest_1.orchestrateTest)(props.context),
60
+ realize: (0, orchestrateRealize_1.orchestrateRealize)(props.context),
61
+ },
62
+ };
63
+ };
64
+ exports.createAutoBeController = createAutoBeController;
65
+ const claude = {
66
+ model: "claude",
67
+ options: {
68
+ reference: true,
69
+ separate: null
70
+ },
71
+ functions: [
72
+ {
73
+ name: "analyze",
74
+ parameters: {
75
+ description: "Current Type: {@link IAutoBeApplicationProps}",
76
+ type: "object",
77
+ properties: {
78
+ reason: {
79
+ title: "The reason of the function call",
80
+ description: "The reason of the function call.",
81
+ type: "string"
82
+ },
83
+ userPlanningRequirements: {
84
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
85
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
86
+ type: "string"
87
+ }
88
+ },
89
+ required: [
90
+ "reason"
91
+ ],
92
+ additionalProperties: false,
93
+ $defs: {}
94
+ },
95
+ output: {
96
+ description: "Current Type: {@link IAutoBeApplicationResult}",
97
+ type: "object",
98
+ properties: {
99
+ success: {
100
+ type: "boolean"
101
+ }
102
+ },
103
+ required: [
104
+ "success"
105
+ ]
106
+ },
107
+ description: "Run Analyze Agent.\n\nExecutes the Analyze agent to process user requirements and generate a\nstructured specification document. This agent analyzes all conversation\nhistory between users and AI, separates business logic from technical\nrequirements, and establishes development priorities and scope.\n\n**IMPORTANT**: Only call this function when sufficient requirements have\nbeen discussed to generate a comprehensive specification. The context must\ncontain enough detail about the system's purpose, core features, data\nmodels, and business rules. If requirements are unclear or incomplete,\ncontinue gathering information through conversation instead.\n\nThe agent will automatically generate follow-up questions for any ambiguous\nrequirements and continuously refine its understanding through iterative\nconversation. When executed after other agents have generated code, it can\nalso interpret change requests in the context of existing implementations.",
108
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
109
+ path: _path + ".reason",
110
+ expected: "string",
111
+ value: input.reason
112
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
113
+ path: _path + ".userPlanningRequirements",
114
+ expected: "(string | undefined)",
115
+ value: input.userPlanningRequirements
116
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
117
+ if (false === __is(input)) {
118
+ errors = [];
119
+ _report = __typia_transform__validateReport._validateReport(errors);
120
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
121
+ path: _path + "",
122
+ expected: "IAutoBeApplicationProps",
123
+ value: input
124
+ })) && _vo0(input, _path + "", true) || _report(true, {
125
+ path: _path + "",
126
+ expected: "IAutoBeApplicationProps",
127
+ value: input
128
+ }))(input, "$input", true);
129
+ const success = 0 === errors.length;
130
+ return success ? {
131
+ success,
132
+ data: input
133
+ } : {
134
+ success,
135
+ errors,
136
+ data: input
137
+ };
138
+ }
139
+ return {
140
+ success: true,
141
+ data: input
142
+ };
143
+ }; })()
144
+ },
145
+ {
146
+ name: "prisma",
147
+ parameters: {
148
+ description: "Current Type: {@link IAutoBeApplicationProps}",
149
+ type: "object",
150
+ properties: {
151
+ reason: {
152
+ title: "The reason of the function call",
153
+ description: "The reason of the function call.",
154
+ type: "string"
155
+ },
156
+ userPlanningRequirements: {
157
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
158
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
159
+ type: "string"
160
+ }
161
+ },
162
+ required: [
163
+ "reason"
164
+ ],
165
+ additionalProperties: false,
166
+ $defs: {}
167
+ },
168
+ output: {
169
+ description: "Current Type: {@link IAutoBeApplicationResult}",
170
+ type: "object",
171
+ properties: {
172
+ success: {
173
+ type: "boolean"
174
+ }
175
+ },
176
+ required: [
177
+ "success"
178
+ ]
179
+ },
180
+ description: "Run prisma agent.\n\nExecutes the Prisma agent to generate database schema files and ERD\ndocumentation. This agent reads the requirements specification created by\nthe {@link analyze Analyze agent} and produces a complete Prisma schema with\ncomprehensive documentation for each entity and attribute.\n\n**PREREQUISITE**: Only call this function after the {@link analyze} function\nhas been successfully executed and a requirements specification document\nhas been generated. The Prisma agent depends on the structured requirements\nanalysis to design the database schema properly. Without a completed\nrequirements specification, this function should NOT be called.\n\nThe agent will automatically validate the generated schema using the Prisma\ncompiler, self-correct any compilation errors through feedback loops, and\ngenerate ERD documentation using prisma-markdown. An internal review\nprocess ensures schema quality and optimization.",
181
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
182
+ path: _path + ".reason",
183
+ expected: "string",
184
+ value: input.reason
185
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
186
+ path: _path + ".userPlanningRequirements",
187
+ expected: "(string | undefined)",
188
+ value: input.userPlanningRequirements
189
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
190
+ if (false === __is(input)) {
191
+ errors = [];
192
+ _report = __typia_transform__validateReport._validateReport(errors);
193
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
194
+ path: _path + "",
195
+ expected: "IAutoBeApplicationProps",
196
+ value: input
197
+ })) && _vo0(input, _path + "", true) || _report(true, {
198
+ path: _path + "",
199
+ expected: "IAutoBeApplicationProps",
200
+ value: input
201
+ }))(input, "$input", true);
202
+ const success = 0 === errors.length;
203
+ return success ? {
204
+ success,
205
+ data: input
206
+ } : {
207
+ success,
208
+ errors,
209
+ data: input
210
+ };
211
+ }
212
+ return {
213
+ success: true,
214
+ data: input
215
+ };
216
+ }; })()
217
+ },
218
+ {
219
+ name: "interface",
220
+ parameters: {
221
+ description: "Current Type: {@link IAutoBeApplicationProps}",
222
+ type: "object",
223
+ properties: {
224
+ reason: {
225
+ title: "The reason of the function call",
226
+ description: "The reason of the function call.",
227
+ type: "string"
228
+ },
229
+ userPlanningRequirements: {
230
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
231
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
232
+ type: "string"
233
+ }
234
+ },
235
+ required: [
236
+ "reason"
237
+ ],
238
+ additionalProperties: false,
239
+ $defs: {}
240
+ },
241
+ output: {
242
+ description: "Current Type: {@link IAutoBeApplicationResult}",
243
+ type: "object",
244
+ properties: {
245
+ success: {
246
+ type: "boolean"
247
+ }
248
+ },
249
+ required: [
250
+ "success"
251
+ ]
252
+ },
253
+ description: "Run interface agent.\n\nExecutes the Interface agent to design and generate API interfaces. This\nagent creates OpenAPI schemas and TypeScript/NestJS code based on the\nrequirements specification and ERD documentation from previous agents.\n\nThe agent follows a sophisticated pipeline: first constructing formal\nOpenAPI Operation Schemas and JSON Schemas, then validating these schemas,\nand finally transforming them into NestJS controllers and DTOs. Each\ngenerated interface includes comprehensive JSDoc comments and undergoes\ninternal review for consistency.",
254
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
255
+ path: _path + ".reason",
256
+ expected: "string",
257
+ value: input.reason
258
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
259
+ path: _path + ".userPlanningRequirements",
260
+ expected: "(string | undefined)",
261
+ value: input.userPlanningRequirements
262
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
263
+ if (false === __is(input)) {
264
+ errors = [];
265
+ _report = __typia_transform__validateReport._validateReport(errors);
266
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
267
+ path: _path + "",
268
+ expected: "IAutoBeApplicationProps",
269
+ value: input
270
+ })) && _vo0(input, _path + "", true) || _report(true, {
271
+ path: _path + "",
272
+ expected: "IAutoBeApplicationProps",
273
+ value: input
274
+ }))(input, "$input", true);
275
+ const success = 0 === errors.length;
276
+ return success ? {
277
+ success,
278
+ data: input
279
+ } : {
280
+ success,
281
+ errors,
282
+ data: input
283
+ };
284
+ }
285
+ return {
286
+ success: true,
287
+ data: input
288
+ };
289
+ }; })()
290
+ },
291
+ {
292
+ name: "test",
293
+ parameters: {
294
+ description: "Current Type: {@link IAutoBeApplicationProps}",
295
+ type: "object",
296
+ properties: {
297
+ reason: {
298
+ title: "The reason of the function call",
299
+ description: "The reason of the function call.",
300
+ type: "string"
301
+ },
302
+ userPlanningRequirements: {
303
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
304
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
305
+ type: "string"
306
+ }
307
+ },
308
+ required: [
309
+ "reason"
310
+ ],
311
+ additionalProperties: false,
312
+ $defs: {}
313
+ },
314
+ output: {
315
+ description: "Current Type: {@link IAutoBeApplicationResult}",
316
+ type: "object",
317
+ properties: {
318
+ success: {
319
+ type: "boolean"
320
+ }
321
+ },
322
+ required: [
323
+ "success"
324
+ ]
325
+ },
326
+ description: "Run test program agent.\n\nExecutes the Test agent to generate comprehensive E2E test suites for all\n{@link interface API interfaces}. This agent synthesizes outputs from\nprevious agents to create tests that validate both individual endpoints and\ntheir interactions.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Test agent requires the completed API interface definitions,\nOpenAPI schemas, and TypeScript code to generate appropriate test\nscenarios. Without completed interface design, this function should NOT be\ncalled.\n\nThe agent will analyze dependency relationships between API functions,\nstructure integrated test scenarios with correct execution sequences, and\nenhance pre-generated test scaffolds with business logic validation.\nTypeScript compiler validation and internal review ensure test quality and\noptimal coverage.",
327
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
328
+ path: _path + ".reason",
329
+ expected: "string",
330
+ value: input.reason
331
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
332
+ path: _path + ".userPlanningRequirements",
333
+ expected: "(string | undefined)",
334
+ value: input.userPlanningRequirements
335
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
336
+ if (false === __is(input)) {
337
+ errors = [];
338
+ _report = __typia_transform__validateReport._validateReport(errors);
339
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
340
+ path: _path + "",
341
+ expected: "IAutoBeApplicationProps",
342
+ value: input
343
+ })) && _vo0(input, _path + "", true) || _report(true, {
344
+ path: _path + "",
345
+ expected: "IAutoBeApplicationProps",
346
+ value: input
347
+ }))(input, "$input", true);
348
+ const success = 0 === errors.length;
349
+ return success ? {
350
+ success,
351
+ data: input
352
+ } : {
353
+ success,
354
+ errors,
355
+ data: input
356
+ };
357
+ }
358
+ return {
359
+ success: true,
360
+ data: input
361
+ };
362
+ }; })()
363
+ },
364
+ {
365
+ name: "realize",
366
+ parameters: {
367
+ description: "Current Type: {@link IAutoBeApplicationProps}",
368
+ type: "object",
369
+ properties: {
370
+ reason: {
371
+ title: "The reason of the function call",
372
+ description: "The reason of the function call.",
373
+ type: "string"
374
+ },
375
+ userPlanningRequirements: {
376
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
377
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
378
+ type: "string"
379
+ }
380
+ },
381
+ required: [
382
+ "reason"
383
+ ],
384
+ additionalProperties: false,
385
+ $defs: {}
386
+ },
387
+ output: {
388
+ description: "Current Type: {@link IAutoBeApplicationResult}",
389
+ type: "object",
390
+ properties: {
391
+ success: {
392
+ type: "boolean"
393
+ }
394
+ },
395
+ required: [
396
+ "success"
397
+ ]
398
+ },
399
+ description: "Run realize agent.\n\nExecutes the Realize agent to implement the actual business logic for each\nAPI endpoint. This agent synthesizes all outputs from previous agents to\ngenerate fully functional service provider code.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Realize agent requires the completed API interface\ndefinitions to implement the corresponding service logic. It also benefits\nfrom having test code available for validation. Without completed interface\ndesign, this function should NOT be called.\n\nThe agent will create service implementations with multiple validation\nlayers: TypeScript compiler feedback, runtime validation through test\nexecution, and quality optimization through internal review. The generated\ncode handles database interactions through Prisma, implements security and\nvalidation checks, and processes business rules according to\nspecifications.",
400
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
401
+ path: _path + ".reason",
402
+ expected: "string",
403
+ value: input.reason
404
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
405
+ path: _path + ".userPlanningRequirements",
406
+ expected: "(string | undefined)",
407
+ value: input.userPlanningRequirements
408
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
409
+ if (false === __is(input)) {
410
+ errors = [];
411
+ _report = __typia_transform__validateReport._validateReport(errors);
412
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
413
+ path: _path + "",
414
+ expected: "IAutoBeApplicationProps",
415
+ value: input
416
+ })) && _vo0(input, _path + "", true) || _report(true, {
417
+ path: _path + "",
418
+ expected: "IAutoBeApplicationProps",
419
+ value: input
420
+ }))(input, "$input", true);
421
+ const success = 0 === errors.length;
422
+ return success ? {
423
+ success,
424
+ data: input
425
+ } : {
426
+ success,
427
+ errors,
428
+ data: input
429
+ };
430
+ }
431
+ return {
432
+ success: true,
433
+ data: input
434
+ };
435
+ }; })()
436
+ }
437
+ ]
438
+ };
439
+ const collection = {
440
+ chatgpt: {
441
+ model: "chatgpt",
442
+ options: {
443
+ reference: true,
444
+ strict: false,
445
+ separate: null
446
+ },
447
+ functions: [
448
+ {
449
+ name: "analyze",
450
+ parameters: {
451
+ description: "Current Type: {@link IAutoBeApplicationProps}",
452
+ type: "object",
453
+ properties: {
454
+ reason: {
455
+ title: "The reason of the function call",
456
+ description: "The reason of the function call.",
457
+ type: "string"
458
+ },
459
+ userPlanningRequirements: {
460
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
461
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
462
+ type: "string"
463
+ }
464
+ },
465
+ required: [
466
+ "reason"
467
+ ],
468
+ additionalProperties: false,
469
+ $defs: {}
470
+ },
471
+ output: {
472
+ description: "Current Type: {@link IAutoBeApplicationResult}",
473
+ type: "object",
474
+ properties: {
475
+ success: {
476
+ type: "boolean"
477
+ }
478
+ },
479
+ required: [
480
+ "success"
481
+ ]
482
+ },
483
+ description: "Run Analyze Agent.\n\nExecutes the Analyze agent to process user requirements and generate a\nstructured specification document. This agent analyzes all conversation\nhistory between users and AI, separates business logic from technical\nrequirements, and establishes development priorities and scope.\n\n**IMPORTANT**: Only call this function when sufficient requirements have\nbeen discussed to generate a comprehensive specification. The context must\ncontain enough detail about the system's purpose, core features, data\nmodels, and business rules. If requirements are unclear or incomplete,\ncontinue gathering information through conversation instead.\n\nThe agent will automatically generate follow-up questions for any ambiguous\nrequirements and continuously refine its understanding through iterative\nconversation. When executed after other agents have generated code, it can\nalso interpret change requests in the context of existing implementations.",
484
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
485
+ path: _path + ".reason",
486
+ expected: "string",
487
+ value: input.reason
488
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
489
+ path: _path + ".userPlanningRequirements",
490
+ expected: "(string | undefined)",
491
+ value: input.userPlanningRequirements
492
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
493
+ if (false === __is(input)) {
494
+ errors = [];
495
+ _report = __typia_transform__validateReport._validateReport(errors);
496
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
497
+ path: _path + "",
498
+ expected: "IAutoBeApplicationProps",
499
+ value: input
500
+ })) && _vo0(input, _path + "", true) || _report(true, {
501
+ path: _path + "",
502
+ expected: "IAutoBeApplicationProps",
503
+ value: input
504
+ }))(input, "$input", true);
505
+ const success = 0 === errors.length;
506
+ return success ? {
507
+ success,
508
+ data: input
509
+ } : {
510
+ success,
511
+ errors,
512
+ data: input
513
+ };
514
+ }
515
+ return {
516
+ success: true,
517
+ data: input
518
+ };
519
+ }; })()
520
+ },
521
+ {
522
+ name: "prisma",
523
+ parameters: {
524
+ description: "Current Type: {@link IAutoBeApplicationProps}",
525
+ type: "object",
526
+ properties: {
527
+ reason: {
528
+ title: "The reason of the function call",
529
+ description: "The reason of the function call.",
530
+ type: "string"
531
+ },
532
+ userPlanningRequirements: {
533
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
534
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
535
+ type: "string"
536
+ }
537
+ },
538
+ required: [
539
+ "reason"
540
+ ],
541
+ additionalProperties: false,
542
+ $defs: {}
543
+ },
544
+ output: {
545
+ description: "Current Type: {@link IAutoBeApplicationResult}",
546
+ type: "object",
547
+ properties: {
548
+ success: {
549
+ type: "boolean"
550
+ }
551
+ },
552
+ required: [
553
+ "success"
554
+ ]
555
+ },
556
+ description: "Run prisma agent.\n\nExecutes the Prisma agent to generate database schema files and ERD\ndocumentation. This agent reads the requirements specification created by\nthe {@link analyze Analyze agent} and produces a complete Prisma schema with\ncomprehensive documentation for each entity and attribute.\n\n**PREREQUISITE**: Only call this function after the {@link analyze} function\nhas been successfully executed and a requirements specification document\nhas been generated. The Prisma agent depends on the structured requirements\nanalysis to design the database schema properly. Without a completed\nrequirements specification, this function should NOT be called.\n\nThe agent will automatically validate the generated schema using the Prisma\ncompiler, self-correct any compilation errors through feedback loops, and\ngenerate ERD documentation using prisma-markdown. An internal review\nprocess ensures schema quality and optimization.",
557
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
558
+ path: _path + ".reason",
559
+ expected: "string",
560
+ value: input.reason
561
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
562
+ path: _path + ".userPlanningRequirements",
563
+ expected: "(string | undefined)",
564
+ value: input.userPlanningRequirements
565
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
566
+ if (false === __is(input)) {
567
+ errors = [];
568
+ _report = __typia_transform__validateReport._validateReport(errors);
569
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
570
+ path: _path + "",
571
+ expected: "IAutoBeApplicationProps",
572
+ value: input
573
+ })) && _vo0(input, _path + "", true) || _report(true, {
574
+ path: _path + "",
575
+ expected: "IAutoBeApplicationProps",
576
+ value: input
577
+ }))(input, "$input", true);
578
+ const success = 0 === errors.length;
579
+ return success ? {
580
+ success,
581
+ data: input
582
+ } : {
583
+ success,
584
+ errors,
585
+ data: input
586
+ };
587
+ }
588
+ return {
589
+ success: true,
590
+ data: input
591
+ };
592
+ }; })()
593
+ },
594
+ {
595
+ name: "interface",
596
+ parameters: {
597
+ description: "Current Type: {@link IAutoBeApplicationProps}",
598
+ type: "object",
599
+ properties: {
600
+ reason: {
601
+ title: "The reason of the function call",
602
+ description: "The reason of the function call.",
603
+ type: "string"
604
+ },
605
+ userPlanningRequirements: {
606
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
607
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
608
+ type: "string"
609
+ }
610
+ },
611
+ required: [
612
+ "reason"
613
+ ],
614
+ additionalProperties: false,
615
+ $defs: {}
616
+ },
617
+ output: {
618
+ description: "Current Type: {@link IAutoBeApplicationResult}",
619
+ type: "object",
620
+ properties: {
621
+ success: {
622
+ type: "boolean"
623
+ }
624
+ },
625
+ required: [
626
+ "success"
627
+ ]
628
+ },
629
+ description: "Run interface agent.\n\nExecutes the Interface agent to design and generate API interfaces. This\nagent creates OpenAPI schemas and TypeScript/NestJS code based on the\nrequirements specification and ERD documentation from previous agents.\n\nThe agent follows a sophisticated pipeline: first constructing formal\nOpenAPI Operation Schemas and JSON Schemas, then validating these schemas,\nand finally transforming them into NestJS controllers and DTOs. Each\ngenerated interface includes comprehensive JSDoc comments and undergoes\ninternal review for consistency.",
630
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
631
+ path: _path + ".reason",
632
+ expected: "string",
633
+ value: input.reason
634
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
635
+ path: _path + ".userPlanningRequirements",
636
+ expected: "(string | undefined)",
637
+ value: input.userPlanningRequirements
638
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
639
+ if (false === __is(input)) {
640
+ errors = [];
641
+ _report = __typia_transform__validateReport._validateReport(errors);
642
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
643
+ path: _path + "",
644
+ expected: "IAutoBeApplicationProps",
645
+ value: input
646
+ })) && _vo0(input, _path + "", true) || _report(true, {
647
+ path: _path + "",
648
+ expected: "IAutoBeApplicationProps",
649
+ value: input
650
+ }))(input, "$input", true);
651
+ const success = 0 === errors.length;
652
+ return success ? {
653
+ success,
654
+ data: input
655
+ } : {
656
+ success,
657
+ errors,
658
+ data: input
659
+ };
660
+ }
661
+ return {
662
+ success: true,
663
+ data: input
664
+ };
665
+ }; })()
666
+ },
667
+ {
668
+ name: "test",
669
+ parameters: {
670
+ description: "Current Type: {@link IAutoBeApplicationProps}",
671
+ type: "object",
672
+ properties: {
673
+ reason: {
674
+ title: "The reason of the function call",
675
+ description: "The reason of the function call.",
676
+ type: "string"
677
+ },
678
+ userPlanningRequirements: {
679
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
680
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
681
+ type: "string"
682
+ }
683
+ },
684
+ required: [
685
+ "reason"
686
+ ],
687
+ additionalProperties: false,
688
+ $defs: {}
689
+ },
690
+ output: {
691
+ description: "Current Type: {@link IAutoBeApplicationResult}",
692
+ type: "object",
693
+ properties: {
694
+ success: {
695
+ type: "boolean"
696
+ }
697
+ },
698
+ required: [
699
+ "success"
700
+ ]
701
+ },
702
+ description: "Run test program agent.\n\nExecutes the Test agent to generate comprehensive E2E test suites for all\n{@link interface API interfaces}. This agent synthesizes outputs from\nprevious agents to create tests that validate both individual endpoints and\ntheir interactions.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Test agent requires the completed API interface definitions,\nOpenAPI schemas, and TypeScript code to generate appropriate test\nscenarios. Without completed interface design, this function should NOT be\ncalled.\n\nThe agent will analyze dependency relationships between API functions,\nstructure integrated test scenarios with correct execution sequences, and\nenhance pre-generated test scaffolds with business logic validation.\nTypeScript compiler validation and internal review ensure test quality and\noptimal coverage.",
703
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
704
+ path: _path + ".reason",
705
+ expected: "string",
706
+ value: input.reason
707
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
708
+ path: _path + ".userPlanningRequirements",
709
+ expected: "(string | undefined)",
710
+ value: input.userPlanningRequirements
711
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
712
+ if (false === __is(input)) {
713
+ errors = [];
714
+ _report = __typia_transform__validateReport._validateReport(errors);
715
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
716
+ path: _path + "",
717
+ expected: "IAutoBeApplicationProps",
718
+ value: input
719
+ })) && _vo0(input, _path + "", true) || _report(true, {
720
+ path: _path + "",
721
+ expected: "IAutoBeApplicationProps",
722
+ value: input
723
+ }))(input, "$input", true);
724
+ const success = 0 === errors.length;
725
+ return success ? {
726
+ success,
727
+ data: input
728
+ } : {
729
+ success,
730
+ errors,
731
+ data: input
732
+ };
733
+ }
734
+ return {
735
+ success: true,
736
+ data: input
737
+ };
738
+ }; })()
739
+ },
740
+ {
741
+ name: "realize",
742
+ parameters: {
743
+ description: "Current Type: {@link IAutoBeApplicationProps}",
744
+ type: "object",
745
+ properties: {
746
+ reason: {
747
+ title: "The reason of the function call",
748
+ description: "The reason of the function call.",
749
+ type: "string"
750
+ },
751
+ userPlanningRequirements: {
752
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
753
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>",
754
+ type: "string"
755
+ }
756
+ },
757
+ required: [
758
+ "reason"
759
+ ],
760
+ additionalProperties: false,
761
+ $defs: {}
762
+ },
763
+ output: {
764
+ description: "Current Type: {@link IAutoBeApplicationResult}",
765
+ type: "object",
766
+ properties: {
767
+ success: {
768
+ type: "boolean"
769
+ }
770
+ },
771
+ required: [
772
+ "success"
773
+ ]
774
+ },
775
+ description: "Run realize agent.\n\nExecutes the Realize agent to implement the actual business logic for each\nAPI endpoint. This agent synthesizes all outputs from previous agents to\ngenerate fully functional service provider code.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Realize agent requires the completed API interface\ndefinitions to implement the corresponding service logic. It also benefits\nfrom having test code available for validation. Without completed interface\ndesign, this function should NOT be called.\n\nThe agent will create service implementations with multiple validation\nlayers: TypeScript compiler feedback, runtime validation through test\nexecution, and quality optimization through internal review. The generated\ncode handles database interactions through Prisma, implements security and\nvalidation checks, and processes business rules according to\nspecifications.",
776
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
777
+ path: _path + ".reason",
778
+ expected: "string",
779
+ value: input.reason
780
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
781
+ path: _path + ".userPlanningRequirements",
782
+ expected: "(string | undefined)",
783
+ value: input.userPlanningRequirements
784
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
785
+ if (false === __is(input)) {
786
+ errors = [];
787
+ _report = __typia_transform__validateReport._validateReport(errors);
788
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
789
+ path: _path + "",
790
+ expected: "IAutoBeApplicationProps",
791
+ value: input
792
+ })) && _vo0(input, _path + "", true) || _report(true, {
793
+ path: _path + "",
794
+ expected: "IAutoBeApplicationProps",
795
+ value: input
796
+ }))(input, "$input", true);
797
+ const success = 0 === errors.length;
798
+ return success ? {
799
+ success,
800
+ data: input
801
+ } : {
802
+ success,
803
+ errors,
804
+ data: input
805
+ };
806
+ }
807
+ return {
808
+ success: true,
809
+ data: input
810
+ };
811
+ }; })()
812
+ }
813
+ ]
814
+ },
815
+ claude,
816
+ llama: claude,
817
+ deepseek: claude,
818
+ "3.1": claude,
819
+ "3.0": {
820
+ model: "3.0",
821
+ options: {
822
+ constraint: true,
823
+ recursive: 3,
824
+ separate: null
825
+ },
826
+ functions: [
827
+ {
828
+ name: "analyze",
829
+ parameters: {
830
+ type: "object",
831
+ properties: {
832
+ reason: {
833
+ type: "string",
834
+ title: "The reason of the function call",
835
+ description: "The reason of the function call."
836
+ },
837
+ userPlanningRequirements: {
838
+ type: "string",
839
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
840
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>"
841
+ }
842
+ },
843
+ required: [
844
+ "reason"
845
+ ],
846
+ description: "Current Type: {@link IAutoBeApplicationProps}",
847
+ additionalProperties: false
848
+ },
849
+ output: {
850
+ type: "object",
851
+ properties: {
852
+ success: {
853
+ type: "boolean"
854
+ }
855
+ },
856
+ required: [
857
+ "success"
858
+ ],
859
+ description: "Current Type: {@link IAutoBeApplicationResult}",
860
+ additionalProperties: false
861
+ },
862
+ description: "Run Analyze Agent.\n\nExecutes the Analyze agent to process user requirements and generate a\nstructured specification document. This agent analyzes all conversation\nhistory between users and AI, separates business logic from technical\nrequirements, and establishes development priorities and scope.\n\n**IMPORTANT**: Only call this function when sufficient requirements have\nbeen discussed to generate a comprehensive specification. The context must\ncontain enough detail about the system's purpose, core features, data\nmodels, and business rules. If requirements are unclear or incomplete,\ncontinue gathering information through conversation instead.\n\nThe agent will automatically generate follow-up questions for any ambiguous\nrequirements and continuously refine its understanding through iterative\nconversation. When executed after other agents have generated code, it can\nalso interpret change requests in the context of existing implementations.",
863
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
864
+ path: _path + ".reason",
865
+ expected: "string",
866
+ value: input.reason
867
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
868
+ path: _path + ".userPlanningRequirements",
869
+ expected: "(string | undefined)",
870
+ value: input.userPlanningRequirements
871
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
872
+ if (false === __is(input)) {
873
+ errors = [];
874
+ _report = __typia_transform__validateReport._validateReport(errors);
875
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
876
+ path: _path + "",
877
+ expected: "IAutoBeApplicationProps",
878
+ value: input
879
+ })) && _vo0(input, _path + "", true) || _report(true, {
880
+ path: _path + "",
881
+ expected: "IAutoBeApplicationProps",
882
+ value: input
883
+ }))(input, "$input", true);
884
+ const success = 0 === errors.length;
885
+ return success ? {
886
+ success,
887
+ data: input
888
+ } : {
889
+ success,
890
+ errors,
891
+ data: input
892
+ };
893
+ }
894
+ return {
895
+ success: true,
896
+ data: input
897
+ };
898
+ }; })()
899
+ },
900
+ {
901
+ name: "prisma",
902
+ parameters: {
903
+ type: "object",
904
+ properties: {
905
+ reason: {
906
+ type: "string",
907
+ title: "The reason of the function call",
908
+ description: "The reason of the function call."
909
+ },
910
+ userPlanningRequirements: {
911
+ type: "string",
912
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
913
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>"
914
+ }
915
+ },
916
+ required: [
917
+ "reason"
918
+ ],
919
+ description: "Current Type: {@link IAutoBeApplicationProps}",
920
+ additionalProperties: false
921
+ },
922
+ output: {
923
+ type: "object",
924
+ properties: {
925
+ success: {
926
+ type: "boolean"
927
+ }
928
+ },
929
+ required: [
930
+ "success"
931
+ ],
932
+ description: "Current Type: {@link IAutoBeApplicationResult}",
933
+ additionalProperties: false
934
+ },
935
+ description: "Run prisma agent.\n\nExecutes the Prisma agent to generate database schema files and ERD\ndocumentation. This agent reads the requirements specification created by\nthe {@link analyze Analyze agent} and produces a complete Prisma schema with\ncomprehensive documentation for each entity and attribute.\n\n**PREREQUISITE**: Only call this function after the {@link analyze} function\nhas been successfully executed and a requirements specification document\nhas been generated. The Prisma agent depends on the structured requirements\nanalysis to design the database schema properly. Without a completed\nrequirements specification, this function should NOT be called.\n\nThe agent will automatically validate the generated schema using the Prisma\ncompiler, self-correct any compilation errors through feedback loops, and\ngenerate ERD documentation using prisma-markdown. An internal review\nprocess ensures schema quality and optimization.",
936
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
937
+ path: _path + ".reason",
938
+ expected: "string",
939
+ value: input.reason
940
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
941
+ path: _path + ".userPlanningRequirements",
942
+ expected: "(string | undefined)",
943
+ value: input.userPlanningRequirements
944
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
945
+ if (false === __is(input)) {
946
+ errors = [];
947
+ _report = __typia_transform__validateReport._validateReport(errors);
948
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
949
+ path: _path + "",
950
+ expected: "IAutoBeApplicationProps",
951
+ value: input
952
+ })) && _vo0(input, _path + "", true) || _report(true, {
953
+ path: _path + "",
954
+ expected: "IAutoBeApplicationProps",
955
+ value: input
956
+ }))(input, "$input", true);
957
+ const success = 0 === errors.length;
958
+ return success ? {
959
+ success,
960
+ data: input
961
+ } : {
962
+ success,
963
+ errors,
964
+ data: input
965
+ };
966
+ }
967
+ return {
968
+ success: true,
969
+ data: input
970
+ };
971
+ }; })()
972
+ },
973
+ {
974
+ name: "interface",
975
+ parameters: {
976
+ type: "object",
977
+ properties: {
978
+ reason: {
979
+ type: "string",
980
+ title: "The reason of the function call",
981
+ description: "The reason of the function call."
982
+ },
983
+ userPlanningRequirements: {
984
+ type: "string",
985
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
986
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>"
987
+ }
988
+ },
989
+ required: [
990
+ "reason"
991
+ ],
992
+ description: "Current Type: {@link IAutoBeApplicationProps}",
993
+ additionalProperties: false
994
+ },
995
+ output: {
996
+ type: "object",
997
+ properties: {
998
+ success: {
999
+ type: "boolean"
1000
+ }
1001
+ },
1002
+ required: [
1003
+ "success"
1004
+ ],
1005
+ description: "Current Type: {@link IAutoBeApplicationResult}",
1006
+ additionalProperties: false
1007
+ },
1008
+ description: "Run interface agent.\n\nExecutes the Interface agent to design and generate API interfaces. This\nagent creates OpenAPI schemas and TypeScript/NestJS code based on the\nrequirements specification and ERD documentation from previous agents.\n\nThe agent follows a sophisticated pipeline: first constructing formal\nOpenAPI Operation Schemas and JSON Schemas, then validating these schemas,\nand finally transforming them into NestJS controllers and DTOs. Each\ngenerated interface includes comprehensive JSDoc comments and undergoes\ninternal review for consistency.",
1009
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
1010
+ path: _path + ".reason",
1011
+ expected: "string",
1012
+ value: input.reason
1013
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
1014
+ path: _path + ".userPlanningRequirements",
1015
+ expected: "(string | undefined)",
1016
+ value: input.userPlanningRequirements
1017
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
1018
+ if (false === __is(input)) {
1019
+ errors = [];
1020
+ _report = __typia_transform__validateReport._validateReport(errors);
1021
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
1022
+ path: _path + "",
1023
+ expected: "IAutoBeApplicationProps",
1024
+ value: input
1025
+ })) && _vo0(input, _path + "", true) || _report(true, {
1026
+ path: _path + "",
1027
+ expected: "IAutoBeApplicationProps",
1028
+ value: input
1029
+ }))(input, "$input", true);
1030
+ const success = 0 === errors.length;
1031
+ return success ? {
1032
+ success,
1033
+ data: input
1034
+ } : {
1035
+ success,
1036
+ errors,
1037
+ data: input
1038
+ };
1039
+ }
1040
+ return {
1041
+ success: true,
1042
+ data: input
1043
+ };
1044
+ }; })()
1045
+ },
1046
+ {
1047
+ name: "test",
1048
+ parameters: {
1049
+ type: "object",
1050
+ properties: {
1051
+ reason: {
1052
+ type: "string",
1053
+ title: "The reason of the function call",
1054
+ description: "The reason of the function call."
1055
+ },
1056
+ userPlanningRequirements: {
1057
+ type: "string",
1058
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
1059
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>"
1060
+ }
1061
+ },
1062
+ required: [
1063
+ "reason"
1064
+ ],
1065
+ description: "Current Type: {@link IAutoBeApplicationProps}",
1066
+ additionalProperties: false
1067
+ },
1068
+ output: {
1069
+ type: "object",
1070
+ properties: {
1071
+ success: {
1072
+ type: "boolean"
1073
+ }
1074
+ },
1075
+ required: [
1076
+ "success"
1077
+ ],
1078
+ description: "Current Type: {@link IAutoBeApplicationResult}",
1079
+ additionalProperties: false
1080
+ },
1081
+ description: "Run test program agent.\n\nExecutes the Test agent to generate comprehensive E2E test suites for all\n{@link interface API interfaces}. This agent synthesizes outputs from\nprevious agents to create tests that validate both individual endpoints and\ntheir interactions.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Test agent requires the completed API interface definitions,\nOpenAPI schemas, and TypeScript code to generate appropriate test\nscenarios. Without completed interface design, this function should NOT be\ncalled.\n\nThe agent will analyze dependency relationships between API functions,\nstructure integrated test scenarios with correct execution sequences, and\nenhance pre-generated test scaffolds with business logic validation.\nTypeScript compiler validation and internal review ensure test quality and\noptimal coverage.",
1082
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
1083
+ path: _path + ".reason",
1084
+ expected: "string",
1085
+ value: input.reason
1086
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
1087
+ path: _path + ".userPlanningRequirements",
1088
+ expected: "(string | undefined)",
1089
+ value: input.userPlanningRequirements
1090
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
1091
+ if (false === __is(input)) {
1092
+ errors = [];
1093
+ _report = __typia_transform__validateReport._validateReport(errors);
1094
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
1095
+ path: _path + "",
1096
+ expected: "IAutoBeApplicationProps",
1097
+ value: input
1098
+ })) && _vo0(input, _path + "", true) || _report(true, {
1099
+ path: _path + "",
1100
+ expected: "IAutoBeApplicationProps",
1101
+ value: input
1102
+ }))(input, "$input", true);
1103
+ const success = 0 === errors.length;
1104
+ return success ? {
1105
+ success,
1106
+ data: input
1107
+ } : {
1108
+ success,
1109
+ errors,
1110
+ data: input
1111
+ };
1112
+ }
1113
+ return {
1114
+ success: true,
1115
+ data: input
1116
+ };
1117
+ }; })()
1118
+ },
1119
+ {
1120
+ name: "realize",
1121
+ parameters: {
1122
+ type: "object",
1123
+ properties: {
1124
+ reason: {
1125
+ type: "string",
1126
+ title: "The reason of the function call",
1127
+ description: "The reason of the function call."
1128
+ },
1129
+ userPlanningRequirements: {
1130
+ type: "string",
1131
+ title: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent",
1132
+ description: "This prompt defines how to convert a user's planning-oriented requirements into a structured message for an internal agent.\n\nAll content the user provides must be included in the message. However, if some parts of the user's input are inappropriate or insufficient from a planning standpoint, you are allowed to add **supplementary remarks**\u2014but only under strict rules.\n\n<Supplementary Remark Rules>\n\n1. **Definition**\nA supplementary remark is additional information that may differ from the user's original intent. Because of this, **you must clearly indicate that it is *not* part of the user\u2019s thinking**.\n\n2. **When to Supplement**\n- If the user's input reveals a lack of technical understanding (e.g., suggesting \"put all data into one table\"), and the plan is not an MVP or PoC, it's encouraged to make reasonable additions for a more scalable or robust structure.\n- If there are clear gaps in the user's planning logic, you may supplement the content to ensure completeness.\n\n3. **When Not to Supplement**\n- If the user's input is vague or ambiguous, **do not assume or add extra details**. Instead, it\u2019s better to ask the user follow-up questions to clarify their intent.\n- If the user has made no comment on design, **do not impose design-related decisions** (e.g., colors, fonts, tone). However, you may state explicitly that no design requirements were provided.\n- Generic advice like \"UX should be good\" can be omitted unless it adds value, as such goals are assumed in all services.\n\n</Supplementary Remark Rules>"
1133
+ }
1134
+ },
1135
+ required: [
1136
+ "reason"
1137
+ ],
1138
+ description: "Current Type: {@link IAutoBeApplicationProps}",
1139
+ additionalProperties: false
1140
+ },
1141
+ output: {
1142
+ type: "object",
1143
+ properties: {
1144
+ success: {
1145
+ type: "boolean"
1146
+ }
1147
+ },
1148
+ required: [
1149
+ "success"
1150
+ ],
1151
+ description: "Current Type: {@link IAutoBeApplicationResult}",
1152
+ additionalProperties: false
1153
+ },
1154
+ description: "Run realize agent.\n\nExecutes the Realize agent to implement the actual business logic for each\nAPI endpoint. This agent synthesizes all outputs from previous agents to\ngenerate fully functional service provider code.\n\n**PREREQUISITE**: Only call this function after the {@link interface}\nfunction has been successfully executed and API interfaces have been\ngenerated. The Realize agent requires the completed API interface\ndefinitions to implement the corresponding service logic. It also benefits\nfrom having test code available for validation. Without completed interface\ndesign, this function should NOT be called.\n\nThe agent will create service implementations with multiple validation\nlayers: TypeScript compiler feedback, runtime validation through test\nexecution, and quality optimization through internal review. The generated\ncode handles database interactions through Prisma, implements security and\nvalidation checks, and processes business rules according to\nspecifications.",
1155
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && (undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
1156
+ path: _path + ".reason",
1157
+ expected: "string",
1158
+ value: input.reason
1159
+ }), undefined === input.userPlanningRequirements || "string" === typeof input.userPlanningRequirements || _report(_exceptionable, {
1160
+ path: _path + ".userPlanningRequirements",
1161
+ expected: "(string | undefined)",
1162
+ value: input.userPlanningRequirements
1163
+ })].every(flag => flag); const __is = input => "object" === typeof input && null !== input && _io0(input); let errors; let _report; return input => {
1164
+ if (false === __is(input)) {
1165
+ errors = [];
1166
+ _report = __typia_transform__validateReport._validateReport(errors);
1167
+ ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
1168
+ path: _path + "",
1169
+ expected: "IAutoBeApplicationProps",
1170
+ value: input
1171
+ })) && _vo0(input, _path + "", true) || _report(true, {
1172
+ path: _path + "",
1173
+ expected: "IAutoBeApplicationProps",
1174
+ value: input
1175
+ }))(input, "$input", true);
1176
+ const success = 0 === errors.length;
1177
+ return success ? {
1178
+ success,
1179
+ data: input
1180
+ } : {
1181
+ success,
1182
+ errors,
1183
+ data: input
1184
+ };
1185
+ }
1186
+ return {
1187
+ success: true,
1188
+ data: input
1189
+ };
1190
+ }; })()
1191
+ }
1192
+ ]
1193
+ },
1194
+ };
1195
+ //# sourceMappingURL=createAutoBeApplication.js.map