@autobe/agent 0.5.2 → 0.7.0

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 (119) hide show
  1. package/lib/AutoBeAgent.js +4 -4
  2. package/lib/AutoBeAgent.js.map +1 -1
  3. package/lib/constants/AutoBeSystemPromptConstant.d.ts +5 -2
  4. package/lib/constants/AutoBeSystemPromptConstant.js.map +1 -1
  5. package/lib/context/AutoBeContext.d.ts +2 -2
  6. package/lib/context/IAutoBeApplicationProps.d.ts +6 -0
  7. package/lib/factory/createAgenticaHistory.js +1 -0
  8. package/lib/factory/createAgenticaHistory.js.map +1 -1
  9. package/lib/factory/createAutoBeApplication.js +17 -17
  10. package/lib/factory/createAutoBeApplication.js.map +1 -1
  11. package/lib/index.mjs +6228 -4563
  12. package/lib/index.mjs.map +1 -1
  13. package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.d.ts +4 -8
  14. package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.js +25 -20
  15. package/lib/orchestrate/analyze/AutoBeAnalyzeAgent.js.map +1 -0
  16. package/lib/orchestrate/analyze/AutoBeAnalyzeFileSystem.js.map +1 -0
  17. package/lib/orchestrate/analyze/AutoBeAnalyzePointer.d.ts +9 -0
  18. package/lib/orchestrate/analyze/AutoBeAnalyzePointer.js +3 -0
  19. package/lib/orchestrate/analyze/AutoBeAnalyzePointer.js.map +1 -0
  20. package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.d.ts +1 -1
  21. package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.js +8 -5
  22. package/lib/orchestrate/analyze/AutoBeAnalyzeReviewer.js.map +1 -0
  23. package/lib/orchestrate/analyze/orchestrateAnalyze.d.ts +31 -0
  24. package/lib/orchestrate/{orchestrateAnalyze.js → analyze/orchestrateAnalyze.js} +200 -59
  25. package/lib/orchestrate/analyze/orchestrateAnalyze.js.map +1 -0
  26. package/lib/orchestrate/facade/transformFacadeStateMessage.js +1 -1
  27. package/lib/orchestrate/facade/transformFacadeStateMessage.js.map +1 -1
  28. package/lib/orchestrate/index.d.ts +3 -3
  29. package/lib/orchestrate/index.js +6 -6
  30. package/lib/orchestrate/index.js.map +1 -1
  31. package/lib/orchestrate/interface/orchestrateInterfaceComplement.js +8 -1
  32. package/lib/orchestrate/interface/orchestrateInterfaceComplement.js.map +1 -1
  33. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js +6 -1
  34. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js.map +1 -1
  35. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js +3 -1
  36. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js.map +1 -1
  37. package/lib/orchestrate/interface/transformInterfaceHistories.js +41 -0
  38. package/lib/orchestrate/interface/transformInterfaceHistories.js.map +1 -1
  39. package/lib/orchestrate/prisma/orchestratePrismaComponent.js +6 -5
  40. package/lib/orchestrate/prisma/orchestratePrismaComponent.js.map +1 -1
  41. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.d.ts +1 -1
  42. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js +28 -1
  43. package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js.map +1 -1
  44. package/lib/orchestrate/prisma/transformPrismaCorrectHistories.js +9 -0
  45. package/lib/orchestrate/prisma/transformPrismaCorrectHistories.js.map +1 -1
  46. package/lib/orchestrate/prisma/transformPrismaHistories.js +9 -0
  47. package/lib/orchestrate/prisma/transformPrismaHistories.js.map +1 -1
  48. package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js +7 -0
  49. package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js.map +1 -1
  50. package/lib/orchestrate/{orchestrateTest.d.ts → test/orchestrateTest.d.ts} +2 -2
  51. package/lib/orchestrate/test/orchestrateTest.js +70 -0
  52. package/lib/orchestrate/test/orchestrateTest.js.map +1 -0
  53. package/lib/orchestrate/test/orchestrateTestCorrect.d.ts +4 -0
  54. package/lib/orchestrate/test/orchestrateTestCorrect.js +543 -0
  55. package/lib/orchestrate/test/orchestrateTestCorrect.js.map +1 -0
  56. package/lib/orchestrate/test/orchestrateTestProgress.d.ts +4 -0
  57. package/lib/orchestrate/test/orchestrateTestProgress.js +403 -0
  58. package/lib/orchestrate/test/orchestrateTestProgress.js.map +1 -0
  59. package/lib/orchestrate/test/orchestrateTestScenario.d.ts +4 -0
  60. package/lib/orchestrate/test/orchestrateTestScenario.js +700 -0
  61. package/lib/orchestrate/test/orchestrateTestScenario.js.map +1 -0
  62. package/lib/orchestrate/test/transformTestCorrectHistories.d.ts +2 -0
  63. package/lib/orchestrate/test/transformTestCorrectHistories.js +47 -0
  64. package/lib/orchestrate/test/transformTestCorrectHistories.js.map +1 -0
  65. package/lib/orchestrate/test/transformTestHistories.d.ts +3 -0
  66. package/lib/orchestrate/test/transformTestHistories.js +74 -0
  67. package/lib/orchestrate/test/transformTestHistories.js.map +1 -0
  68. package/lib/orchestrate/test/transformTestProgressHistories.d.ts +2 -0
  69. package/lib/orchestrate/test/transformTestProgressHistories.js +47 -0
  70. package/lib/orchestrate/test/transformTestProgressHistories.js.map +1 -0
  71. package/lib/orchestrate/test/transformTestScenarioHistories.d.ts +4 -0
  72. package/lib/orchestrate/test/transformTestScenarioHistories.js +176 -0
  73. package/lib/orchestrate/test/transformTestScenarioHistories.js.map +1 -0
  74. package/lib/structures/IAutoBeVendor.d.ts +45 -2
  75. package/package.json +6 -6
  76. package/src/AutoBeAgent.ts +5 -3
  77. package/src/constants/AutoBeSystemPromptConstant.ts +5 -2
  78. package/src/context/AutoBeContext.ts +2 -2
  79. package/src/context/IAutoBeApplicationProps.ts +6 -0
  80. package/src/factory/createAgenticaHistory.ts +1 -0
  81. package/src/factory/createAutoBeApplication.ts +2 -2
  82. package/src/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.ts +38 -36
  83. package/src/orchestrate/analyze/AutoBeAnalyzePointer.ts +10 -0
  84. package/src/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.ts +9 -6
  85. package/src/orchestrate/{orchestrateAnalyze.ts → analyze/orchestrateAnalyze.ts} +91 -39
  86. package/src/orchestrate/index.ts +3 -3
  87. package/src/orchestrate/interface/orchestrateInterfaceComplement.ts +8 -1
  88. package/src/orchestrate/interface/orchestrateInterfaceComponents.ts +6 -1
  89. package/src/orchestrate/interface/orchestrateInterfaceOperations.ts +3 -1
  90. package/src/orchestrate/interface/transformInterfaceHistories.ts +40 -0
  91. package/src/orchestrate/prisma/orchestratePrismaComponent.ts +4 -1
  92. package/src/orchestrate/prisma/transformPrismaComponentsHistories.ts +28 -0
  93. package/src/orchestrate/prisma/transformPrismaCorrectHistories.ts +9 -0
  94. package/src/orchestrate/prisma/transformPrismaHistories.ts +9 -0
  95. package/src/orchestrate/prisma/transformPrismaSchemaHistories.ts +7 -0
  96. package/src/orchestrate/test/orchestrateTest.ts +86 -0
  97. package/src/orchestrate/test/orchestrateTestCorrect.ts +368 -0
  98. package/src/orchestrate/test/orchestrateTestProgress.ts +264 -0
  99. package/src/orchestrate/test/orchestrateTestScenario.ts +178 -0
  100. package/src/orchestrate/test/transformTestCorrectHistories.ts +51 -0
  101. package/src/orchestrate/test/transformTestHistories.ts +77 -0
  102. package/src/orchestrate/test/transformTestProgressHistories.ts +51 -0
  103. package/src/orchestrate/test/transformTestScenarioHistories.ts +184 -0
  104. package/src/structures/IAutoBeVendor.ts +48 -2
  105. package/lib/analyze/AnalyzeAgent.d.ts +0 -24
  106. package/lib/analyze/AnalyzeAgent.js +0 -942
  107. package/lib/analyze/AnalyzeAgent.js.map +0 -1
  108. package/lib/analyze/AutoBeAnalyzeAgent.js.map +0 -1
  109. package/lib/analyze/AutoBeAnalyzeFileSystem.js.map +0 -1
  110. package/lib/analyze/AutoBeAnalyzeReviewer.js.map +0 -1
  111. package/lib/orchestrate/orchestrateAnalyze.d.ts +0 -6
  112. package/lib/orchestrate/orchestrateAnalyze.js.map +0 -1
  113. package/lib/orchestrate/orchestrateTest.js +0 -19
  114. package/lib/orchestrate/orchestrateTest.js.map +0 -1
  115. package/src/analyze/AnalyzeAgent.ts +0 -183
  116. package/src/orchestrate/orchestrateTest.ts +0 -18
  117. /package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeFileSystem.d.ts +0 -0
  118. /package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeFileSystem.js +0 -0
  119. /package/src/{analyze → orchestrate/analyze}/AutoBeAnalyzeFileSystem.ts +0 -0
