@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.
- package/lib/AutoBeAgent.js +4 -4
- package/lib/AutoBeAgent.js.map +1 -1
- package/lib/constants/AutoBeSystemPromptConstant.d.ts +5 -2
- package/lib/constants/AutoBeSystemPromptConstant.js.map +1 -1
- package/lib/context/AutoBeContext.d.ts +2 -2
- package/lib/context/IAutoBeApplicationProps.d.ts +6 -0
- package/lib/factory/createAgenticaHistory.js +1 -0
- package/lib/factory/createAgenticaHistory.js.map +1 -1
- package/lib/factory/createAutoBeApplication.js +17 -17
- package/lib/factory/createAutoBeApplication.js.map +1 -1
- package/lib/index.mjs +6228 -4563
- package/lib/index.mjs.map +1 -1
- package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.d.ts +4 -8
- package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.js +25 -20
- package/lib/orchestrate/analyze/AutoBeAnalyzeAgent.js.map +1 -0
- package/lib/orchestrate/analyze/AutoBeAnalyzeFileSystem.js.map +1 -0
- package/lib/orchestrate/analyze/AutoBeAnalyzePointer.d.ts +9 -0
- package/lib/orchestrate/analyze/AutoBeAnalyzePointer.js +3 -0
- package/lib/orchestrate/analyze/AutoBeAnalyzePointer.js.map +1 -0
- package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.d.ts +1 -1
- package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.js +8 -5
- package/lib/orchestrate/analyze/AutoBeAnalyzeReviewer.js.map +1 -0
- package/lib/orchestrate/analyze/orchestrateAnalyze.d.ts +31 -0
- package/lib/orchestrate/{orchestrateAnalyze.js → analyze/orchestrateAnalyze.js} +200 -59
- package/lib/orchestrate/analyze/orchestrateAnalyze.js.map +1 -0
- package/lib/orchestrate/facade/transformFacadeStateMessage.js +1 -1
- package/lib/orchestrate/facade/transformFacadeStateMessage.js.map +1 -1
- package/lib/orchestrate/index.d.ts +3 -3
- package/lib/orchestrate/index.js +6 -6
- package/lib/orchestrate/index.js.map +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceComplement.js +8 -1
- package/lib/orchestrate/interface/orchestrateInterfaceComplement.js.map +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceComponents.js +6 -1
- package/lib/orchestrate/interface/orchestrateInterfaceComponents.js.map +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceOperations.js +3 -1
- package/lib/orchestrate/interface/orchestrateInterfaceOperations.js.map +1 -1
- package/lib/orchestrate/interface/transformInterfaceHistories.js +41 -0
- package/lib/orchestrate/interface/transformInterfaceHistories.js.map +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaComponent.js +6 -5
- package/lib/orchestrate/prisma/orchestratePrismaComponent.js.map +1 -1
- package/lib/orchestrate/prisma/transformPrismaComponentsHistories.d.ts +1 -1
- package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js +28 -1
- package/lib/orchestrate/prisma/transformPrismaComponentsHistories.js.map +1 -1
- package/lib/orchestrate/prisma/transformPrismaCorrectHistories.js +9 -0
- package/lib/orchestrate/prisma/transformPrismaCorrectHistories.js.map +1 -1
- package/lib/orchestrate/prisma/transformPrismaHistories.js +9 -0
- package/lib/orchestrate/prisma/transformPrismaHistories.js.map +1 -1
- package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js +7 -0
- package/lib/orchestrate/prisma/transformPrismaSchemaHistories.js.map +1 -1
- package/lib/orchestrate/{orchestrateTest.d.ts → test/orchestrateTest.d.ts} +2 -2
- package/lib/orchestrate/test/orchestrateTest.js +70 -0
- package/lib/orchestrate/test/orchestrateTest.js.map +1 -0
- package/lib/orchestrate/test/orchestrateTestCorrect.d.ts +4 -0
- package/lib/orchestrate/test/orchestrateTestCorrect.js +543 -0
- package/lib/orchestrate/test/orchestrateTestCorrect.js.map +1 -0
- package/lib/orchestrate/test/orchestrateTestProgress.d.ts +4 -0
- package/lib/orchestrate/test/orchestrateTestProgress.js +403 -0
- package/lib/orchestrate/test/orchestrateTestProgress.js.map +1 -0
- package/lib/orchestrate/test/orchestrateTestScenario.d.ts +4 -0
- package/lib/orchestrate/test/orchestrateTestScenario.js +700 -0
- package/lib/orchestrate/test/orchestrateTestScenario.js.map +1 -0
- package/lib/orchestrate/test/transformTestCorrectHistories.d.ts +2 -0
- package/lib/orchestrate/test/transformTestCorrectHistories.js +47 -0
- package/lib/orchestrate/test/transformTestCorrectHistories.js.map +1 -0
- package/lib/orchestrate/test/transformTestHistories.d.ts +3 -0
- package/lib/orchestrate/test/transformTestHistories.js +74 -0
- package/lib/orchestrate/test/transformTestHistories.js.map +1 -0
- package/lib/orchestrate/test/transformTestProgressHistories.d.ts +2 -0
- package/lib/orchestrate/test/transformTestProgressHistories.js +47 -0
- package/lib/orchestrate/test/transformTestProgressHistories.js.map +1 -0
- package/lib/orchestrate/test/transformTestScenarioHistories.d.ts +4 -0
- package/lib/orchestrate/test/transformTestScenarioHistories.js +176 -0
- package/lib/orchestrate/test/transformTestScenarioHistories.js.map +1 -0
- package/lib/structures/IAutoBeVendor.d.ts +45 -2
- package/package.json +6 -6
- package/src/AutoBeAgent.ts +5 -3
- package/src/constants/AutoBeSystemPromptConstant.ts +5 -2
- package/src/context/AutoBeContext.ts +2 -2
- package/src/context/IAutoBeApplicationProps.ts +6 -0
- package/src/factory/createAgenticaHistory.ts +1 -0
- package/src/factory/createAutoBeApplication.ts +2 -2
- package/src/{analyze → orchestrate/analyze}/AutoBeAnalyzeAgent.ts +38 -36
- package/src/orchestrate/analyze/AutoBeAnalyzePointer.ts +10 -0
- package/src/{analyze → orchestrate/analyze}/AutoBeAnalyzeReviewer.ts +9 -6
- package/src/orchestrate/{orchestrateAnalyze.ts → analyze/orchestrateAnalyze.ts} +91 -39
- package/src/orchestrate/index.ts +3 -3
- package/src/orchestrate/interface/orchestrateInterfaceComplement.ts +8 -1
- package/src/orchestrate/interface/orchestrateInterfaceComponents.ts +6 -1
- package/src/orchestrate/interface/orchestrateInterfaceOperations.ts +3 -1
- package/src/orchestrate/interface/transformInterfaceHistories.ts +40 -0
- package/src/orchestrate/prisma/orchestratePrismaComponent.ts +4 -1
- package/src/orchestrate/prisma/transformPrismaComponentsHistories.ts +28 -0
- package/src/orchestrate/prisma/transformPrismaCorrectHistories.ts +9 -0
- package/src/orchestrate/prisma/transformPrismaHistories.ts +9 -0
- package/src/orchestrate/prisma/transformPrismaSchemaHistories.ts +7 -0
- package/src/orchestrate/test/orchestrateTest.ts +86 -0
- package/src/orchestrate/test/orchestrateTestCorrect.ts +368 -0
- package/src/orchestrate/test/orchestrateTestProgress.ts +264 -0
- package/src/orchestrate/test/orchestrateTestScenario.ts +178 -0
- package/src/orchestrate/test/transformTestCorrectHistories.ts +51 -0
- package/src/orchestrate/test/transformTestHistories.ts +77 -0
- package/src/orchestrate/test/transformTestProgressHistories.ts +51 -0
- package/src/orchestrate/test/transformTestScenarioHistories.ts +184 -0
- package/src/structures/IAutoBeVendor.ts +48 -2
- package/lib/analyze/AnalyzeAgent.d.ts +0 -24
- package/lib/analyze/AnalyzeAgent.js +0 -942
- package/lib/analyze/AnalyzeAgent.js.map +0 -1
- package/lib/analyze/AutoBeAnalyzeAgent.js.map +0 -1
- package/lib/analyze/AutoBeAnalyzeFileSystem.js.map +0 -1
- package/lib/analyze/AutoBeAnalyzeReviewer.js.map +0 -1
- package/lib/orchestrate/orchestrateAnalyze.d.ts +0 -6
- package/lib/orchestrate/orchestrateAnalyze.js.map +0 -1
- package/lib/orchestrate/orchestrateTest.js +0 -19
- package/lib/orchestrate/orchestrateTest.js.map +0 -1
- package/src/analyze/AnalyzeAgent.ts +0 -183
- package/src/orchestrate/orchestrateTest.ts +0 -18
- /package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeFileSystem.d.ts +0 -0
- /package/lib/{analyze → orchestrate/analyze}/AutoBeAnalyzeFileSystem.js +0 -0
- /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
|
|
54
|
-
const
|
|
55
|
-
const
|
|
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
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: (
|
|
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: (
|
|
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
|
|
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
|
|
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
|
|
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) => [
|
|
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.
|
|
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: "
|
|
378
|
+
expected: "IDeterminingInput",
|
|
310
379
|
value: input
|
|
311
380
|
})) && _vo0(input, _path + "", true) || _report(true, {
|
|
312
381
|
path: _path + "",
|
|
313
|
-
expected: "
|
|
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
|
|
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
|
|
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
|
|
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) => [
|
|
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.
|
|
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: "
|
|
529
|
+
expected: "IDeterminingInput",
|
|
425
530
|
value: input
|
|
426
531
|
})) && _vo0(input, _path + "", true) || _report(true, {
|
|
427
532
|
path: _path + "",
|
|
428
|
-
expected: "
|
|
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
|
|
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
|
|
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
|
|
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) => [
|
|
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.
|
|
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: "
|
|
687
|
+
expected: "IDeterminingInput",
|
|
547
688
|
value: input
|
|
548
689
|
})) && _vo0(input, _path + "", true) || _report(true, {
|
|
549
690
|
path: _path + "",
|
|
550
|
-
expected: "
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoE;AAMpE,kDAA0B;AAC1B,+BAA0B;AAK1B,uEAAoE;AACpE,6DAA0D;AAG1D,mEAAgE;AAEhE,oBAAoB;AACb,MAAM,kBAAkB,GAC7B,CAAiC,GAAyB,EAAE,EAAE,CAC9D,CACE,KAA8B,EACiC,EAAE;;IACjE,MAAM,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CAAC;IAChE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAA,MAAA,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,0CAAE,IAAI,mCAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,wBAAwB;QAChC,IAAI;QACJ,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,gBAAgB,CAAQ;QACzC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,IAAI,gBAAgB,EAAE;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,oBAAa,CAAC;QACjC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE;YACN,MAAM,EAAE,MAAA,GAAG,CAAC,MAAM,0CAAE,MAAM;YAC1B,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI;aACf;YACD,YAAY,EAAE;gBACZ,MAAM,EAAE,GAAG,EAAE,sqBAA2C;aACzD;SACF;QACD,SAAS,EAAE;YACT,GAAG,GAAG;iBACH,SAAS,EAAE;iBACX,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa,CACpE;SACJ;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,UAAU,CAC1C;QACE,uDAAuD;QACvD,OAAO;QACP,wBAAwB;QACxB,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvD,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAkC;YAC7C,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,UAAU;YACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,UAAU;SACX,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAClE,uCAAuC;IACvC,aAAa;IACb,gBAAgB;IAChB,6BAA6B;IAC7B,2BAA2B;IAC3B,6CAA6C;IAC7C,qEAAqE;IACrE,gBAAgB;IAChB,2BAA2B;IAC3B,eAAe;IACf,yCAAyC;IACzC,cAAc;IACd,OAAO;IACP,KAAK;IAEL,MAAM,gBAAgB,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,IAAI,CAC/C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,OAAO,wZAAgC,EAAE,CAAC,KAAK,CAAC,CACzE,0CAAE,KAA0B,CAAC;IAE9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACvC,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAC9C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAkC;YAC7C,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,mIAAmI;YACzI,UAAU;YACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,mIAAmI;YACzI,UAAU;SACX,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,cAAc,CAAC,GAAG,CAAC,KAA6B,EAAE,4CAAxB,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC5C,MAAM,OAAO,GAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAEtD,MAAM,KAAK,GAAG,IAAI,uCAAkB,CAClC,6CAAqB,EACrB,GAAG,EACH,OAAO,EACP,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CACxC,CAAC;QAEF,MAAM,KAAK,CAAC,UAAU,CACpB;YACE,eAAe;YACf,8CAA8C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACxE,uHAAuH;YACvH,EAAE;YACF,qFAAqF,QAAQ,EAAE;YAC/F,mCAAmC,QAAQ,IAAI;YAC/C,8BAA8B;YAC9B,EAAE;YACF,8BAA8B;YAC9B,OAAO;YACP,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;YACxC,KAAK;YACL,iEAAiE;YACjE,aAAa,MAAM,EAAE;SACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAA,CAAC,CACH,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ;SACnB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;;QACf,OAAO,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,mCAAI,EAAE,CAAC;IACpC,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAyB;YACpC,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,wBAAwB;YAChC,MAAM;YACN,KAAK,EAAE,KAAK;YACZ,IAAI;YACJ,UAAU;YACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,MAAM;YACN,KAAK,EAAE,KAAK;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAkC;QAC7C,EAAE,EAAE,IAAA,SAAE,GAAE;QACR,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAA,MAAA,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,0CAAE,IAAI,mCAAI,EAAE;QACzE,UAAU;QACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACvC,CAAC;IACF,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAA,MAAA,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,0CAAE,IAAI,mCAAI,EAAE;QACzE,UAAU;KACX,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA,CAAC;AAlMS,QAAA,kBAAkB,sBAkM3B;AA4BJ,MAAM,gBAAgB;IACpB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,KAAwB;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,SAAS,gBAAgB,CAAiC,KAGzD;IACC,IAAA,qCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,GAA2B,UAAU,CACpD,KAAK,CAAC,KAAK,CACyB,CAAC;IACvC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW;QACX,0BAA0B;QAC1B,OAAO,EAAE;YACP,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;SACyB;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIT,CAAC;AACJ,MAAM,UAAU,GAAG;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAIJ;IACH,MAAM;IACN,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAkD;CACxD,CAAC"}
|
|
@@ -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
|
|
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,
|
|
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";
|