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 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`
@@ -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
- wopeeGenerateAppContext,
16
- wopeeGenerateGeneralUserStories,
17
- wopeeGenerateUserStories,
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
+ };
@@ -104,3 +104,8 @@ export const GenerateUserStories = `
104
104
  generateUserStories(input: $input)
105
105
  }
106
106
  `;
107
+ export const UpdateFile = `
108
+ mutation UpdateFile($input: UpdateFileInput!) {
109
+ updateFile(input: $input)
110
+ }
111
+ `;
@@ -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, GenerationType } from "./types.js";
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 parseGenerationType(type) {
24
+ function parseFileType(type) {
25
25
  switch (type) {
26
- case GenerationType.APP_CONTEXT:
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 GenerationType.GENERAL_USER_STORIES:
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 GenerationType.USER_STORIES:
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 GenerationType.TEST_CASES:
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 fetchFileInput = createFetchFileInput(input);
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(type, input) {
90
- const { query, dataKey, bucket, description } = parseGenerationType(type);
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
- suiteUuid: z.string().min(1, "Suite UUID is required"),
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
- suiteUuid: z.string().min(1, "Suite UUID is required"),
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["WOPEE_FETCH_ANALYSIS_SUITES"] = "wopee_fetch_analysis_suites";
6
- ToolName["WOPEE_FETCH_APP_CONTEXT"] = "wopee_fetch_app_context";
7
- ToolName["WOPEE_FETCH_GENERAL_USER_STORIES"] = "wopee_fetch_general_user_stories";
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 GenerationType;
25
- (function (GenerationType) {
26
- GenerationType["APP_CONTEXT"] = "APP_CONTEXT";
27
- GenerationType["GENERAL_USER_STORIES"] = "GENERAL_USER_STORIES";
28
- GenerationType["USER_STORIES"] = "USER_STORIES";
29
- GenerationType["TEST_CASES"] = "TEST_CASES";
30
- })(GenerationType || (GenerationType = {}));
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.string().min(1, "Test case ID is required"),
4
- userStoryId: z.string().min(1, "User story ID is required"),
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.string().min(1, "Suite UUID is required"),
8
- analysisIdentifier: z.string().min(1, "Analysis identifier is required"),
9
- testCases: z.array(SelectedTestCasesSchema),
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
@@ -4,7 +4,7 @@
4
4
  "bin": {
5
5
  "wopee-mcp": "./build/index.js"
6
6
  },
7
- "version": "1.3.0",
7
+ "version": "1.5.0",
8
8
  "description": "Wopee.io MCP server",
9
9
  "main": "./build/index.js",
10
10
  "scripts": {
@@ -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
- };