@@ -50,12 +50,12 @@ const __typia_transform__validateReport = __importStar(require("typia/lib/intern
50
50
  const core_1 = require("@agentica/core");
51
51
  const typia_1 = __importDefault(require("typia"));
52
52
  const uuid_1 = require("uuid");
53
- const AutoBeAnalyzeAgent_1 = require("../analyze/AutoBeAnalyzeAgent");
54
- const AutoBeAnalyzeReviewer_1 = require("../analyze/AutoBeAnalyzeReviewer");
55
- const assertSchemaModel_1 = require("../context/assertSchemaModel");
53
+ const assertSchemaModel_1 = require("../../context/assertSchemaModel");
54
+ const AutoBeAnalyzeAgent_1 = require("./AutoBeAnalyzeAgent");
55
+ const AutoBeAnalyzeReviewer_1 = require("./AutoBeAnalyzeReviewer");
56
56
  /** @todo Kakasoo */
57
57
  const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0, function* () {
58
- var _a, _b, _c, _d, _e, _f, _g;
58
+ var _a, _b, _c, _d, _e, _f, _g, _h;
59
59
  const userPlanningRequirements = props.userPlanningRequirements;
60
60
  if (!userPlanningRequirements) {
61
61
  throw new Error(`Unable to prepare a proposal because there is no user requirement`);
@@ -78,6 +78,9 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
78
78
  controllers: [controller],
79
79
  config: {
80
80
  locale: (_c = ctx.config) === null || _c === void 0 ? void 0 : _c.locale,
81
+ executor: {
82
+ describe: null,
83
+ },
81
84
  systemPrompt: {
82
85
  common: () => "# Overview\n\n- You are the agent that determines the form of the entire document.\n- Because the tool you have has a function to determine all file names, use this function to determine the names of all files.\n- The first page of the file must be a page containing the table of contents, and from the second page, it must be a page corresponding to each table of contents.\n- Please clarify that the name of the table of contents page is the table of contents, such as `toc` or `table of content`.\n- Each document must begin with a number in turn, such as `00`, `01`, `02`, `03`.\n- Do not include database schema document." /* AutoBeSystemPromptConstant.ANALYZE_PLANNER */,
83
86
  },
@@ -116,32 +119,56 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
116
119
  return history;
117
120
  }
118
121
  const described = determined.find((el) => el.type === "describe");
119
- const filenames = Array.from(new Set(described
120
- ? described.executes
121
- .flatMap((el) => {
122
- if (el.protocol === "class") {
123
- return el.arguments.files;
124
- }
125
- return null;
126
- })
127
- .filter((el) => el !== null)
128
- : []));
129
- const pointers = yield Promise.all(filenames.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ filename }) {
130
- const pointer = {
131
- value: null,
122
+ // const determinedOutput = Array.from(
123
+ // new Set(
124
+ // described
125
+ // ? described.executes
126
+ // .map((el) => {
127
+ // if (el.protocol === "class") {
128
+ // return el.arguments as unknown as IDeterminingInput;
129
+ // }
130
+ // return null;
131
+ // })
132
+ // .filter((el) => el !== null)
133
+ // : [],
134
+ // ),
135
+ // );
136
+ const determinedOutput = (_d = described === null || described === void 0 ? void 0 : described.executes.find((el) => el.protocol === "class" && (() => { const _io0 = input => "string" === typeof input.prefix && (Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem))); const _io1 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)); return input => "object" === typeof input && null !== input && _io0(input); })()(el.value))) === null || _d === void 0 ? void 0 : _d.value;
137
+ const prefix = determinedOutput.prefix;
138
+ const describedFiles = determinedOutput.files;
139
+ if (describedFiles.length === 0) {
140
+ const history = {
141
+ id: (0, uuid_1.v4)(),
142
+ type: "assistantMessage",
143
+ text: "The current requirements are insufficient, so file generation will be suspended. It would be better to continue the conversation.",
144
+ created_at,
145
+ completed_at: new Date().toISOString(),
132
146
  };
133
- const agent = new AutoBeAnalyzeAgent_1.AutoBeAnalyzeAgent(AutoBeAnalyzeReviewer_1.AutoBeAnalyzeReviewer, ctx, pointer, filenames.map((el) => el.filename));
147
+ ctx.dispatch({
148
+ type: "assistantMessage",
149
+ text: "The current requirements are insufficient, so file generation will be suspended. It would be better to continue the conversation.",
150
+ created_at,
151
+ });
152
+ return history;
153
+ }
154
+ const pointers = yield Promise.all(describedFiles.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ filename, reason }) {
155
+ const pointer = { value: null };
156
+ const agent = new AutoBeAnalyzeAgent_1.AutoBeAnalyzeAgent(AutoBeAnalyzeReviewer_1.AutoBeAnalyzeReviewer, ctx, pointer, describedFiles.map((el) => el.filename));
134
157
  yield agent.conversate([
135
- `The names of all the files are as follows: ${filenames.join(",")}`,
158
+ `# Instruction`,
159
+ `The names of all the files are as follows: ${describedFiles.join(",")}`,
136
160
  "Assume that all files are in the same folder. Also, when pointing to the location of a file, go to the relative path.",
137
161
  "",
138
162
  `Among the various documents, the part you decided to take care of is as follows.: ${filename}`,
139
163
  `Only write this document named '${filename}'.`,
140
164
  "Never write other documents.",
141
165
  "",
166
+ "# User Planning Requirements",
142
167
  "```md",
143
168
  JSON.stringify(userPlanningRequirements),
144
169
  "```",
170
+ "The reason why this document needs to be written is as follows.",
171
+ `- reason: ${reason}`,
145
172
  ].join("\n"));
146
173
  return pointer;
147
174
  })));
