@muggleai/mcp-qa-gateway 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +185 -0
  2. package/dist/scripts/phase0-smoke.d.ts +7 -0
  3. package/dist/scripts/phase0-smoke.d.ts.map +1 -0
  4. package/dist/scripts/phase0-smoke.js +1712 -0
  5. package/dist/scripts/phase0-smoke.js.map +1 -0
  6. package/dist/scripts/types/phase0-smoke-types.d.ts +89 -0
  7. package/dist/scripts/types/phase0-smoke-types.d.ts.map +1 -0
  8. package/dist/scripts/types/phase0-smoke-types.js +3 -0
  9. package/dist/scripts/types/phase0-smoke-types.js.map +1 -0
  10. package/dist/src/__tests__/helpers/mock-setup.d.ts +28 -0
  11. package/dist/src/__tests__/helpers/mock-setup.d.ts.map +1 -0
  12. package/dist/src/__tests__/helpers/mock-setup.js +44 -0
  13. package/dist/src/__tests__/helpers/mock-setup.js.map +1 -0
  14. package/dist/src/__tests__/helpers/test-fixtures.d.ts +38 -0
  15. package/dist/src/__tests__/helpers/test-fixtures.d.ts.map +1 -0
  16. package/dist/src/__tests__/helpers/test-fixtures.js +62 -0
  17. package/dist/src/__tests__/helpers/test-fixtures.js.map +1 -0
  18. package/dist/src/__tests__/tools/artifact-tools.test.d.ts +9 -0
  19. package/dist/src/__tests__/tools/artifact-tools.test.d.ts.map +1 -0
  20. package/dist/src/__tests__/tools/artifact-tools.test.js +307 -0
  21. package/dist/src/__tests__/tools/artifact-tools.test.js.map +1 -0
  22. package/dist/src/__tests__/tools/prd-file-tools.test.d.ts +7 -0
  23. package/dist/src/__tests__/tools/prd-file-tools.test.d.ts.map +1 -0
  24. package/dist/src/__tests__/tools/prd-file-tools.test.js +278 -0
  25. package/dist/src/__tests__/tools/prd-file-tools.test.js.map +1 -0
  26. package/dist/src/__tests__/tools/project-tools.test.d.ts +7 -0
  27. package/dist/src/__tests__/tools/project-tools.test.d.ts.map +1 -0
  28. package/dist/src/__tests__/tools/project-tools.test.js +281 -0
  29. package/dist/src/__tests__/tools/project-tools.test.js.map +1 -0
  30. package/dist/src/__tests__/tools/recommendation-tools.test.d.ts +6 -0
  31. package/dist/src/__tests__/tools/recommendation-tools.test.d.ts.map +1 -0
  32. package/dist/src/__tests__/tools/recommendation-tools.test.js +193 -0
  33. package/dist/src/__tests__/tools/recommendation-tools.test.js.map +1 -0
  34. package/dist/src/__tests__/tools/report-tools.test.d.ts +7 -0
  35. package/dist/src/__tests__/tools/report-tools.test.d.ts.map +1 -0
  36. package/dist/src/__tests__/tools/report-tools.test.js +226 -0
  37. package/dist/src/__tests__/tools/report-tools.test.js.map +1 -0
  38. package/dist/src/__tests__/tools/secret-tools.test.d.ts +6 -0
  39. package/dist/src/__tests__/tools/secret-tools.test.d.ts.map +1 -0
  40. package/dist/src/__tests__/tools/secret-tools.test.js +243 -0
  41. package/dist/src/__tests__/tools/secret-tools.test.js.map +1 -0
  42. package/dist/src/__tests__/tools/test-case-prompt-tools.test.d.ts +6 -0
  43. package/dist/src/__tests__/tools/test-case-prompt-tools.test.d.ts.map +1 -0
  44. package/dist/src/__tests__/tools/test-case-prompt-tools.test.js +291 -0
  45. package/dist/src/__tests__/tools/test-case-prompt-tools.test.js.map +1 -0
  46. package/dist/src/__tests__/tools/tool-registry.test.d.ts +7 -0
  47. package/dist/src/__tests__/tools/tool-registry.test.d.ts.map +1 -0
  48. package/dist/src/__tests__/tools/tool-registry.test.js +205 -0
  49. package/dist/src/__tests__/tools/tool-registry.test.js.map +1 -0
  50. package/dist/src/__tests__/tools/use-case-tools.test.d.ts +7 -0
  51. package/dist/src/__tests__/tools/use-case-tools.test.d.ts.map +1 -0
  52. package/dist/src/__tests__/tools/use-case-tools.test.js +177 -0
  53. package/dist/src/__tests__/tools/use-case-tools.test.js.map +1 -0
  54. package/dist/src/__tests__/tools/workflow-tools.test.d.ts +15 -0
  55. package/dist/src/__tests__/tools/workflow-tools.test.d.ts.map +1 -0
  56. package/dist/src/__tests__/tools/workflow-tools.test.js +627 -0
  57. package/dist/src/__tests__/tools/workflow-tools.test.js.map +1 -0
  58. package/dist/src/config/index.d.ts +18 -0
  59. package/dist/src/config/index.d.ts.map +1 -0
  60. package/dist/src/config/index.js +76 -0
  61. package/dist/src/config/index.js.map +1 -0
  62. package/dist/src/index.d.ts +21 -0
  63. package/dist/src/index.d.ts.map +1 -0
  64. package/dist/src/index.js +88 -0
  65. package/dist/src/index.js.map +1 -0
  66. package/dist/src/interfaces/caller-credentials.d.ts +10 -0
  67. package/dist/src/interfaces/caller-credentials.d.ts.map +1 -0
  68. package/dist/src/interfaces/caller-credentials.js +3 -0
  69. package/dist/src/interfaces/caller-credentials.js.map +1 -0
  70. package/dist/src/interfaces/gateway-config.d.ts +28 -0
  71. package/dist/src/interfaces/gateway-config.d.ts.map +1 -0
  72. package/dist/src/interfaces/gateway-config.js +3 -0
  73. package/dist/src/interfaces/gateway-config.js.map +1 -0
  74. package/dist/src/interfaces/index.d.ts +13 -0
  75. package/dist/src/interfaces/index.d.ts.map +1 -0
  76. package/dist/src/interfaces/index.js +7 -0
  77. package/dist/src/interfaces/index.js.map +1 -0
  78. package/dist/src/interfaces/mcp-tool-call-protocol.d.ts +61 -0
  79. package/dist/src/interfaces/mcp-tool-call-protocol.d.ts.map +1 -0
  80. package/dist/src/interfaces/mcp-tool-call-protocol.js +7 -0
  81. package/dist/src/interfaces/mcp-tool-call-protocol.js.map +1 -0
  82. package/dist/src/interfaces/pagination.d.ts +24 -0
  83. package/dist/src/interfaces/pagination.d.ts.map +1 -0
  84. package/dist/src/interfaces/pagination.js +6 -0
  85. package/dist/src/interfaces/pagination.js.map +1 -0
  86. package/dist/src/interfaces/tool-definition.d.ts +22 -0
  87. package/dist/src/interfaces/tool-definition.d.ts.map +1 -0
  88. package/dist/src/interfaces/tool-definition.js +6 -0
  89. package/dist/src/interfaces/tool-definition.js.map +1 -0
  90. package/dist/src/interfaces/tool-mapping.d.ts +20 -0
  91. package/dist/src/interfaces/tool-mapping.d.ts.map +1 -0
  92. package/dist/src/interfaces/tool-mapping.js +6 -0
  93. package/dist/src/interfaces/tool-mapping.js.map +1 -0
  94. package/dist/src/interfaces/upstream-call.d.ts +27 -0
  95. package/dist/src/interfaces/upstream-call.d.ts.map +1 -0
  96. package/dist/src/interfaces/upstream-call.js +3 -0
  97. package/dist/src/interfaces/upstream-call.js.map +1 -0
  98. package/dist/src/interfaces/upstream-response.d.ts +12 -0
  99. package/dist/src/interfaces/upstream-response.d.ts.map +1 -0
  100. package/dist/src/interfaces/upstream-response.js +3 -0
  101. package/dist/src/interfaces/upstream-response.js.map +1 -0
  102. package/dist/src/server/http-server.d.ts +13 -0
  103. package/dist/src/server/http-server.d.ts.map +1 -0
  104. package/dist/src/server/http-server.js +219 -0
  105. package/dist/src/server/http-server.js.map +1 -0
  106. package/dist/src/server/mcp-server.d.ts +11 -0
  107. package/dist/src/server/mcp-server.d.ts.map +1 -0
  108. package/dist/src/server/mcp-server.js +363 -0
  109. package/dist/src/server/mcp-server.js.map +1 -0
  110. package/dist/src/server/session-credentials.d.ts +8 -0
  111. package/dist/src/server/session-credentials.d.ts.map +1 -0
  112. package/dist/src/server/session-credentials.js +24 -0
  113. package/dist/src/server/session-credentials.js.map +1 -0
  114. package/dist/src/tools/constants.d.ts +6 -0
  115. package/dist/src/tools/constants.d.ts.map +1 -0
  116. package/dist/src/tools/constants.js +9 -0
  117. package/dist/src/tools/constants.js.map +1 -0
  118. package/dist/src/tools/index.d.ts +7 -0
  119. package/dist/src/tools/index.d.ts.map +1 -0
  120. package/dist/src/tools/index.js +23 -0
  121. package/dist/src/tools/index.js.map +1 -0
  122. package/dist/src/tools/schemas.d.ts +906 -0
  123. package/dist/src/tools/schemas.d.ts.map +1 -0
  124. package/dist/src/tools/schemas.js +386 -0
  125. package/dist/src/tools/schemas.js.map +1 -0
  126. package/dist/src/tools/tool-registry.d.ts +26 -0
  127. package/dist/src/tools/tool-registry.d.ts.map +1 -0
  128. package/dist/src/tools/tool-registry.js +1142 -0
  129. package/dist/src/tools/tool-registry.js.map +1 -0
  130. package/dist/src/types/index.d.ts +35 -0
  131. package/dist/src/types/index.d.ts.map +1 -0
  132. package/dist/src/types/index.js +55 -0
  133. package/dist/src/types/index.js.map +1 -0
  134. package/dist/src/upstream/prompt-service-client.d.ts +62 -0
  135. package/dist/src/upstream/prompt-service-client.d.ts.map +1 -0
  136. package/dist/src/upstream/prompt-service-client.js +329 -0
  137. package/dist/src/upstream/prompt-service-client.js.map +1 -0
  138. package/dist/src/utils/logger.d.ts +17 -0
  139. package/dist/src/utils/logger.d.ts.map +1 -0
  140. package/dist/src/utils/logger.js +64 -0
  141. package/dist/src/utils/logger.js.map +1 -0
  142. package/dist/vitest.config.d.ts +3 -0
  143. package/dist/vitest.config.d.ts.map +1 -0
  144. package/dist/vitest.config.js +21 -0
  145. package/dist/vitest.config.js.map +1 -0
  146. package/package.json +66 -0
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for Test Case Prompt MCP tools.
4
+ * Covers: qa_test_case_generate_from_prompt, qa_test_case_create
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const vitest_1 = require("vitest");
8
+ const zod_1 = require("zod");
9
+ const schemas_js_1 = require("../../tools/schemas.js");
10
+ const tool_registry_js_1 = require("../../tools/tool-registry.js");
11
+ const test_fixtures_js_1 = require("../helpers/test-fixtures.js");
12
+ // =============================================================================
13
+ // Helper
14
+ // =============================================================================
15
+ /**
16
+ * Find a tool by name from the registry.
17
+ * @param name - Tool name to find.
18
+ * @returns The tool definition.
19
+ */
20
+ function findTool(name) {
21
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === name);
22
+ if (!tool) {
23
+ throw new Error(`Tool '${name}' not found in registry`);
24
+ }
25
+ return tool;
26
+ }
27
+ // =============================================================================
28
+ // qa_test_case_generate_from_prompt
29
+ // =============================================================================
30
+ (0, vitest_1.describe)("qa_test_case_generate_from_prompt", () => {
31
+ const TOOL_NAME = "qa_test_case_generate_from_prompt";
32
+ (0, vitest_1.describe)("schema validation", () => {
33
+ (0, vitest_1.it)("should accept valid input with projectId, useCaseId, and instruction", () => {
34
+ const input = {
35
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
36
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
37
+ instruction: "Test user login with valid and invalid credentials",
38
+ };
39
+ const result = schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input);
40
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
41
+ (0, vitest_1.expect)(result.useCaseId).toBe(test_fixtures_js_1.TEST_USE_CASE_ID);
42
+ (0, vitest_1.expect)(result.instruction).toBe("Test user login with valid and invalid credentials");
43
+ });
44
+ (0, vitest_1.it)("should reject input with empty projectId", () => {
45
+ const input = {
46
+ projectId: "",
47
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
48
+ instruction: "Test something",
49
+ };
50
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input)).toThrow(zod_1.ZodError);
51
+ });
52
+ (0, vitest_1.it)("should reject input with empty useCaseId", () => {
53
+ const input = {
54
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
55
+ useCaseId: "",
56
+ instruction: "Test something",
57
+ };
58
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input)).toThrow(zod_1.ZodError);
59
+ });
60
+ (0, vitest_1.it)("should reject input with empty instruction", () => {
61
+ const input = {
62
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
63
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
64
+ instruction: "",
65
+ };
66
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input)).toThrow(zod_1.ZodError);
67
+ });
68
+ (0, vitest_1.it)("should reject input with missing instruction", () => {
69
+ const input = {
70
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
71
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
72
+ };
73
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input)).toThrow(zod_1.ZodError);
74
+ });
75
+ (0, vitest_1.it)("should reject input with missing useCaseId", () => {
76
+ const input = {
77
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
78
+ instruction: "Test something",
79
+ };
80
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGenerateFromPromptInputSchema.parse(input)).toThrow(zod_1.ZodError);
81
+ });
82
+ });
83
+ (0, vitest_1.describe)("mapToUpstream", () => {
84
+ (0, vitest_1.it)("should produce correct POST call with instruction in body", () => {
85
+ const tool = findTool(TOOL_NAME);
86
+ const input = {
87
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
88
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
89
+ instruction: "Test user login with valid and invalid credentials",
90
+ };
91
+ const result = tool.mapToUpstream(input);
92
+ (0, vitest_1.expect)(result.method).toBe("POST");
93
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/use-cases/${test_fixtures_js_1.TEST_USE_CASE_ID}/test-cases/prompt/preview`);
94
+ (0, vitest_1.expect)(result.body).toEqual({
95
+ instruction: "Test user login with valid and invalid credentials",
96
+ });
97
+ });
98
+ (0, vitest_1.it)("should handle long instruction text", () => {
99
+ const tool = findTool(TOOL_NAME);
100
+ const longInstruction = "Test the complete checkout flow including adding items to cart, " +
101
+ "applying discount codes with percentage and fixed amount discounts, " +
102
+ "selecting shipping options, entering payment details with credit card, " +
103
+ "and completing the purchase with order confirmation";
104
+ const input = {
105
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
106
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
107
+ instruction: longInstruction,
108
+ };
109
+ const result = tool.mapToUpstream(input);
110
+ (0, vitest_1.expect)(result.body).toEqual({
111
+ instruction: longInstruction,
112
+ });
113
+ });
114
+ });
115
+ (0, vitest_1.describe)("tool registry", () => {
116
+ (0, vitest_1.it)("should be registered in allTools", () => {
117
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === TOOL_NAME);
118
+ (0, vitest_1.expect)(tool).toBeDefined();
119
+ (0, vitest_1.expect)(tool?.description).toContain("Generate");
120
+ (0, vitest_1.expect)(tool?.description).toContain("test cases");
121
+ (0, vitest_1.expect)(tool?.description).toContain("natural language prompt");
122
+ });
123
+ });
124
+ });
125
+ // =============================================================================
126
+ // qa_test_case_create
127
+ // =============================================================================
128
+ (0, vitest_1.describe)("qa_test_case_create", () => {
129
+ const TOOL_NAME = "qa_test_case_create";
130
+ (0, vitest_1.describe)("schema validation", () => {
131
+ (0, vitest_1.it)("should accept valid input with all required fields", () => {
132
+ const input = {
133
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
134
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
135
+ title: "User login with valid credentials",
136
+ description: "Verify that a user can log in with valid email and password",
137
+ goal: "Successfully authenticate and access the dashboard",
138
+ expectedResult: "User is redirected to dashboard with session established",
139
+ url: "https://example.com/login",
140
+ };
141
+ const result = schemas_js_1.TestCaseCreateInputSchema.parse(input);
142
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
143
+ (0, vitest_1.expect)(result.useCaseId).toBe(test_fixtures_js_1.TEST_USE_CASE_ID);
144
+ (0, vitest_1.expect)(result.title).toBe("User login with valid credentials");
145
+ });
146
+ (0, vitest_1.it)("should accept valid input with all optional fields", () => {
147
+ const input = {
148
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
149
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
150
+ title: "User login with valid credentials",
151
+ description: "Verify that a user can log in with valid email and password",
152
+ goal: "Successfully authenticate and access the dashboard",
153
+ precondition: "User has a registered account",
154
+ expectedResult: "User is redirected to dashboard with session established",
155
+ url: "https://example.com/login",
156
+ status: "DRAFT",
157
+ priority: "HIGH",
158
+ tags: ["login", "authentication", "smoke"],
159
+ category: "Functional",
160
+ automated: true,
161
+ };
162
+ const result = schemas_js_1.TestCaseCreateInputSchema.parse(input);
163
+ (0, vitest_1.expect)(result.precondition).toBe("User has a registered account");
164
+ (0, vitest_1.expect)(result.status).toBe("DRAFT");
165
+ (0, vitest_1.expect)(result.priority).toBe("HIGH");
166
+ (0, vitest_1.expect)(result.tags).toEqual(["login", "authentication", "smoke"]);
167
+ (0, vitest_1.expect)(result.category).toBe("Functional");
168
+ (0, vitest_1.expect)(result.automated).toBe(true);
169
+ });
170
+ (0, vitest_1.it)("should reject input with missing title", () => {
171
+ const input = {
172
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
173
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
174
+ description: "Some description",
175
+ goal: "Some goal",
176
+ expectedResult: "Some result",
177
+ url: "https://example.com",
178
+ };
179
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseCreateInputSchema.parse(input)).toThrow(zod_1.ZodError);
180
+ });
181
+ (0, vitest_1.it)("should reject input with invalid URL", () => {
182
+ const input = {
183
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
184
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
185
+ title: "Test case",
186
+ description: "Some description",
187
+ goal: "Some goal",
188
+ expectedResult: "Some result",
189
+ url: "not-a-valid-url",
190
+ };
191
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseCreateInputSchema.parse(input)).toThrow(zod_1.ZodError);
192
+ });
193
+ (0, vitest_1.it)("should reject input with invalid status", () => {
194
+ const input = {
195
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
196
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
197
+ title: "Test case",
198
+ description: "Some description",
199
+ goal: "Some goal",
200
+ expectedResult: "Some result",
201
+ url: "https://example.com",
202
+ status: "INVALID_STATUS",
203
+ };
204
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseCreateInputSchema.parse(input)).toThrow(zod_1.ZodError);
205
+ });
206
+ (0, vitest_1.it)("should reject input with invalid priority", () => {
207
+ const input = {
208
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
209
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
210
+ title: "Test case",
211
+ description: "Some description",
212
+ goal: "Some goal",
213
+ expectedResult: "Some result",
214
+ url: "https://example.com",
215
+ priority: "CRITICAL",
216
+ };
217
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseCreateInputSchema.parse(input)).toThrow(zod_1.ZodError);
218
+ });
219
+ });
220
+ (0, vitest_1.describe)("mapToUpstream", () => {
221
+ (0, vitest_1.it)("should produce correct POST call with all fields in body", () => {
222
+ const tool = findTool(TOOL_NAME);
223
+ const input = {
224
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
225
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
226
+ title: "User login with valid credentials",
227
+ description: "Verify that a user can log in",
228
+ goal: "Successfully authenticate",
229
+ precondition: "User has an account",
230
+ expectedResult: "User sees dashboard",
231
+ url: "https://example.com/login",
232
+ status: "ACTIVE",
233
+ priority: "HIGH",
234
+ tags: ["login", "smoke"],
235
+ category: "Smoke",
236
+ automated: false,
237
+ };
238
+ const result = tool.mapToUpstream(input);
239
+ (0, vitest_1.expect)(result.method).toBe("POST");
240
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-cases`);
241
+ (0, vitest_1.expect)(result.body).toEqual({
242
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
243
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
244
+ title: "User login with valid credentials",
245
+ description: "Verify that a user can log in",
246
+ goal: "Successfully authenticate",
247
+ precondition: "User has an account",
248
+ expectedResult: "User sees dashboard",
249
+ url: "https://example.com/login",
250
+ status: "ACTIVE",
251
+ priority: "HIGH",
252
+ tags: ["login", "smoke"],
253
+ category: "Smoke",
254
+ automated: false,
255
+ });
256
+ });
257
+ (0, vitest_1.it)("should apply default values for optional fields", () => {
258
+ const tool = findTool(TOOL_NAME);
259
+ const input = {
260
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
261
+ useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID,
262
+ title: "User login test",
263
+ description: "Verify login",
264
+ goal: "Authenticate",
265
+ expectedResult: "Dashboard shown",
266
+ url: "https://example.com/login",
267
+ };
268
+ const result = tool.mapToUpstream(input);
269
+ (0, vitest_1.expect)(result.body).toMatchObject({
270
+ status: "DRAFT",
271
+ priority: "MEDIUM",
272
+ tags: [],
273
+ category: "Functional",
274
+ automated: true,
275
+ });
276
+ });
277
+ });
278
+ (0, vitest_1.describe)("tool registry", () => {
279
+ (0, vitest_1.it)("should be registered in allTools", () => {
280
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === TOOL_NAME);
281
+ (0, vitest_1.expect)(tool).toBeDefined();
282
+ (0, vitest_1.expect)(tool?.description).toContain("Create");
283
+ (0, vitest_1.expect)(tool?.description).toContain("test case");
284
+ });
285
+ (0, vitest_1.it)("should mention qa_test_case_generate_from_prompt in description", () => {
286
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === TOOL_NAME);
287
+ (0, vitest_1.expect)(tool?.description).toContain("qa_test_case_generate_from_prompt");
288
+ });
289
+ });
290
+ });
291
+ //# sourceMappingURL=test-case-prompt-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-case-prompt-tools.test.js","sourceRoot":"","sources":["../../../../src/__tests__/tools/test-case-prompt-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for the tool registry and executeTool function.
3
+ * Verifies tool registration, lookup, and the execution pipeline
4
+ * (validate input -> mapToUpstream -> upstream call -> mapFromUpstream).
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=tool-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/tools/tool-registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for the tool registry and executeTool function.
4
+ * Verifies tool registration, lookup, and the execution pipeline
5
+ * (validate input -> mapToUpstream -> upstream call -> mapFromUpstream).
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const vitest_1 = require("vitest");
9
+ const tool_registry_js_1 = require("../../tools/tool-registry.js");
10
+ const index_js_1 = require("../../types/index.js");
11
+ const test_fixtures_js_1 = require("../helpers/test-fixtures.js");
12
+ // =============================================================================
13
+ // Mock upstream dependencies
14
+ // =============================================================================
15
+ const mockExecute = vitest_1.vi.fn();
16
+ vitest_1.vi.mock("../../upstream/prompt-service-client.js", () => ({
17
+ getPromptServiceClient: () => ({
18
+ execute: mockExecute,
19
+ }),
20
+ }));
21
+ vitest_1.vi.mock("../../config/index.js", () => ({
22
+ getConfig: () => ({
23
+ port: 3002,
24
+ promptServiceBaseUrl: "http://localhost:3001",
25
+ mcpPublicBaseUrl: "http://localhost:3002",
26
+ allowedUpstreamPrefix: "/v1/protected/muggle-test/",
27
+ rateLimitEnabled: false,
28
+ rateLimitWindowSeconds: 60,
29
+ rateLimitMaxRequests: 60,
30
+ requestTimeoutMs: 30000,
31
+ workflowTimeoutMs: 120000,
32
+ logLevel: "error",
33
+ nodeEnv: "test",
34
+ }),
35
+ }));
36
+ // =============================================================================
37
+ // Tool Registry Tests
38
+ // =============================================================================
39
+ (0, vitest_1.describe)("Tool Registry", () => {
40
+ (0, vitest_1.describe)("allTools", () => {
41
+ (0, vitest_1.it)("should contain all expected tool groups", () => {
42
+ const toolNames = tool_registry_js_1.allTools.map((t) => t.name);
43
+ // Project tools
44
+ (0, vitest_1.expect)(toolNames).toContain("qa_project_create");
45
+ (0, vitest_1.expect)(toolNames).toContain("qa_project_get");
46
+ (0, vitest_1.expect)(toolNames).toContain("qa_project_update");
47
+ (0, vitest_1.expect)(toolNames).toContain("qa_project_list");
48
+ (0, vitest_1.expect)(toolNames).toContain("qa_project_delete");
49
+ // PRD file tools
50
+ (0, vitest_1.expect)(toolNames).toContain("qa_prd_file_upload");
51
+ (0, vitest_1.expect)(toolNames).toContain("qa_prd_file_list_by_project");
52
+ (0, vitest_1.expect)(toolNames).toContain("qa_prd_file_delete");
53
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_prd_file_process");
54
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_get_prd_file_process_latest_run");
55
+ // Secret tools
56
+ (0, vitest_1.expect)(toolNames).toContain("qa_secret_list");
57
+ (0, vitest_1.expect)(toolNames).toContain("qa_secret_create");
58
+ (0, vitest_1.expect)(toolNames).toContain("qa_secret_get");
59
+ (0, vitest_1.expect)(toolNames).toContain("qa_secret_update");
60
+ (0, vitest_1.expect)(toolNames).toContain("qa_secret_delete");
61
+ // Use case tools
62
+ (0, vitest_1.expect)(toolNames).toContain("qa_use_case_discovery_memory_get");
63
+ (0, vitest_1.expect)(toolNames).toContain("qa_use_case_candidates_approve");
64
+ (0, vitest_1.expect)(toolNames).toContain("qa_use_case_list");
65
+ (0, vitest_1.expect)(toolNames).toContain("qa_use_case_get");
66
+ // Workflow tools
67
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_website_scan");
68
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_test_case_detection");
69
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_test_script_generation");
70
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_test_script_replay");
71
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_start_test_script_replay_bulk");
72
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_cancel_run");
73
+ (0, vitest_1.expect)(toolNames).toContain("qa_workflow_cancel_runtime");
74
+ // Artifact tools
75
+ (0, vitest_1.expect)(toolNames).toContain("qa_test_case_list");
76
+ (0, vitest_1.expect)(toolNames).toContain("qa_test_case_get");
77
+ (0, vitest_1.expect)(toolNames).toContain("qa_test_script_list");
78
+ (0, vitest_1.expect)(toolNames).toContain("qa_test_script_get");
79
+ // Report tools
80
+ (0, vitest_1.expect)(toolNames).toContain("qa_report_stats_summary_get");
81
+ (0, vitest_1.expect)(toolNames).toContain("qa_report_cost_query");
82
+ (0, vitest_1.expect)(toolNames).toContain("qa_report_preferences_upsert");
83
+ (0, vitest_1.expect)(toolNames).toContain("qa_report_final_generate");
84
+ // Recommendation tools
85
+ (0, vitest_1.expect)(toolNames).toContain("qa_recommend_schedule");
86
+ (0, vitest_1.expect)(toolNames).toContain("qa_recommend_cicd_setup");
87
+ });
88
+ (0, vitest_1.it)("should have unique tool names", () => {
89
+ const toolNames = tool_registry_js_1.allTools.map((t) => t.name);
90
+ const uniqueNames = new Set(toolNames);
91
+ (0, vitest_1.expect)(uniqueNames.size).toBe(toolNames.length);
92
+ });
93
+ (0, vitest_1.it)("should have non-empty descriptions for all tools", () => {
94
+ for (const tool of tool_registry_js_1.allTools) {
95
+ (0, vitest_1.expect)(tool.description.length).toBeGreaterThan(0);
96
+ }
97
+ });
98
+ (0, vitest_1.it)("should have inputSchema defined for all tools", () => {
99
+ for (const tool of tool_registry_js_1.allTools) {
100
+ (0, vitest_1.expect)(tool.inputSchema).toBeDefined();
101
+ }
102
+ });
103
+ (0, vitest_1.it)("should have mapToUpstream function for all tools", () => {
104
+ for (const tool of tool_registry_js_1.allTools) {
105
+ (0, vitest_1.expect)(typeof tool.mapToUpstream).toBe("function");
106
+ }
107
+ });
108
+ });
109
+ (0, vitest_1.describe)("getToolByName", () => {
110
+ (0, vitest_1.it)("should return the tool when found", () => {
111
+ const tool = (0, tool_registry_js_1.getToolByName)("qa_project_create");
112
+ (0, vitest_1.expect)(tool).toBeDefined();
113
+ (0, vitest_1.expect)(tool.name).toBe("qa_project_create");
114
+ });
115
+ (0, vitest_1.it)("should return undefined for unknown tool name", () => {
116
+ const tool = (0, tool_registry_js_1.getToolByName)("nonexistent_tool");
117
+ (0, vitest_1.expect)(tool).toBeUndefined();
118
+ });
119
+ });
120
+ });
121
+ // =============================================================================
122
+ // executeTool Tests
123
+ // =============================================================================
124
+ (0, vitest_1.describe)("executeTool", () => {
125
+ (0, vitest_1.beforeEach)(() => {
126
+ vitest_1.vi.clearAllMocks();
127
+ });
128
+ (0, vitest_1.it)("should throw for unknown tool name", async () => {
129
+ await (0, vitest_1.expect)((0, tool_registry_js_1.executeTool)("nonexistent_tool", {}, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID)).rejects.toThrow("Unknown tool: nonexistent_tool");
130
+ });
131
+ (0, vitest_1.it)("should throw ZodError for invalid input", async () => {
132
+ await (0, vitest_1.expect)((0, tool_registry_js_1.executeTool)("qa_project_create", { projectName: "" }, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID)).rejects.toThrow();
133
+ });
134
+ (0, vitest_1.it)("should call upstream client with correct parameters for a GET tool", async () => {
135
+ const mockResponse = {
136
+ statusCode: 200,
137
+ data: { id: test_fixtures_js_1.TEST_PROJECT_ID, name: "Test Project" },
138
+ headers: { "content-type": "application/json" },
139
+ };
140
+ mockExecute.mockResolvedValue(mockResponse);
141
+ const result = await (0, tool_registry_js_1.executeTool)("qa_project_get", { projectId: test_fixtures_js_1.TEST_PROJECT_ID }, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID);
142
+ (0, vitest_1.expect)(mockExecute).toHaveBeenCalledOnce();
143
+ const callArgs = mockExecute.mock.calls[0];
144
+ const upstreamCall = callArgs[0];
145
+ (0, vitest_1.expect)(upstreamCall.method).toBe("GET");
146
+ (0, vitest_1.expect)(upstreamCall.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}`);
147
+ const credentials = callArgs[1];
148
+ (0, vitest_1.expect)(credentials.bearerToken).toBe(test_fixtures_js_1.VALID_BEARER_CREDENTIALS.bearerToken);
149
+ const correlationId = callArgs[2];
150
+ (0, vitest_1.expect)(correlationId).toBe(test_fixtures_js_1.TEST_CORRELATION_ID);
151
+ // Default mapper returns response.data
152
+ (0, vitest_1.expect)(result).toEqual({ id: test_fixtures_js_1.TEST_PROJECT_ID, name: "Test Project" });
153
+ });
154
+ (0, vitest_1.it)("should call upstream client with correct parameters for a POST tool", async () => {
155
+ const mockResponse = {
156
+ statusCode: 201,
157
+ data: { id: "new-proj-id", name: "New Project" },
158
+ headers: {},
159
+ };
160
+ mockExecute.mockResolvedValue(mockResponse);
161
+ const result = await (0, tool_registry_js_1.executeTool)("qa_project_create", {
162
+ projectName: "New Project",
163
+ description: "A new test project",
164
+ url: "https://example.com",
165
+ }, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID);
166
+ (0, vitest_1.expect)(mockExecute).toHaveBeenCalledOnce();
167
+ const upstreamCall = mockExecute.mock.calls[0][0];
168
+ (0, vitest_1.expect)(upstreamCall.method).toBe("POST");
169
+ (0, vitest_1.expect)(upstreamCall.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects`);
170
+ (0, vitest_1.expect)(upstreamCall.body).toEqual({
171
+ name: "New Project",
172
+ description: "A new test project",
173
+ url: "https://example.com",
174
+ });
175
+ (0, vitest_1.expect)(result).toEqual({ id: "new-proj-id", name: "New Project" });
176
+ });
177
+ (0, vitest_1.it)("should propagate GatewayError from upstream client", async () => {
178
+ mockExecute.mockRejectedValue(new index_js_1.GatewayError({
179
+ code: "UNAUTHORIZED",
180
+ message: "Missing authentication",
181
+ }));
182
+ await (0, vitest_1.expect)((0, tool_registry_js_1.executeTool)("qa_project_get", { projectId: test_fixtures_js_1.TEST_PROJECT_ID }, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID)).rejects.toThrow(index_js_1.GatewayError);
183
+ });
184
+ (0, vitest_1.it)("should return static response for recommendation-only tools", async () => {
185
+ const result = await (0, tool_registry_js_1.executeTool)("qa_recommend_schedule", {}, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID);
186
+ const typedResult = result;
187
+ (0, vitest_1.expect)(typedResult.recommendations).toBeDefined();
188
+ (0, vitest_1.expect)(typedResult.recommendations.length).toBeGreaterThan(0);
189
+ // Should NOT have called upstream
190
+ (0, vitest_1.expect)(mockExecute).not.toHaveBeenCalled();
191
+ });
192
+ (0, vitest_1.it)("should return CI/CD recommendations for recommendation tool with input", async () => {
193
+ const result = await (0, tool_registry_js_1.executeTool)("qa_recommend_cicd_setup", {
194
+ repositoryProvider: "github",
195
+ cadence: "onPullRequest",
196
+ }, test_fixtures_js_1.VALID_BEARER_CREDENTIALS, test_fixtures_js_1.TEST_CORRELATION_ID);
197
+ const typedResult = result;
198
+ (0, vitest_1.expect)(typedResult.recommendations).toBeDefined();
199
+ const githubRec = typedResult.recommendations.find((r) => r.title.includes("GitHub"));
200
+ (0, vitest_1.expect)(githubRec).toBeDefined();
201
+ // Should NOT have called upstream
202
+ (0, vitest_1.expect)(mockExecute).not.toHaveBeenCalled();
203
+ });
204
+ });
205
+ //# sourceMappingURL=tool-registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.test.js","sourceRoot":"","sources":["../../../../src/__tests__/tools/tool-registry.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,mCAA8D;AAE9D,mEAAoF;AAEpF,mDAAoD;AAEpD,kEAKqC;AAErC,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF,MAAM,WAAW,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;AAE5B,WAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,WAAW;KACvB,CAAC;CACL,CAAC,CAAC,CAAC;AAEJ,WAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,IAAI;QACV,oBAAoB,EAAE,uBAAuB;QAC7C,gBAAgB,EAAE,uBAAuB;QACzC,qBAAqB,EAAE,4BAA4B;QACnD,gBAAgB,EAAE,KAAK;QACvB,sBAAsB,EAAE,EAAE;QAC1B,oBAAoB,EAAE,EAAE;QACxB,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,MAAM;KAClB,CAAC;CACL,CAAC,CAAC,CAAC;AAEJ,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAA,iBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;QACtB,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,SAAS,GAAG,2BAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE9C,gBAAgB;YAChB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAEjD,iBAAiB;YACjB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAClD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3D,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAClD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;YAClE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;YAE3E,eAAe;YACf,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAEhD,iBAAiB;YACjB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAChE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAC9D,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAE/C,iBAAiB;YACjB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAC9D,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;YACrE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;YACxE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;YACpE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YACzE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAE1D,iBAAiB;YACjB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAElD,eAAe;YACf,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3D,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YAExD,uBAAuB;YACvB,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YACrD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACrC,MAAM,SAAS,GAAG,2BAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAEvC,IAAA,eAAM,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;YACxD,KAAK,MAAM,IAAI,IAAI,2BAAQ,EAAE,CAAC;gBAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACrD,KAAK,MAAM,IAAI,IAAI,2BAAQ,EAAE,CAAC;gBAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;YACxD,KAAK,MAAM,IAAI,IAAI,2BAAQ,EAAE,CAAC;gBAC1B,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,IAAI,GAAG,IAAA,gCAAa,EAAC,mBAAmB,CAAC,CAAC;YAEhD,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAA,eAAM,EAAC,IAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,IAAA,gCAAa,EAAC,kBAAkB,CAAC,CAAC;YAE/C,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAA,mBAAU,EAAC,GAAG,EAAE;QACZ,WAAE,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAA,eAAM,EACR,IAAA,8BAAW,EAAC,kBAAkB,EAAE,EAAE,EAAE,2CAAwB,EAAE,sCAAmB,CAAC,CACrF,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,IAAA,eAAM,EACR,IAAA,8BAAW,EACP,mBAAmB,EACnB,EAAE,WAAW,EAAE,EAAE,EAAE,EACnB,2CAAwB,EACxB,sCAAmB,CACtB,CACJ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,YAAY,GAAsB;YACpC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,EAAE,EAAE,kCAAe,EAAE,IAAI,EAAE,cAAc,EAAE;YACnD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAClD,CAAC;QACF,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAW,EAC5B,gBAAgB,EAChB,EAAE,SAAS,EAAE,kCAAe,EAAE,EAC9B,2CAAwB,EACxB,sCAAmB,CACtB,CAAC;QAEF,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAE3C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,IAAA,eAAM,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,aAAa,kCAAe,EAAE,CAAC,CAAC;QAEtF,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,2CAAwB,CAAC,WAAW,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClC,IAAA,eAAM,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sCAAmB,CAAC,CAAC;QAEhD,uCAAuC;QACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,kCAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,YAAY,GAAsB;YACpC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;YAChD,OAAO,EAAE,EAAE;SACd,CAAC;QACF,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAW,EAC5B,mBAAmB,EACnB;YACI,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,oBAAoB;YACjC,GAAG,EAAE,qBAAqB;SAC7B,EACD,2CAAwB,EACxB,sCAAmB,CACtB,CAAC;QAEF,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAE3C,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAA,eAAM,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,WAAW,CAAC,CAAC;QACnE,IAAA,eAAM,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC9B,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,oBAAoB;YACjC,GAAG,EAAE,qBAAqB;SAC7B,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,WAAW,CAAC,iBAAiB,CACzB,IAAI,uBAAY,CAAC;YACb,IAAI,EAAE,cAAuB;YAC7B,OAAO,EAAE,wBAAwB;SACpC,CAAC,CACL,CAAC;QAEF,MAAM,IAAA,eAAM,EACR,IAAA,8BAAW,EACP,gBAAgB,EAChB,EAAE,SAAS,EAAE,kCAAe,EAAE,EAC9B,2CAAwB,EACxB,sCAAmB,CACtB,CACJ,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAY,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAW,EAC5B,uBAAuB,EACvB,EAAE,EACF,2CAAwB,EACxB,sCAAmB,CACtB,CAAC;QAEF,MAAM,WAAW,GAAG,MAAuD,CAAC;QAC5E,IAAA,eAAM,EAAC,WAAW,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IAAA,eAAM,EAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE9D,kCAAkC;QAClC,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAW,EAC5B,yBAAyB,EACzB;YACI,kBAAkB,EAAE,QAAQ;YAC5B,OAAO,EAAE,eAAe;SAC3B,EACD,2CAAwB,EACxB,sCAAmB,CACtB,CAAC;QAEF,MAAM,WAAW,GAAG,MAAuD,CAAC;QAC5E,IAAA,eAAM,EAAC,WAAW,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtF,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhC,kCAAkC;QAClC,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for Use Case MCP tools.
3
+ * Covers: qa_use_case_discovery_memory_get, qa_use_case_candidates_approve,
4
+ * qa_use_case_list, qa_use_case_get
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=use-case-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-case-tools.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/tools/use-case-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}