wopee-mcp 1.3.0 → 1.5.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/README.md +20 -0
- package/build/tools/index.js +7 -17
- package/build/tools/shared/factories.js +11 -0
- package/build/tools/shared/gql-queries.js +5 -0
- package/build/tools/shared/handlers.js +75 -12
- package/build/tools/shared/schemas.js +37 -3
- package/build/tools/shared/types.js +11 -16
- package/build/tools/wopee_dispatch_agent/schema.js +21 -5
- package/build/tools/wopee_fetch_analysis_suites/index.js +1 -1
- package/build/tools/wopee_fetch_file/index.js +12 -0
- package/build/tools/wopee_generate_file/index.js +12 -0
- package/build/tools/wopee_update_file/index.js +12 -0
- package/package.json +1 -1
- package/build/tools/wopee_fetch_app_context/index.js +0 -15
- package/build/tools/wopee_fetch_general_user_stories/index.js +0 -15
- package/build/tools/wopee_fetch_test_cases/index.js +0 -15
- package/build/tools/wopee_fetch_user_stories/index.js +0 -15
- package/build/tools/wopee_generate_app_context/index.js +0 -12
- package/build/tools/wopee_generate_general_user_stories/index.js +0 -12
- package/build/tools/wopee_generate_test_cases/index.js +0 -12
- package/build/tools/wopee_generate_user_stories/index.js +0 -12
package/README.md
CHANGED
|
@@ -210,6 +210,26 @@ Fetches the test cases JSON file for a suite.
|
|
|
210
210
|
Fetch test cases for suite abc-123-def-456
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
+
### Update Tools
|
|
214
|
+
|
|
215
|
+
These tools are used to update or set certain files(artifacts) for a specific suite. `suiteUuid`, `fileType` and `fileContent` is required.
|
|
216
|
+
|
|
217
|
+
#### `wopee_update_file`
|
|
218
|
+
|
|
219
|
+
Updates/replaces existing file(artifact) for a specific suite
|
|
220
|
+
|
|
221
|
+
- **Parameters:**
|
|
222
|
+
- `suiteUuid` - The UUID of the suite
|
|
223
|
+
- `fileType` - `"APP_CONTEXT" | "GENERAL_USER_STORIES" | "USER_STORIES" | "TEST_CASES"`
|
|
224
|
+
- `fileContent` - Markdown content for `app context` and `general user stories`, structured JSON for `user stories` and `test cases`
|
|
225
|
+
- **Returns:** Boolean based of success status of the tool call
|
|
226
|
+
|
|
227
|
+
**Example Usage:**
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
Update app context file for the most recent suite with this content: <YourMarkdown>
|
|
231
|
+
```
|
|
232
|
+
|
|
213
233
|
### Agent Testing
|
|
214
234
|
|
|
215
235
|
#### `wopee_dispatch_agent`
|
package/build/tools/index.js
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
1
|
+
import { wopeeFetchFile } from "./wopee_fetch_file/index.js";
|
|
2
|
+
import { wopeeUpdateFile } from "./wopee_update_file/index.js";
|
|
3
|
+
import { wopeeGenerateFile } from "./wopee_generate_file/index.js";
|
|
1
4
|
import { wopeeDispatchAgent } from "./wopee_dispatch_agent/index.js";
|
|
2
|
-
import { wopeeFetchTestCases } from "./wopee_fetch_test_cases/index.js";
|
|
3
|
-
import { wopeeFetchAppContext } from "./wopee_fetch_app_context/index.js";
|
|
4
5
|
import { wopeeDispatchAnalysis } from "./wopee_dispatch_analysis/index.js";
|
|
5
|
-
import { wopeeFetchUserStories } from "./wopee_fetch_user_stories/index.js";
|
|
6
|
-
import { wopeeGenerateTestCases } from "./wopee_generate_test_cases/index.js";
|
|
7
|
-
import { wopeeGenerateAppContext } from "./wopee_generate_app_context/index.js";
|
|
8
6
|
import { wopeeFetchAnalysisSuites } from "./wopee_fetch_analysis_suites/index.js";
|
|
9
|
-
import { wopeeGenerateUserStories } from "./wopee_generate_user_stories/index.js";
|
|
10
|
-
import { wopeeFetchGeneralUserStories } from "./wopee_fetch_general_user_stories/index.js";
|
|
11
|
-
import { wopeeGenerateGeneralUserStories } from "./wopee_generate_general_user_stories/index.js";
|
|
12
7
|
export const TOOLS = [
|
|
8
|
+
wopeeFetchAnalysisSuites,
|
|
13
9
|
wopeeDispatchAnalysis,
|
|
14
10
|
wopeeDispatchAgent,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
wopeeGenerateTestCases,
|
|
19
|
-
wopeeFetchAnalysisSuites,
|
|
20
|
-
wopeeFetchAppContext,
|
|
21
|
-
wopeeFetchGeneralUserStories,
|
|
22
|
-
wopeeFetchUserStories,
|
|
23
|
-
wopeeFetchTestCases,
|
|
11
|
+
wopeeFetchFile,
|
|
12
|
+
wopeeUpdateFile,
|
|
13
|
+
wopeeGenerateFile,
|
|
24
14
|
];
|
|
@@ -30,3 +30,14 @@ export const createGenerateAIDataInput = (input) => {
|
|
|
30
30
|
sourceSuiteUuid: null,
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
|
+
export const createUpdateFileInput = (input) => {
|
|
34
|
+
const { WOPEE_PROJECT_UUID } = getConfig();
|
|
35
|
+
if (!WOPEE_PROJECT_UUID)
|
|
36
|
+
throw new Error("WOPEE_PROJECT_UUID is not set");
|
|
37
|
+
return {
|
|
38
|
+
bucket: input.bucket,
|
|
39
|
+
projectUuid: WOPEE_PROJECT_UUID,
|
|
40
|
+
suiteUuid: input.suiteUuid,
|
|
41
|
+
[input.outputType === "markdown" ? "code" : "json"]: input.fileContent,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { FetchFileInputSchema, GenerateAIDataInputSchema, } from "./schemas.js";
|
|
3
|
-
import { FetchFile, GenerateTestCases, GenerateAppContext, GenerateUserStories, GenerateGeneralUserStories, } from "./gql-queries.js";
|
|
4
|
-
import { createFetchFileInput, createGenerateAIDataInput, } from "./factories.js";
|
|
5
|
-
import { Bucket,
|
|
2
|
+
import { FetchFileInputSchema, UpdateFileInputSchema, GenerateAIDataInputSchema, } from "./schemas.js";
|
|
3
|
+
import { FetchFile, UpdateFile, GenerateTestCases, GenerateAppContext, GenerateUserStories, GenerateGeneralUserStories, } from "./gql-queries.js";
|
|
4
|
+
import { createFetchFileInput, createUpdateFileInput, createGenerateAIDataInput, } from "./factories.js";
|
|
5
|
+
import { Bucket, FileType } from "./types.js";
|
|
6
6
|
import { requestClient } from "../../utils/requestClient.js";
|
|
7
7
|
export function parseError(error) {
|
|
8
8
|
console.error(error instanceof z.ZodError ? error.issues : error);
|
|
@@ -21,47 +21,66 @@ export function parseError(error) {
|
|
|
21
21
|
],
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function parseFileType(type) {
|
|
25
25
|
switch (type) {
|
|
26
|
-
case
|
|
26
|
+
case FileType.APP_CONTEXT:
|
|
27
27
|
return {
|
|
28
28
|
query: GenerateAppContext,
|
|
29
29
|
dataKey: "generateAppContext",
|
|
30
30
|
bucket: Bucket.APP_CONTEXT,
|
|
31
|
+
outputType: "markdown",
|
|
31
32
|
description: "application's context markdown file for selected suite",
|
|
32
33
|
};
|
|
33
|
-
case
|
|
34
|
+
case FileType.GENERAL_USER_STORIES:
|
|
34
35
|
return {
|
|
35
36
|
query: GenerateGeneralUserStories,
|
|
36
37
|
dataKey: "generateGeneralUserStories",
|
|
37
38
|
bucket: Bucket.GENERAL_USER_STORIES,
|
|
39
|
+
outputType: "markdown",
|
|
38
40
|
description: "general user stories markdown file for selected suite",
|
|
39
41
|
};
|
|
40
|
-
case
|
|
42
|
+
case FileType.USER_STORIES:
|
|
41
43
|
return {
|
|
42
44
|
query: GenerateUserStories,
|
|
43
45
|
dataKey: "generateUserStories",
|
|
44
46
|
bucket: Bucket.USER_STORIES,
|
|
47
|
+
outputType: "json",
|
|
45
48
|
description: "user stories JSON file for selected suite",
|
|
46
49
|
};
|
|
47
|
-
case
|
|
50
|
+
case FileType.TEST_CASES:
|
|
48
51
|
return {
|
|
49
52
|
query: GenerateTestCases,
|
|
50
53
|
dataKey: "generateTestCases",
|
|
51
54
|
bucket: Bucket.USER_STORIES,
|
|
55
|
+
outputType: "json",
|
|
52
56
|
description: "test cases for selected suite",
|
|
53
57
|
};
|
|
54
58
|
default:
|
|
55
59
|
return {
|
|
56
60
|
query: null,
|
|
57
61
|
dataKey: null,
|
|
62
|
+
bucket: null,
|
|
63
|
+
outputType: null,
|
|
58
64
|
description: null,
|
|
59
65
|
};
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
export async function fetchFile(input) {
|
|
63
69
|
try {
|
|
64
|
-
const
|
|
70
|
+
const { bucket, description } = parseFileType(input.fileType);
|
|
71
|
+
if (!bucket || !description)
|
|
72
|
+
return {
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: "text",
|
|
76
|
+
text: "Failed to parse file type",
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
const fetchFileInput = createFetchFileInput({
|
|
81
|
+
bucket,
|
|
82
|
+
suiteUuid: input.suiteUuid,
|
|
83
|
+
});
|
|
65
84
|
const parsedInput = FetchFileInputSchema.parse(fetchFileInput);
|
|
66
85
|
const result = await requestClient(FetchFile, parsedInput);
|
|
67
86
|
if (!result || !result.fetchFile)
|
|
@@ -86,8 +105,8 @@ export async function fetchFile(input) {
|
|
|
86
105
|
return parseError(error);
|
|
87
106
|
}
|
|
88
107
|
}
|
|
89
|
-
export async function generateAIDataFile(
|
|
90
|
-
const { query, dataKey, bucket, description } =
|
|
108
|
+
export async function generateAIDataFile(input) {
|
|
109
|
+
const { query, dataKey, bucket, description } = parseFileType(input.fileType);
|
|
91
110
|
if (!query || !dataKey || !description || !bucket)
|
|
92
111
|
return {
|
|
93
112
|
content: [
|
|
@@ -114,8 +133,52 @@ export async function generateAIDataFile(type, input) {
|
|
|
114
133
|
};
|
|
115
134
|
return await fetchFile({
|
|
116
135
|
suiteUuid: parsedInput.suiteUuid,
|
|
136
|
+
fileType: input.fileType,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
return parseError(error);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export async function updateFile(input) {
|
|
144
|
+
try {
|
|
145
|
+
const { bucket, outputType } = parseFileType(input.fileType);
|
|
146
|
+
if (!bucket || !outputType)
|
|
147
|
+
return {
|
|
148
|
+
content: [
|
|
149
|
+
{
|
|
150
|
+
type: "text",
|
|
151
|
+
text: "Failed to parse file type",
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
const updateFileInput = createUpdateFileInput({
|
|
117
156
|
bucket,
|
|
157
|
+
outputType,
|
|
158
|
+
suiteUuid: input.suiteUuid,
|
|
159
|
+
fileContent: input.fileContent,
|
|
160
|
+
});
|
|
161
|
+
const parsedInput = UpdateFileInputSchema.parse(updateFileInput);
|
|
162
|
+
const updateFileResult = await requestClient(UpdateFile, {
|
|
163
|
+
input: parsedInput,
|
|
118
164
|
});
|
|
165
|
+
if (!updateFileResult || !updateFileResult.updateFile)
|
|
166
|
+
return {
|
|
167
|
+
content: [
|
|
168
|
+
{
|
|
169
|
+
type: "text",
|
|
170
|
+
text: "Failed to update file",
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
return {
|
|
175
|
+
content: [
|
|
176
|
+
{
|
|
177
|
+
type: "text",
|
|
178
|
+
text: "File updated successfully",
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
};
|
|
119
182
|
}
|
|
120
183
|
catch (error) {
|
|
121
184
|
return parseError(error);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { Bucket } from "./types.js";
|
|
2
|
+
import { Bucket, FileType } from "./types.js";
|
|
3
3
|
var CookiesPreference;
|
|
4
4
|
(function (CookiesPreference) {
|
|
5
5
|
CookiesPreference["ACCEPT_ALL"] = "ACCEPT_ALL";
|
|
@@ -15,7 +15,12 @@ export const SuiteAnalysisConfigSchema = z.object({
|
|
|
15
15
|
additionalVariables: z.string().nullable().default(null),
|
|
16
16
|
});
|
|
17
17
|
export const GenerateAIDataHandlerInputSchema = z.object({
|
|
18
|
-
|
|
18
|
+
fileType: z.nativeEnum(FileType, {
|
|
19
|
+
description: "Chosen type of file(artifact) to generate",
|
|
20
|
+
}),
|
|
21
|
+
suiteUuid: z
|
|
22
|
+
.string({ description: "UUID of the suite to generate file(artifact) for" })
|
|
23
|
+
.min(1, "Suite UUID is required"),
|
|
19
24
|
});
|
|
20
25
|
export const GenerateAIDataInputSchema = z.object({
|
|
21
26
|
projectUuid: z.string().min(1, "Project UUID is required"),
|
|
@@ -27,7 +32,12 @@ export const GenerateAIDataInputSchema = z.object({
|
|
|
27
32
|
continueGeneration: z.boolean().nullish().default(false),
|
|
28
33
|
});
|
|
29
34
|
export const FetchFileHandlerInputSchema = z.object({
|
|
30
|
-
|
|
35
|
+
fileType: z.nativeEnum(FileType, {
|
|
36
|
+
description: "Chosen file(artifact) to fetch",
|
|
37
|
+
}),
|
|
38
|
+
suiteUuid: z
|
|
39
|
+
.string({ description: "UUID of the suite to fetch the file from" })
|
|
40
|
+
.min(1, "Suite UUID is required"),
|
|
31
41
|
});
|
|
32
42
|
export const FetchFileFactoryInputSchema = z.object({
|
|
33
43
|
suiteUuid: z.string().min(1, "Suite UUID is required"),
|
|
@@ -38,3 +48,27 @@ export const FetchFileInputSchema = z.object({
|
|
|
38
48
|
suiteUuid: z.string().min(1, "Suite UUID is required"),
|
|
39
49
|
bucket: z.nativeEnum(Bucket),
|
|
40
50
|
});
|
|
51
|
+
export const UpdateFileHandlerInputSchema = z.object({
|
|
52
|
+
fileType: z.nativeEnum(FileType, {
|
|
53
|
+
description: "Chosen file(artifact) to update",
|
|
54
|
+
}),
|
|
55
|
+
fileContent: z.string({
|
|
56
|
+
description: "Content of the file(artifact) to update",
|
|
57
|
+
}),
|
|
58
|
+
suiteUuid: z
|
|
59
|
+
.string({ description: "UUID of the suite to update the file for" })
|
|
60
|
+
.min(1, "Suite UUID is required"),
|
|
61
|
+
});
|
|
62
|
+
export const UpdateFileFactoryInputSchema = z.object({
|
|
63
|
+
bucket: z.nativeEnum(Bucket),
|
|
64
|
+
suiteUuid: z.string().min(1, "Suite UUID is required"),
|
|
65
|
+
fileContent: z.string(),
|
|
66
|
+
outputType: z.enum(["markdown", "json"]),
|
|
67
|
+
});
|
|
68
|
+
export const UpdateFileInputSchema = z.object({
|
|
69
|
+
projectUuid: z.string().min(1, "Project UUID is required"),
|
|
70
|
+
suiteUuid: z.string().min(1, "Suite UUID is required"),
|
|
71
|
+
bucket: z.nativeEnum(Bucket),
|
|
72
|
+
json: z.string().nullish(),
|
|
73
|
+
code: z.string().nullish(),
|
|
74
|
+
});
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
export var ToolName;
|
|
2
2
|
(function (ToolName) {
|
|
3
|
+
ToolName["WOPEE_FETCH_ANALYSIS_SUITES"] = "wopee_fetch_analysis_suites";
|
|
3
4
|
ToolName["WOPEE_DISPATCH_ANALYSIS"] = "wopee_dispatch_analysis";
|
|
4
5
|
ToolName["WOPEE_DISPATCH_AGENT"] = "wopee_dispatch_agent";
|
|
5
|
-
ToolName["
|
|
6
|
-
ToolName["
|
|
7
|
-
ToolName["
|
|
8
|
-
ToolName["WOPEE_FETCH_USER_STORIES"] = "wopee_fetch_user_stories";
|
|
9
|
-
ToolName["WOPEE_FETCH_TEST_CASES"] = "wopee_fetch_test_cases";
|
|
10
|
-
ToolName["WOPEE_GENERATE_APP_CONTEXT"] = "wopee_generate_app_context";
|
|
11
|
-
ToolName["WOPEE_GENERATE_GENERAL_USER_STORIES"] = "wopee_generate_general_user_stories";
|
|
12
|
-
ToolName["WOPEE_GENERATE_USER_STORIES"] = "wopee_generate_user_stories";
|
|
13
|
-
ToolName["WOPEE_GENERATE_TEST_CASES"] = "wopee_generate_test_cases";
|
|
6
|
+
ToolName["WOPEE_FETCH_FILE"] = "wopee_fetch_file";
|
|
7
|
+
ToolName["WOPEE_UPDATE_FILE"] = "wopee_update_file";
|
|
8
|
+
ToolName["WOPEE_GENERATE_FILE"] = "wopee_generate_file";
|
|
14
9
|
})(ToolName || (ToolName = {}));
|
|
15
10
|
export const Bucket = {
|
|
16
11
|
APP_CONTEXT: "project-suite-app-context",
|
|
@@ -21,13 +16,13 @@ export const Bucket = {
|
|
|
21
16
|
PLAYWRIGHT_CODE: "project-suite-playwright-code",
|
|
22
17
|
UPLOADED_PAGE_DATA: "project-uploaded-page-data",
|
|
23
18
|
};
|
|
24
|
-
export var
|
|
25
|
-
(function (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
})(
|
|
19
|
+
export var FileType;
|
|
20
|
+
(function (FileType) {
|
|
21
|
+
FileType["APP_CONTEXT"] = "APP_CONTEXT";
|
|
22
|
+
FileType["GENERAL_USER_STORIES"] = "GENERAL_USER_STORIES";
|
|
23
|
+
FileType["USER_STORIES"] = "USER_STORIES";
|
|
24
|
+
FileType["TEST_CASES"] = "TEST_CASES";
|
|
25
|
+
})(FileType || (FileType = {}));
|
|
31
26
|
export var SuiteType;
|
|
32
27
|
(function (SuiteType) {
|
|
33
28
|
SuiteType["BOT"] = "BOT";
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
const SelectedTestCasesSchema = z.object({
|
|
3
|
-
testCaseId: z
|
|
4
|
-
|
|
3
|
+
testCaseId: z
|
|
4
|
+
.string({
|
|
5
|
+
description: "ID of the test case belonging to the user story to dispatch the agent for (ex. TC001)",
|
|
6
|
+
})
|
|
7
|
+
.min(1, "Test case ID is required"),
|
|
8
|
+
userStoryId: z
|
|
9
|
+
.string({
|
|
10
|
+
description: "ID of the user story that the test case belongs to (ex. US001)",
|
|
11
|
+
})
|
|
12
|
+
.min(1, "User story ID is required"),
|
|
5
13
|
});
|
|
6
14
|
export const WopeeDispatchAgentInputSchema = z.object({
|
|
7
|
-
suiteUuid: z
|
|
8
|
-
|
|
9
|
-
|
|
15
|
+
suiteUuid: z
|
|
16
|
+
.string({ description: "UUID of the suite to dispatch the agent for" })
|
|
17
|
+
.min(1, "Suite UUID is required"),
|
|
18
|
+
analysisIdentifier: z
|
|
19
|
+
.string({
|
|
20
|
+
description: "Analysis identifier of the suite to dispatch the agent for",
|
|
21
|
+
})
|
|
22
|
+
.min(1, "Analysis identifier is required"),
|
|
23
|
+
testCases: z.array(SelectedTestCasesSchema, {
|
|
24
|
+
description: "Chosen test cases to dispatch the agent for",
|
|
25
|
+
}),
|
|
10
26
|
});
|
|
11
27
|
export const DispatchAgentInputSchema = z.object({
|
|
12
28
|
projectUuid: z.string().min(1, "Project UUID is required"),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { getConfig } from "../../utils/getConfig.js";
|
|
1
2
|
import { requestClient } from "../../utils/requestClient.js";
|
|
2
3
|
import { ToolName } from "../shared/types.js";
|
|
3
4
|
import { FetchAnalysisSuites } from "../shared/gql-queries.js";
|
|
4
|
-
import { getConfig } from "../../utils/getConfig.js";
|
|
5
5
|
export const wopeeFetchAnalysisSuites = {
|
|
6
6
|
name: ToolName.WOPEE_FETCH_ANALYSIS_SUITES,
|
|
7
7
|
config: {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FetchFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
+
import { ToolName } from "../shared/types.js";
|
|
3
|
+
import { fetchFile } from "../shared/handlers.js";
|
|
4
|
+
export const wopeeFetchFile = {
|
|
5
|
+
name: ToolName.WOPEE_FETCH_FILE,
|
|
6
|
+
config: {
|
|
7
|
+
title: "Fetch file(artifact)",
|
|
8
|
+
description: "Fetch suite's file(artifact) for selected project",
|
|
9
|
+
inputSchema: FetchFileHandlerInputSchema.shape,
|
|
10
|
+
},
|
|
11
|
+
handler: async (input) => await fetchFile(input),
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GenerateAIDataHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
+
import { ToolName } from "../shared/types.js";
|
|
3
|
+
import { generateAIDataFile } from "../shared/handlers.js";
|
|
4
|
+
export const wopeeGenerateFile = {
|
|
5
|
+
name: ToolName.WOPEE_GENERATE_FILE,
|
|
6
|
+
config: {
|
|
7
|
+
title: "Generate file(artifact)",
|
|
8
|
+
description: "Generate AI data file for selected suite",
|
|
9
|
+
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
|
+
},
|
|
11
|
+
handler: async (input) => await generateAIDataFile(input),
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { UpdateFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
+
import { ToolName } from "../shared/types.js";
|
|
3
|
+
import { updateFile } from "../shared/handlers.js";
|
|
4
|
+
export const wopeeUpdateFile = {
|
|
5
|
+
name: ToolName.WOPEE_UPDATE_FILE,
|
|
6
|
+
config: {
|
|
7
|
+
title: "Update file",
|
|
8
|
+
description: "Update file(artifact) in the project",
|
|
9
|
+
inputSchema: UpdateFileHandlerInputSchema.shape,
|
|
10
|
+
},
|
|
11
|
+
handler: async (input) => await updateFile(input),
|
|
12
|
+
};
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { fetchFile } from "../shared/handlers.js";
|
|
2
|
-
import { Bucket, ToolName } from "../shared/types.js";
|
|
3
|
-
import { FetchFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
4
|
-
export const wopeeFetchAppContext = {
|
|
5
|
-
name: ToolName.WOPEE_FETCH_APP_CONTEXT,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Fetch app context",
|
|
8
|
-
description: "Fetch suite's application context markdown file for selected project",
|
|
9
|
-
inputSchema: FetchFileHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await fetchFile({
|
|
12
|
-
...input,
|
|
13
|
-
bucket: Bucket.APP_CONTEXT,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FetchFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { fetchFile } from "../shared/handlers.js";
|
|
3
|
-
import { Bucket, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeFetchGeneralUserStories = {
|
|
5
|
-
name: ToolName.WOPEE_FETCH_GENERAL_USER_STORIES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Fetch general user stories",
|
|
8
|
-
description: "Fetch suite's general user stories markdown file for selected project",
|
|
9
|
-
inputSchema: FetchFileHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await fetchFile({
|
|
12
|
-
...input,
|
|
13
|
-
bucket: Bucket.GENERAL_USER_STORIES,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FetchFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { fetchFile } from "../shared/handlers.js";
|
|
3
|
-
import { Bucket, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeFetchTestCases = {
|
|
5
|
-
name: ToolName.WOPEE_FETCH_TEST_CASES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Fetch test cases",
|
|
8
|
-
description: "Fetch suite's test cases JSON file for selected project",
|
|
9
|
-
inputSchema: FetchFileHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await fetchFile({
|
|
12
|
-
...input,
|
|
13
|
-
bucket: Bucket.USER_STORIES,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FetchFileHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { fetchFile } from "../shared/handlers.js";
|
|
3
|
-
import { Bucket, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeFetchUserStories = {
|
|
5
|
-
name: ToolName.WOPEE_FETCH_USER_STORIES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Fetch user stories",
|
|
8
|
-
description: "Fetch suite's user stories JSON file for selected project",
|
|
9
|
-
inputSchema: FetchFileHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await fetchFile({
|
|
12
|
-
...input,
|
|
13
|
-
bucket: Bucket.USER_STORIES,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GenerateAIDataHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { generateAIDataFile } from "../shared/handlers.js";
|
|
3
|
-
import { GenerationType, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeGenerateAppContext = {
|
|
5
|
-
name: ToolName.WOPEE_GENERATE_APP_CONTEXT,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Generate app context",
|
|
8
|
-
description: "Generate application's context markdown file for selected suite",
|
|
9
|
-
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await generateAIDataFile(GenerationType.APP_CONTEXT, input),
|
|
12
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GenerateAIDataHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { generateAIDataFile } from "../shared/handlers.js";
|
|
3
|
-
import { GenerationType, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeGenerateGeneralUserStories = {
|
|
5
|
-
name: ToolName.WOPEE_GENERATE_GENERAL_USER_STORIES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Generate general user stories",
|
|
8
|
-
description: "Generate general user stories markdown file for selected suite",
|
|
9
|
-
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await generateAIDataFile(GenerationType.GENERAL_USER_STORIES, input),
|
|
12
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GenerateAIDataHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { generateAIDataFile } from "../shared/handlers.js";
|
|
3
|
-
import { GenerationType, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeGenerateTestCases = {
|
|
5
|
-
name: ToolName.WOPEE_GENERATE_TEST_CASES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Generate test cases",
|
|
8
|
-
description: "Generate test cases for selected suite",
|
|
9
|
-
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await generateAIDataFile(GenerationType.TEST_CASES, input),
|
|
12
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GenerateAIDataHandlerInputSchema, } from "../shared/schemas.js";
|
|
2
|
-
import { generateAIDataFile } from "../shared/handlers.js";
|
|
3
|
-
import { GenerationType, ToolName } from "../shared/types.js";
|
|
4
|
-
export const wopeeGenerateUserStories = {
|
|
5
|
-
name: ToolName.WOPEE_GENERATE_USER_STORIES,
|
|
6
|
-
config: {
|
|
7
|
-
title: "Generate user stories",
|
|
8
|
-
description: "Generate user stories JSON file for selected suite",
|
|
9
|
-
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
|
-
},
|
|
11
|
-
handler: async (input) => await generateAIDataFile(GenerationType.USER_STORIES, input),
|
|
12
|
-
};
|