@@ -156,6 +183,7 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
156
183
  id: (0, uuid_1.v4)(),
157
184
  type: "analyze",
158
185
  reason: userPlanningRequirements,
186
+ prefix,
159
187
  files: files,
160
188
  step,
161
189
  created_at,
@@ -165,6 +193,7 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
165
193
  ctx.histories().push(history);
166
194
  ctx.dispatch({
167
195
  type: "analyzeComplete",
196
+ prefix,
168
197
  files: files,
169
198
  step,
170
199
  created_at,
@@ -174,13 +203,13 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
174
203
  const history = {
175
204
  id: (0, uuid_1.v4)(),
176
205
  type: "assistantMessage",
177
- text: (_e = (_d = determined.find((el) => el.type === "assistantMessage")) === null || _d === void 0 ? void 0 : _d.text) !== null && _e !== void 0 ? _e : "",
206
+ text: (_f = (_e = determined.find((el) => el.type === "assistantMessage")) === null || _e === void 0 ? void 0 : _e.text) !== null && _f !== void 0 ? _f : "",
178
207
  created_at,
179
208
  completed_at: new Date().toISOString(),
180
209
  };
181
210
  ctx.dispatch({
182
211
  type: "assistantMessage",
183
- text: (_g = (_f = determined.find((el) => el.type === "assistantMessage")) === null || _f === void 0 ? void 0 : _f.text) !== null && _g !== void 0 ? _g : "",
212
+ text: (_h = (_g = determined.find((el) => el.type === "assistantMessage")) === null || _g === void 0 ? void 0 : _g.text) !== null && _h !== void 0 ? _h : "",
184
213
  created_at,
185
214
  });
186
215
  return history;
@@ -188,13 +217,17 @@ const orchestrateAnalyze = (ctx) => (props) => __awaiter(void 0, void 0, void 0,
188
217
  exports.orchestrateAnalyze = orchestrateAnalyze;
189
218
  class DeterminingFiles {
190
219
  /**
191
- * Determining the Initial File List
220
+ * Determining the Initial File List.
192
221
  *
193
222
  * Design a list of initial documents that you need to create for that
194
223
  * requirement. The list of documents is determined only by the name of the
195
- * file.
224
+ * file. If you determine from the conversation that the user's requirements
225
+ * have not been fully gathered, you must stop the analysis and continue
226
+ * collecting the remaining requirements. In this case, you do not need to
227
+ * generate any files. Simply pass an empty array to `input.files`, which is
228
+ * the input value for the `determine` tool.
196
229
  *
197
- * @param input
230
+ * @param input Prefix and files
198
231
  * @returns
199
232
  */
200
233
  determine(input) {
@@ -226,14 +259,26 @@ const claude = {
226
259
  {
227
260
  name: "determine",
228
261
  parameters: {
262
+ description: " Prefix and files\n\n------------------------------\n\nCurrent Type: {@link IDeterminingInput}",
229
263
  type: "object",
230
264
  properties: {
265
+ prefix: {
266
+ title: "Prefix",
267
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_).",
268
+ type: "string"
269
+ },
231
270
  files: {
271
+ title: "file names and reason to create.",
272
+ description: "File name must be English. and it must contains the numbering and prefix.",
232
273
  type: "array",
233
274
  items: {
234
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
275
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
235
276
  type: "object",
236
277
  properties: {
278
+ reason: {
279
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one.",
280
+ type: "string"
281
+ },
237
282
  filename: {
238
283
  title: "Filename to generate or overwrite",
239
284
  description: "Filename to generate or overwrite.",
@@ -242,26 +287,40 @@ const claude = {
242
287
  }
243
288
  },
244
289
  required: [
290
+ "reason",
245
291
  "filename"
246
292
  ]
247
293
  }
248
294
  }
249
295
  },
250
296
  required: [
297
+ "prefix",
251
298
  "files"
252
299
  ],
253
300
  additionalProperties: false,
254
301
  $defs: {}
255
302
  },
256
303
  output: {
304
+ description: "Current Type: {@link IDeterminingInput}",
257
305
  type: "object",
258
306
  properties: {
307
+ prefix: {
308
+ title: "Prefix",
309
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_).",
310
+ type: "string"
311
+ },
259
312
  files: {
313
+ title: "file names and reason to create.",
314
+ description: "File name must be English. and it must contains the numbering and prefix.",
260
315
  type: "array",
261
316
  items: {
262
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
317
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
263
318
  type: "object",
264
319
  properties: {
320
+ reason: {
321
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one.",
322
+ type: "string"
323
+ },
265
324
  filename: {
266
325
  title: "Filename to generate or overwrite",
267
326
  description: "Filename to generate or overwrite.",
@@ -270,33 +329,43 @@ const claude = {
270
329
  }
271
330
  },
272
331
  required: [
332
+ "reason",
273
333
  "filename"
274
334
  ]
275
335
  }
276
336
  }
277
337
  },
278
338
  required: [
339
+ "prefix",
279
340
  "files"
280
341
  ]
281
342
  },
282
- description: "Determining the Initial File List\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile.",
283
- validate: (() => { const _io0 = input => Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem)); const _io1 = input => "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename); const _vo0 = (input, _path, _exceptionable = true) => [(Array.isArray(input.files) || _report(_exceptionable, {
343
+ description: "Determining the Initial File List.\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile. If you determine from the conversation that the user's requirements\nhave not been fully gathered, you must stop the analysis and continue\ncollecting the remaining requirements. In this case, you do not need to\ngenerate any files. Simply pass an empty array to `input.files`, which is\nthe input value for the `determine` tool.",
344
+ validate: (() => { const _io0 = input => "string" === typeof input.prefix && (Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem))); const _io1 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.prefix || _report(_exceptionable, {
345
+ path: _path + ".prefix",
346
+ expected: "string",
347
+ value: input.prefix
348
+ }), (Array.isArray(input.files) || _report(_exceptionable, {
284
349
  path: _path + ".files",
285
- expected: "Array<Pick<IFile, \"filename\">>",
350
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
286
351
  value: input.files
287
352
  })) && input.files.map((elem, _index2) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
288
353
  path: _path + ".files[" + _index2 + "]",
289
- expected: "Pick<IFile, \"filename\">",
354
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
290
355
  value: elem
291
356
  })) && _vo1(elem, _path + ".files[" + _index2 + "]", true && _exceptionable) || _report(_exceptionable, {
292
357
  path: _path + ".files[" + _index2 + "]",
293
- expected: "Pick<IFile, \"filename\">",
358
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
294
359
  value: elem
295
360
  })).every(flag => flag) || _report(_exceptionable, {
296
361
  path: _path + ".files",
297
- expected: "Array<Pick<IFile, \"filename\">>",
362
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
298
363
  value: input.files
299
- })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
364
+ })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
365
+ path: _path + ".reason",
366
+ expected: "string",
367
+ value: input.reason
368
+ }), "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
300
369
  path: _path + ".filename",
301
370
  expected: "`${string}.md`",
302
371
  value: input.filename
@@ -306,11 +375,11 @@ const claude = {
306
375
  _report = __typia_transform__validateReport._validateReport(errors);
307
376
  ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
308
377
  path: _path + "",
309
- expected: "__type",
378
+ expected: "IDeterminingInput",
310
379
  value: input
311
380
  })) && _vo0(input, _path + "", true) || _report(true, {
312
381
  path: _path + "",
313
- expected: "__type",
382
+ expected: "IDeterminingInput",
314
383
  value: input
315
384
  }))(input, "$input", true);
316
385
  const success = 0 === errors.length;
@@ -343,14 +412,26 @@ const collection = {
343
412
  {
344
413
  name: "determine",
345
414
  parameters: {
415
+ description: " Prefix and files\n\n------------------------------\n\nCurrent Type: {@link IDeterminingInput}",
346
416
  type: "object",
347
417
  properties: {
418
+ prefix: {
419
+ title: "Prefix",
420
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_).",
421
+ type: "string"
422
+ },
348
423
  files: {
424
+ title: "file names and reason to create.",
425
+ description: "File name must be English. and it must contains the numbering and prefix.",
349
426
  type: "array",
350
427
  items: {
351
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
428
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
352
429
  type: "object",
353
430
  properties: {
431
+ reason: {
432
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one.",
433
+ type: "string"
434
+ },
354
435
  filename: {
355
436
  title: "Filename to generate or overwrite",
356
437
  description: "Filename to generate or overwrite.\n\n\n@pattern ((.*)\\.md)$",
@@ -358,26 +439,40 @@ const collection = {
358
439
  }
359
440
  },
360
441
  required: [
442
+ "reason",
361
443
  "filename"
362
444
  ]
363
445
  }
364
446
  }
365
447
  },
366
448
  required: [
449
+ "prefix",
367
450
  "files"
368
451
  ],
369
452
  additionalProperties: false,
370
453
  $defs: {}
371
454
  },
372
455
  output: {
456
+ description: "Current Type: {@link IDeterminingInput}",
373
457
  type: "object",
374
458
  properties: {
459
+ prefix: {
460
+ title: "Prefix",
461
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_).",
462
+ type: "string"
463
+ },
375
464
  files: {
465
+ title: "file names and reason to create.",
466
+ description: "File name must be English. and it must contains the numbering and prefix.",
376
467
  type: "array",
377
468
  items: {
378
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
469
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
379
470
  type: "object",
380
471
  properties: {
472
+ reason: {
473
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one.",
474
+ type: "string"
475
+ },
381
476
  filename: {
382
477
  title: "Filename to generate or overwrite",
383
478
  description: "Filename to generate or overwrite.\n\n\n@pattern ((.*)\\.md)$",
@@ -385,33 +480,43 @@ const collection = {
385
480
  }
386
481
  },
387
482
  required: [
483
+ "reason",
388
484
  "filename"
389
485
  ]
390
486
  }
391
487
  }
392
488
  },
393
489
  required: [
490
+ "prefix",
394
491
  "files"
395
492
  ]
396
493
  },
397
- description: "Determining the Initial File List\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile.",
398
- validate: (() => { const _io0 = input => Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem)); const _io1 = input => "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename); const _vo0 = (input, _path, _exceptionable = true) => [(Array.isArray(input.files) || _report(_exceptionable, {
494
+ description: "Determining the Initial File List.\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile. If you determine from the conversation that the user's requirements\nhave not been fully gathered, you must stop the analysis and continue\ncollecting the remaining requirements. In this case, you do not need to\ngenerate any files. Simply pass an empty array to `input.files`, which is\nthe input value for the `determine` tool.",
495
+ validate: (() => { const _io0 = input => "string" === typeof input.prefix && (Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem))); const _io1 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.prefix || _report(_exceptionable, {
496
+ path: _path + ".prefix",
497
+ expected: "string",
498
+ value: input.prefix
499
+ }), (Array.isArray(input.files) || _report(_exceptionable, {
399
500
  path: _path + ".files",
400
- expected: "Array<Pick<IFile, \"filename\">>",
501
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
401
502
  value: input.files
402
503
  })) && input.files.map((elem, _index2) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
403
504
  path: _path + ".files[" + _index2 + "]",
404
- expected: "Pick<IFile, \"filename\">",
505
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
405
506
  value: elem
406
507
  })) && _vo1(elem, _path + ".files[" + _index2 + "]", true && _exceptionable) || _report(_exceptionable, {
407
508
  path: _path + ".files[" + _index2 + "]",
408
- expected: "Pick<IFile, \"filename\">",
509
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
409
510
  value: elem
410
511
  })).every(flag => flag) || _report(_exceptionable, {
411
512
  path: _path + ".files",
412
- expected: "Array<Pick<IFile, \"filename\">>",
513
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
413
514
  value: input.files
414
- })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
515
+ })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
516
+ path: _path + ".reason",
517
+ expected: "string",
518
+ value: input.reason
519
+ }), "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
415
520
  path: _path + ".filename",
416
521
  expected: "`${string}.md`",
417
522
  value: input.filename
@@ -421,11 +526,11 @@ const collection = {
421
526
  _report = __typia_transform__validateReport._validateReport(errors);
422
527
  ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
423
528
  path: _path + "",
424
- expected: "__type",
529
+ expected: "IDeterminingInput",
425
530
  value: input
426
531
  })) && _vo0(input, _path + "", true) || _report(true, {
427
532
  path: _path + "",
428
- expected: "__type",
533
+ expected: "IDeterminingInput",
429
534
  value: input
430
535
  }))(input, "$input", true);
431
536
  const success = 0 === errors.length;
@@ -463,11 +568,20 @@ const collection = {
463
568
  parameters: {
464
569
  type: "object",
465
570
  properties: {
571
+ prefix: {
572
+ type: "string",
573
+ title: "Prefix",
574
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_)."
575
+ },
466
576
  files: {
467
577
  type: "array",
468
578
  items: {
469
579
  type: "object",
470
580
  properties: {
581
+ reason: {
582
+ type: "string",
583
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one."
584
+ },
471
585
  filename: {
472
586
  type: "string",
473
587
  pattern: "((.*)\\.md)$",
@@ -476,26 +590,40 @@ const collection = {
476
590
  }
477
591
  },
478
592
  required: [
593
+ "reason",
479
594
  "filename"
480
595
  ],
481
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
596
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
482
597
  additionalProperties: false
483
- }
598
+ },
599
+ title: "file names and reason to create.",
600
+ description: "File name must be English. and it must contains the numbering and prefix."
484
601
  }
485
602
  },
486
603
  required: [
604
+ "prefix",
487
605
  "files"
488
606
  ],
607
+ description: " Prefix and files\n\n------------------------------\n\nCurrent Type: {@link IDeterminingInput}",
489
608
  additionalProperties: false
490
609
  },
491
610
  output: {
492
611
  type: "object",
493
612
  properties: {
613
+ prefix: {
614
+ type: "string",
615
+ title: "Prefix",
616
+ description: "Prefix for file names and all prisma schema files, table, interface, and\nvariable names. For example, if you were to create a bulletin board\nservice, the prefix would be bbs. At this time, the name of the document\nwould be, for example, 00_bbs_table_of_contents, and bbs would have to be\nattached to the name of all documents. This value would then be passed to\nother agents as well, in the form of bbs_article, bbs_article_snapshot, and\nbbs_comments in the table name. Interfaces will likewise be used in\ninterfaces and tests because they originate from the name of prisma scheme.\nDo not use prefixes that are related to the technology stack (e.g., ts_,\napi_, react_) or unnatural prefixes that typically wouldn\u2019t appear in table\nnames or domain models (e.g., zz_, my_, dev_)."
617
+ },
494
618
  files: {
495
619
  type: "array",
496
620
  items: {
497
621
  type: "object",
498
622
  properties: {
623
+ reason: {
624
+ type: "string",
625
+ description: "Describe briefly why you made this document, and if you have any plans for\nthe next one."
626
+ },
499
627
  filename: {
500
628
  type: "string",
501
629
  pattern: "((.*)\\.md)$",
@@ -504,36 +632,49 @@ const collection = {
504
632
  }
505
633
  },
506
634
  required: [
635
+ "reason",
507
636
  "filename"
508
637
  ],
509
- description: "Description of the current {@link PickIFilefilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
638
+ description: "Description of the current {@link PickIFilereasonfilename} type:\n\n> From T, pick a set of properties whose keys are in the union K",
510
639
  additionalProperties: false
511
- }
640
+ },
641
+ title: "file names and reason to create.",
642
+ description: "File name must be English. and it must contains the numbering and prefix."
512
643
  }
513
644
  },
514
645
  required: [
646
+ "prefix",
515
647
  "files"
516
648
  ],
649
+ description: "Current Type: {@link IDeterminingInput}",
517
650
  additionalProperties: false
518
651
  },
519
- description: "Determining the Initial File List\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile.",
520
- validate: (() => { const _io0 = input => Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem)); const _io1 = input => "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename); const _vo0 = (input, _path, _exceptionable = true) => [(Array.isArray(input.files) || _report(_exceptionable, {
652
+ description: "Determining the Initial File List.\n\nDesign a list of initial documents that you need to create for that\nrequirement. The list of documents is determined only by the name of the\nfile. If you determine from the conversation that the user's requirements\nhave not been fully gathered, you must stop the analysis and continue\ncollecting the remaining requirements. In this case, you do not need to\ngenerate any files. Simply pass an empty array to `input.files`, which is\nthe input value for the `determine` tool.",
653
+ validate: (() => { const _io0 = input => "string" === typeof input.prefix && (Array.isArray(input.files) && input.files.every(elem => "object" === typeof elem && null !== elem && _io1(elem))); const _io1 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.prefix || _report(_exceptionable, {
654
+ path: _path + ".prefix",
655
+ expected: "string",
656
+ value: input.prefix
657
+ }), (Array.isArray(input.files) || _report(_exceptionable, {
521
658
  path: _path + ".files",
522
- expected: "Array<Pick<IFile, \"filename\">>",
659
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
523
660
  value: input.files
524
661
  })) && input.files.map((elem, _index2) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
525
662
  path: _path + ".files[" + _index2 + "]",
526
- expected: "Pick<IFile, \"filename\">",
663
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
527
664
  value: elem
528
665
  })) && _vo1(elem, _path + ".files[" + _index2 + "]", true && _exceptionable) || _report(_exceptionable, {
529
666
  path: _path + ".files[" + _index2 + "]",
530
- expected: "Pick<IFile, \"filename\">",
667
+ expected: "Pick<IFile, \"reason\" | \"filename\">",
531
668
  value: elem
532
669
  })).every(flag => flag) || _report(_exceptionable, {
533
670
  path: _path + ".files",
534
- expected: "Array<Pick<IFile, \"filename\">>",
671
+ expected: "Array<Pick<IFile, \"reason\" | \"filename\">>",
535
672
  value: input.files
536
- })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
673
+ })].every(flag => flag); const _vo1 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
674
+ path: _path + ".reason",
675
+ expected: "string",
676
+ value: input.reason
677
+ }), "string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename) || _report(_exceptionable, {
537
678
  path: _path + ".filename",
538
679
  expected: "`${string}.md`",
539
680
  value: input.filename
@@ -543,11 +684,11 @@ const collection = {
543
684
  _report = __typia_transform__validateReport._validateReport(errors);
544
685
  ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || _report(true, {
545
686
  path: _path + "",
546
- expected: "__type",
687
+ expected: "IDeterminingInput",
547
688
  value: input
548
689
  })) && _vo0(input, _path + "", true) || _report(true, {
549
690
  path: _path + "",
550
- expected: "__type",
691
+ expected: "IDeterminingInput",
551
692
  value: input
552
693
  }))(input, "$input", true);
553
694
  const success = 0 === errors.length;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrateAnalyze.js","sourceRoot":"","sources":["../../../src/orchestrate/analyze/orchestrateAnalyze.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ exports.transformFacadeStateMessage = transformFacadeStateMessage;
4
4
  const StringUtil_1 = require("../../utils/StringUtil");
5
5
  function transformFacadeStateMessage(state) {
6
6
  const currentState = getCurrentState(state);
7
- return "# AutoBE Main Agent System Prompt\n\nYou are the AutoBE Main Agent, an orchestrator for backend server development automation. Your role is to manage the conversation with users about their backend requirements and coordinate the execution of five specialized functional agents through function calling.\n\n## Core Responsibilities\n\n1. **Requirements Gathering**: Engage in detailed conversations with users to understand their backend server needs, asking clarifying questions about business logic, data models, API endpoints, and technical requirements.\n\n2. **Agent Orchestration**: Execute the appropriate functional agents in the correct sequence based on the development stage and user needs.\n\n3. **Progress Communication**: Keep users informed about the current development stage, what has been completed, and what steps remain.\n\n## Functional Agents Overview\n\nYou have access to five functional agents that must be executed in a specific order:\n\n1. **Analyze Agent** - Converts conversations into structured requirements specifications\n2. **Prisma Agent** - Generates database schemas and ERD documentation\n3. **Interface Agent** - Creates API interfaces with OpenAPI schemas and TypeScript code\n4. **Test Agent** - Generates comprehensive E2E test suites\n5. **Realize Agent** - Implements actual business logic for service providers\n\n## Execution Rules\n\n### 1. Sequential Dependencies\n\n- **analyze()**: Can only be called when sufficient requirements have been gathered\n- **prisma()**: Requires successful completion of analyze()\n- **interface()**: Requires successful completion of prisma()\n- **test()**: Requires successful completion of interface()\n- **realize()**: Requires successful completion of interface()\n\n### 2. Requirements Gathering Phase\n\nBefore calling analyze(), ensure you have discussed:\n\n- System purpose and overall goals\n- Core features and functionalities\n- User roles and permissions\n- Main data entities and their relationships\n- Key business rules and constraints\n- API endpoints needed\n- Any specific technical requirements\n\nIf these aspects are unclear, continue the conversation to gather more details.\n\n### 3. Development Workflow\n\n1. Start by understanding the user's needs through conversation\n2. When requirements are sufficiently detailed, execute analyze()\n3. Review the analysis results with the user\n4. If approved, proceed with prisma() \u2192 interface() \u2192 test() \u2192 realize()\n5. At each stage, present results and get user confirmation before proceeding\n\n### 4. Handling Changes\n\n- If users request changes after agents have been executed, first understand the scope\n- For minor adjustments, you may re-run specific agents\n- For major changes, consider re-running analyze() to update the specification\n- Always explain the impact of changes on already generated code\n\n## Communication Guidelines\n\n1. **Be Transparent**: Clearly explain which agent is being executed and why\n2. **Show Progress**: Indicate completed steps and remaining work\n3. **Confirm Understanding**: Summarize requirements before executing agents\n4. **Request Approval**: Get user confirmation before moving to the next stage\n5. **Explain Results**: Briefly describe what each agent has generated\n\n## Current State\n\n{% STATE %}" /* AutoBeSystemPromptConstant.FACADE */.replace("{% STATE %}", StringUtil_1.StringUtil.trim `
7
+ return "# AutoBE Main Agent System Prompt\n\nYou are the AutoBE Main Agent, an orchestrator for backend server development automation. Your role is to manage the conversation with users about their backend requirements and coordinate the execution of five specialized functional agents through function calling.\n\n## Core Responsibilities\n\n1. **Requirements Gathering**: Engage in detailed conversations with users to understand their backend server needs, asking clarifying questions about business logic, data models, API endpoints, and technical requirements.\n\n2. **Agent Orchestration**: Execute the appropriate functional agents in the correct sequence based on the development stage and user needs.\n\n3. **Progress Communication**: Keep users informed about the current development stage, what has been completed, and what steps remain.\n\n## Functional Agents Overview\n\nYou have access to five functional agents that must be executed in a specific order:\n\n1. **Analyze Agent** - Converts conversations into structured requirements specifications\n2. **Prisma Agent** - Generates database schemas and ERD documentation\n3. **Interface Agent** - Creates API interfaces with OpenAPI schemas and TypeScript code\n4. **Test Agent** - Generates comprehensive E2E test suites\n5. **Realize Agent** - Implements actual business logic for service providers\n\n## Execution Rules\n\n### 1. Sequential Dependencies\n\n- **analyze()**: Can only be called when sufficient requirements have been gathered.\n- **prisma()**: Requires successful completion of analyze()\n- **interface()**: Requires successful completion of prisma()\n- **test()**: Requires successful completion of interface()\n- **realize()**: Requires successful completion of interface()\n\n### 2. Requirements Gathering and analyze() Calling Criteria\n\n- Since users are not developers, it is okay if they do not understand technical terms like \u201Cendpoints\u201D or \u201Cdata models.\u201D \n\n- Your job is to help users clearly express their intended **features** by asking many questions. \n\n- Use examples and simple questions to guide them if they have trouble explaining. \n\n- Break down features into smaller steps if needed to complete the planning gradually. \n\n- For instance, ask questions like \u201CWhat tasks do you want to automate?\u201D, \u201CWhat roles do users have?\u201D, \u201CWhat screens or actions are involved?\u201D \n\n- Even if the system requires many or complex APIs, it is not necessary to know all of them upfront. Focus on gathering core requirements step by step. \n\n#### Conditions for Calling analyze() \n- Call analyze() only when the user has clearly stated sufficient **features** and **requirements**, or \n- The user explicitly delegates the planning to you by saying things like \u201CI\u2019ll leave the planning to you\u201D or \u201CPlease proceed as you see fit.\u201D \n\n#### Pre-call Checks \n- If requirements are insufficient for some features, do **not** call analyze() and keep asking questions until the specifications are complete. \n- Continue asking actively and explain any technical terms in an easy-to-understand way.\n\n### 3. Requirements Gathering Phase\n\nBefore calling analyze(), ensure you have discussed:\n\n- System purpose and overall goals\n- Core features and functionalities\n- User roles and permissions\n- Main data entities and their relationships\n- Key business rules and constraints\n- API endpoints needed\n- Any specific technical requirements\n\nIf these aspects are unclear, continue the conversation to gather more details.\n\n### 4. Development Workflow\n\n1. Start by understanding the user's needs through conversation\n2. When requirements are sufficiently detailed, execute analyze()\n3. Review the analysis results with the user\n4. If approved, proceed with prisma() \u2192 interface() \u2192 test() \u2192 realize()\n5. At each stage, present results and get user confirmation before proceeding\n\n### 5. Handling Changes\n\n- If users request changes after agents have been executed, first understand the scope\n- For minor adjustments, you may re-run specific agents\n- For major changes, consider re-running analyze() to update the specification\n- Always explain the impact of changes on already generated code\n\n## Communication Guidelines\n\n1. **Be Transparent**: Clearly explain which agent is being executed and why\n2. **Show Progress**: Indicate completed steps and remaining work\n3. **Confirm Understanding**: Summarize requirements before executing agents\n4. **Request Approval**: Get user confirmation before moving to the next stage\n5. **Explain Results**: Briefly describe what each agent has generated\n\n## Current State\n\n{% STATE %}" /* AutoBeSystemPromptConstant.FACADE */.replace("{% STATE %}", StringUtil_1.StringUtil.trim `
8
8
  ## Current State
9
9
 
10
10
  The current execution status of each functional agent is shown below.
@@ -1 +1 @@
1
- {"version":3,"file":"transformFacadeStateMessage.js","sourceRoot":"","sources":["../../../src/orchestrate/facade/transformFacadeStateMessage.ts"],"names":[],"mappings":";;AAIA,kEA0BC;AA5BD,uDAAoD;AAEpD,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,YAAY,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,myGAAkC,OAAO,CAC9C,aAAa,EACb,uBAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;mBAeA,YAAY,CAAC,OAAO;kBACrB,YAAY,CAAC,MAAM;qBAChB,YAAY,CAAC,SAAS;gBAC3B,YAAY,CAAC,IAAI;mBACd,YAAY,CAAC,OAAO;KAClC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,KAAK,GAAG,CACZ,GAEQ,EACR,EAAE;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;aACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YAAE,OAAO,YAAY,CAAC;;YACzD,OAAO,aAAa,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QACvD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transformFacadeStateMessage.js","sourceRoot":"","sources":["../../../src/orchestrate/facade/transformFacadeStateMessage.ts"],"names":[],"mappings":";;AAIA,kEA0BC;AA5BD,uDAAoD;AAEpD,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,YAAY,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,0qJAAkC,OAAO,CAC9C,aAAa,EACb,uBAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;mBAeA,YAAY,CAAC,OAAO;kBACrB,YAAY,CAAC,MAAM;qBAChB,YAAY,CAAC,SAAS;gBAC3B,YAAY,CAAC,IAAI;mBACd,YAAY,CAAC,OAAO;KAClC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,KAAK,GAAG,CACZ,GAEQ,EACR,EAAE;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;aACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YAAE,OAAO,YAAY,CAAC;;YACzD,OAAO,aAAa,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QACvD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- export { orchestrateAnalyze as analyze } from "./orchestrateAnalyze";
1
+ export { orchestrateAnalyze as analyze } from "./analyze/orchestrateAnalyze";
2
2
  export { orchestrateInterface as interface } from "./interface/orchestrateInterface";
3
- export { orchestratePrisma as prisma } from "./prisma/orchestratePrisma";
4
- export { orchestrateTest as test } from "./orchestrateTest";
5
3
  export { orchestrateRealize as realize } from "./orchestrateRealize";
4
+ export { orchestrateTest as test } from "./test/orchestrateTest";
5
+ export { orchestratePrisma as prisma } from "./prisma/orchestratePrisma";