@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,307 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for Artifact Inspection MCP tools.
4
+ * Covers: qa_test_case_list, qa_test_case_get, qa_test_case_list_by_use_case,
5
+ * qa_test_script_list, qa_test_script_get, qa_test_script_list_paginated,
6
+ * qa_project_test_results_summary_get, qa_project_test_scripts_summary_get,
7
+ * qa_project_test_runs_summary_get
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const zod_1 = require("zod");
12
+ const schemas_js_1 = require("../../tools/schemas.js");
13
+ const tool_registry_js_1 = require("../../tools/tool-registry.js");
14
+ const test_fixtures_js_1 = require("../helpers/test-fixtures.js");
15
+ // =============================================================================
16
+ // Helper
17
+ // =============================================================================
18
+ /**
19
+ * Find a tool by name from the registry.
20
+ * @param name - Tool name to find.
21
+ * @returns The tool definition.
22
+ */
23
+ function findTool(name) {
24
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === name);
25
+ if (!tool) {
26
+ throw new Error(`Tool '${name}' not found in registry`);
27
+ }
28
+ return tool;
29
+ }
30
+ // =============================================================================
31
+ // qa_test_case_list
32
+ // =============================================================================
33
+ (0, vitest_1.describe)("qa_test_case_list", () => {
34
+ const TOOL_NAME = "qa_test_case_list";
35
+ (0, vitest_1.describe)("schema validation", () => {
36
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
37
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
38
+ const result = schemas_js_1.TestCaseListInputSchema.parse(input);
39
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
40
+ });
41
+ (0, vitest_1.it)("should accept valid input with pagination", () => {
42
+ const input = {
43
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
44
+ page: 1,
45
+ pageSize: 50,
46
+ };
47
+ const result = schemas_js_1.TestCaseListInputSchema.parse(input);
48
+ (0, vitest_1.expect)(result.page).toBe(1);
49
+ (0, vitest_1.expect)(result.pageSize).toBe(50);
50
+ });
51
+ (0, vitest_1.it)("should reject input with missing projectId", () => {
52
+ const input = {};
53
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseListInputSchema.parse(input)).toThrow(zod_1.ZodError);
54
+ });
55
+ (0, vitest_1.it)("should reject input with pageSize exceeding max", () => {
56
+ const input = {
57
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
58
+ pageSize: 101,
59
+ };
60
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseListInputSchema.parse(input)).toThrow(zod_1.ZodError);
61
+ });
62
+ });
63
+ (0, vitest_1.describe)("mapToUpstream", () => {
64
+ (0, vitest_1.it)("should produce correct GET call with query params", () => {
65
+ const tool = findTool(TOOL_NAME);
66
+ const input = {
67
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
68
+ page: 2,
69
+ pageSize: 20,
70
+ };
71
+ const result = tool.mapToUpstream(input);
72
+ (0, vitest_1.expect)(result.method).toBe("GET");
73
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-cases`);
74
+ (0, vitest_1.expect)(result.queryParams).toEqual({
75
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
76
+ page: 2,
77
+ pageSize: 20,
78
+ });
79
+ });
80
+ });
81
+ });
82
+ // =============================================================================
83
+ // qa_test_case_get
84
+ // =============================================================================
85
+ (0, vitest_1.describe)("qa_test_case_get", () => {
86
+ const TOOL_NAME = "qa_test_case_get";
87
+ (0, vitest_1.describe)("schema validation", () => {
88
+ (0, vitest_1.it)("should accept valid input with testCaseId", () => {
89
+ const input = { testCaseId: test_fixtures_js_1.TEST_CASE_ID };
90
+ const result = schemas_js_1.TestCaseGetInputSchema.parse(input);
91
+ (0, vitest_1.expect)(result.testCaseId).toBe(test_fixtures_js_1.TEST_CASE_ID);
92
+ });
93
+ (0, vitest_1.it)("should reject input with empty testCaseId", () => {
94
+ const input = { testCaseId: "" };
95
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseGetInputSchema.parse(input)).toThrow(zod_1.ZodError);
96
+ });
97
+ });
98
+ (0, vitest_1.describe)("mapToUpstream", () => {
99
+ (0, vitest_1.it)("should produce correct GET call with testCaseId in path", () => {
100
+ const tool = findTool(TOOL_NAME);
101
+ const input = { testCaseId: test_fixtures_js_1.TEST_CASE_ID };
102
+ const result = tool.mapToUpstream(input);
103
+ (0, vitest_1.expect)(result.method).toBe("GET");
104
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-cases/${test_fixtures_js_1.TEST_CASE_ID}`);
105
+ });
106
+ });
107
+ });
108
+ // =============================================================================
109
+ // qa_test_case_list_by_use_case
110
+ // =============================================================================
111
+ (0, vitest_1.describe)("qa_test_case_list_by_use_case", () => {
112
+ const TOOL_NAME = "qa_test_case_list_by_use_case";
113
+ (0, vitest_1.describe)("schema validation", () => {
114
+ (0, vitest_1.it)("should accept valid input with useCaseId", () => {
115
+ const input = { useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID };
116
+ const result = schemas_js_1.TestCaseListByUseCaseInputSchema.parse(input);
117
+ (0, vitest_1.expect)(result.useCaseId).toBe(test_fixtures_js_1.TEST_USE_CASE_ID);
118
+ });
119
+ (0, vitest_1.it)("should reject input with empty useCaseId", () => {
120
+ const input = { useCaseId: "" };
121
+ (0, vitest_1.expect)(() => schemas_js_1.TestCaseListByUseCaseInputSchema.parse(input)).toThrow(zod_1.ZodError);
122
+ });
123
+ });
124
+ (0, vitest_1.describe)("mapToUpstream", () => {
125
+ (0, vitest_1.it)("should produce correct GET call with useCaseId in path", () => {
126
+ const tool = findTool(TOOL_NAME);
127
+ const input = { useCaseId: test_fixtures_js_1.TEST_USE_CASE_ID };
128
+ const result = tool.mapToUpstream(input);
129
+ (0, vitest_1.expect)(result.method).toBe("GET");
130
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/use-cases/${test_fixtures_js_1.TEST_USE_CASE_ID}/test-cases`);
131
+ });
132
+ });
133
+ });
134
+ // =============================================================================
135
+ // qa_test_script_list
136
+ // =============================================================================
137
+ (0, vitest_1.describe)("qa_test_script_list", () => {
138
+ const TOOL_NAME = "qa_test_script_list";
139
+ (0, vitest_1.describe)("schema validation", () => {
140
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
141
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
142
+ const result = schemas_js_1.TestScriptListInputSchema.parse(input);
143
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
144
+ });
145
+ (0, vitest_1.it)("should accept valid input with pagination", () => {
146
+ const input = {
147
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
148
+ page: 3,
149
+ pageSize: 10,
150
+ };
151
+ const result = schemas_js_1.TestScriptListInputSchema.parse(input);
152
+ (0, vitest_1.expect)(result.page).toBe(3);
153
+ (0, vitest_1.expect)(result.pageSize).toBe(10);
154
+ });
155
+ });
156
+ (0, vitest_1.describe)("mapToUpstream", () => {
157
+ (0, vitest_1.it)("should produce correct GET call with query params", () => {
158
+ const tool = findTool(TOOL_NAME);
159
+ const input = {
160
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
161
+ page: 1,
162
+ pageSize: 25,
163
+ };
164
+ const result = tool.mapToUpstream(input);
165
+ (0, vitest_1.expect)(result.method).toBe("GET");
166
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-scripts`);
167
+ (0, vitest_1.expect)(result.queryParams).toEqual({
168
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
169
+ page: 1,
170
+ pageSize: 25,
171
+ });
172
+ });
173
+ });
174
+ });
175
+ // =============================================================================
176
+ // qa_test_script_get
177
+ // =============================================================================
178
+ (0, vitest_1.describe)("qa_test_script_get", () => {
179
+ const TOOL_NAME = "qa_test_script_get";
180
+ (0, vitest_1.describe)("schema validation", () => {
181
+ (0, vitest_1.it)("should accept valid input with testScriptId", () => {
182
+ const input = { testScriptId: test_fixtures_js_1.TEST_SCRIPT_ID };
183
+ const result = schemas_js_1.TestScriptGetInputSchema.parse(input);
184
+ (0, vitest_1.expect)(result.testScriptId).toBe(test_fixtures_js_1.TEST_SCRIPT_ID);
185
+ });
186
+ (0, vitest_1.it)("should reject input with empty testScriptId", () => {
187
+ const input = { testScriptId: "" };
188
+ (0, vitest_1.expect)(() => schemas_js_1.TestScriptGetInputSchema.parse(input)).toThrow(zod_1.ZodError);
189
+ });
190
+ });
191
+ (0, vitest_1.describe)("mapToUpstream", () => {
192
+ (0, vitest_1.it)("should produce correct GET call with testScriptId in path", () => {
193
+ const tool = findTool(TOOL_NAME);
194
+ const input = { testScriptId: test_fixtures_js_1.TEST_SCRIPT_ID };
195
+ const result = tool.mapToUpstream(input);
196
+ (0, vitest_1.expect)(result.method).toBe("GET");
197
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-scripts/${test_fixtures_js_1.TEST_SCRIPT_ID}`);
198
+ });
199
+ });
200
+ });
201
+ // =============================================================================
202
+ // qa_test_script_list_paginated
203
+ // =============================================================================
204
+ (0, vitest_1.describe)("qa_test_script_list_paginated", () => {
205
+ const TOOL_NAME = "qa_test_script_list_paginated";
206
+ (0, vitest_1.describe)("schema validation", () => {
207
+ (0, vitest_1.it)("should accept valid input with projectId and pagination", () => {
208
+ const input = {
209
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
210
+ page: 2,
211
+ pageSize: 15,
212
+ };
213
+ const result = schemas_js_1.TestScriptListPaginatedInputSchema.parse(input);
214
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
215
+ (0, vitest_1.expect)(result.page).toBe(2);
216
+ });
217
+ });
218
+ (0, vitest_1.describe)("mapToUpstream", () => {
219
+ (0, vitest_1.it)("should produce correct GET call to paginated endpoint", () => {
220
+ const tool = findTool(TOOL_NAME);
221
+ const input = {
222
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
223
+ page: 1,
224
+ pageSize: 10,
225
+ };
226
+ const result = tool.mapToUpstream(input);
227
+ (0, vitest_1.expect)(result.method).toBe("GET");
228
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/test-scripts/paginated`);
229
+ (0, vitest_1.expect)(result.queryParams).toEqual({
230
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
231
+ page: 1,
232
+ pageSize: 10,
233
+ });
234
+ });
235
+ });
236
+ });
237
+ // =============================================================================
238
+ // qa_project_test_results_summary_get
239
+ // =============================================================================
240
+ (0, vitest_1.describe)("qa_project_test_results_summary_get", () => {
241
+ const TOOL_NAME = "qa_project_test_results_summary_get";
242
+ (0, vitest_1.describe)("schema validation", () => {
243
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
244
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
245
+ const result = schemas_js_1.ProjectTestResultsSummaryInputSchema.parse(input);
246
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
247
+ });
248
+ (0, vitest_1.it)("should reject input with empty projectId", () => {
249
+ const input = { projectId: "" };
250
+ (0, vitest_1.expect)(() => schemas_js_1.ProjectTestResultsSummaryInputSchema.parse(input)).toThrow(zod_1.ZodError);
251
+ });
252
+ });
253
+ (0, vitest_1.describe)("mapToUpstream", () => {
254
+ (0, vitest_1.it)("should produce correct GET call", () => {
255
+ const tool = findTool(TOOL_NAME);
256
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
257
+ const result = tool.mapToUpstream(input);
258
+ (0, vitest_1.expect)(result.method).toBe("GET");
259
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/testResults`);
260
+ });
261
+ });
262
+ });
263
+ // =============================================================================
264
+ // qa_project_test_scripts_summary_get
265
+ // =============================================================================
266
+ (0, vitest_1.describe)("qa_project_test_scripts_summary_get", () => {
267
+ const TOOL_NAME = "qa_project_test_scripts_summary_get";
268
+ (0, vitest_1.describe)("schema validation", () => {
269
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
270
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
271
+ const result = schemas_js_1.ProjectTestScriptsSummaryInputSchema.parse(input);
272
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
273
+ });
274
+ });
275
+ (0, vitest_1.describe)("mapToUpstream", () => {
276
+ (0, vitest_1.it)("should produce correct GET call", () => {
277
+ const tool = findTool(TOOL_NAME);
278
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
279
+ const result = tool.mapToUpstream(input);
280
+ (0, vitest_1.expect)(result.method).toBe("GET");
281
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/test-scripts/summary`);
282
+ });
283
+ });
284
+ });
285
+ // =============================================================================
286
+ // qa_project_test_runs_summary_get
287
+ // =============================================================================
288
+ (0, vitest_1.describe)("qa_project_test_runs_summary_get", () => {
289
+ const TOOL_NAME = "qa_project_test_runs_summary_get";
290
+ (0, vitest_1.describe)("schema validation", () => {
291
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
292
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
293
+ const result = schemas_js_1.ProjectTestRunsSummaryInputSchema.parse(input);
294
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
295
+ });
296
+ });
297
+ (0, vitest_1.describe)("mapToUpstream", () => {
298
+ (0, vitest_1.it)("should produce correct GET call", () => {
299
+ const tool = findTool(TOOL_NAME);
300
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
301
+ const result = tool.mapToUpstream(input);
302
+ (0, vitest_1.expect)(result.method).toBe("GET");
303
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/test-runs/summary`);
304
+ });
305
+ });
306
+ });
307
+ //# sourceMappingURL=artifact-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-tools.test.js","sourceRoot":"","sources":["../../../../src/__tests__/tools/artifact-tools.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,mCAA8C;AAC9C,6BAA+B;AAE/B,uDAUgC;AAChC,mEAAwD;AAGxD,kEAMqC;AAErC,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF;;;;GAIG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC1B,MAAM,IAAI,GAAG,2BAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,yBAAyB,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,MAAM,SAAS,GAAG,mBAAmB,CAAC;IAEtC,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,oCAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEpD,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,oCAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEpD,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YAClD,MAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,oCAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;YACvD,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,QAAQ,EAAE,GAAG;aAChB,CAAC;YAEF,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,oCAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,aAAa,CAAC,CAAC;YAC/D,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;gBAC/B,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,+BAAY,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,mCAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAA,eAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,+BAAY,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,mCAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,+BAAY,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,eAAe,+BAAY,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,MAAM,SAAS,GAAG,+BAA+B,CAAC;IAElD,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,mCAAgB,EAAE,CAAC;YAE9C,MAAM,MAAM,GAAG,6CAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE7D,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,mCAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAEhC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,6CAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,mCAAgB,EAAE,CAAC;YAE9C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,uCAAoB,cAAc,mCAAgB,aAAa,CACrE,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC;IAExC,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,sCAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEtD,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,sCAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEtD,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,eAAe,CAAC,CAAC;YACjE,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;gBAC/B,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;IAEvC,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,EAAE,YAAY,EAAE,iCAAc,EAAE,CAAC;YAE/C,MAAM,MAAM,GAAG,qCAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAErD,IAAA,eAAM,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iCAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAEnC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,qCAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;YACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,YAAY,EAAE,iCAAc,EAAE,CAAC;YAE/C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,iBAAiB,iCAAc,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,MAAM,SAAS,GAAG,+BAA+B,CAAC;IAElD,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,+CAAkC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE/D,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG;gBACV,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,uCAAoB,yBAAyB,CAAC,CAAC;YAC3E,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;gBAC/B,SAAS,EAAE,kCAAe;gBAC1B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAE;aACf,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,MAAM,SAAS,GAAG,qCAAqC,CAAC;IAExD,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,iDAAoC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEjE,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAEhC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,iDAAoC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,uCAAoB,aAAa,kCAAe,cAAc,CACpE,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,MAAM,SAAS,GAAG,qCAAqC,CAAC;IAExD,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,iDAAoC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEjE,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,uCAAoB,aAAa,kCAAe,uBAAuB,CAC7E,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG,kCAAkC,CAAC;IAErD,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,8CAAiC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE9D,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kCAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,kCAAe,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,uCAAoB,aAAa,kCAAe,oBAAoB,CAC1E,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for PRD File MCP tools.
3
+ * Covers: qa_prd_file_upload, qa_prd_file_list_by_project, qa_prd_file_delete,
4
+ * qa_workflow_start_prd_file_process, qa_workflow_get_prd_file_process_latest_run
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=prd-file-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prd-file-tools.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/tools/prd-file-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for PRD File MCP tools.
4
+ * Covers: qa_prd_file_upload, qa_prd_file_list_by_project, qa_prd_file_delete,
5
+ * qa_workflow_start_prd_file_process, qa_workflow_get_prd_file_process_latest_run
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const vitest_1 = require("vitest");
9
+ const zod_1 = require("zod");
10
+ const schemas_js_1 = require("../../tools/schemas.js");
11
+ const tool_registry_js_1 = require("../../tools/tool-registry.js");
12
+ const test_fixtures_js_1 = require("../helpers/test-fixtures.js");
13
+ // =============================================================================
14
+ // Helper
15
+ // =============================================================================
16
+ /**
17
+ * Find a tool by name from the registry.
18
+ * @param name - Tool name to find.
19
+ * @returns The tool definition.
20
+ */
21
+ function findTool(name) {
22
+ const tool = tool_registry_js_1.allTools.find((t) => t.name === name);
23
+ if (!tool) {
24
+ throw new Error(`Tool '${name}' not found in registry`);
25
+ }
26
+ return tool;
27
+ }
28
+ // =============================================================================
29
+ // qa_prd_file_upload
30
+ // =============================================================================
31
+ (0, vitest_1.describe)("qa_prd_file_upload", () => {
32
+ const TOOL_NAME = "qa_prd_file_upload";
33
+ (0, vitest_1.describe)("schema validation", () => {
34
+ (0, vitest_1.it)("should accept valid input with all required fields", () => {
35
+ const input = {
36
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
37
+ fileName: "requirements.pdf",
38
+ contentBase64: "SGVsbG8gV29ybGQ=",
39
+ };
40
+ const result = schemas_js_1.PrdFileUploadInputSchema.parse(input);
41
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
42
+ (0, vitest_1.expect)(result.fileName).toBe("requirements.pdf");
43
+ (0, vitest_1.expect)(result.contentBase64).toBe("SGVsbG8gV29ybGQ=");
44
+ (0, vitest_1.expect)(result.contentType).toBeUndefined();
45
+ });
46
+ (0, vitest_1.it)("should accept valid input with optional contentType", () => {
47
+ const input = {
48
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
49
+ fileName: "requirements.pdf",
50
+ contentBase64: "SGVsbG8gV29ybGQ=",
51
+ contentType: "application/pdf",
52
+ };
53
+ const result = schemas_js_1.PrdFileUploadInputSchema.parse(input);
54
+ (0, vitest_1.expect)(result.contentType).toBe("application/pdf");
55
+ });
56
+ (0, vitest_1.it)("should reject input with missing fileName", () => {
57
+ const input = {
58
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
59
+ contentBase64: "SGVsbG8gV29ybGQ=",
60
+ };
61
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileUploadInputSchema.parse(input)).toThrow(zod_1.ZodError);
62
+ });
63
+ (0, vitest_1.it)("should reject input with empty contentBase64", () => {
64
+ const input = {
65
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
66
+ fileName: "requirements.pdf",
67
+ contentBase64: "",
68
+ };
69
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileUploadInputSchema.parse(input)).toThrow(zod_1.ZodError);
70
+ });
71
+ });
72
+ (0, vitest_1.describe)("mapToUpstream", () => {
73
+ (0, vitest_1.it)("should produce correct multipart form data upload call", () => {
74
+ const tool = findTool(TOOL_NAME);
75
+ const input = {
76
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
77
+ fileName: "requirements.pdf",
78
+ contentBase64: "SGVsbG8gV29ybGQ=",
79
+ contentType: "application/pdf",
80
+ };
81
+ const result = tool.mapToUpstream(input);
82
+ (0, vitest_1.expect)(result.method).toBe("POST");
83
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/workflow/use-case/prd-file-upload`);
84
+ (0, vitest_1.expect)(result.multipartFormData).toEqual({
85
+ fileFieldName: "file",
86
+ fileName: "requirements.pdf",
87
+ contentType: "application/pdf",
88
+ fileBase64: "SGVsbG8gV29ybGQ=",
89
+ });
90
+ });
91
+ (0, vitest_1.it)("should default contentType to application/octet-stream when not provided", () => {
92
+ const tool = findTool(TOOL_NAME);
93
+ const input = {
94
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
95
+ fileName: "document.txt",
96
+ contentBase64: "dGVzdA==",
97
+ };
98
+ const result = tool.mapToUpstream(input);
99
+ (0, vitest_1.expect)(result.multipartFormData?.contentType).toBe("application/octet-stream");
100
+ });
101
+ });
102
+ });
103
+ // =============================================================================
104
+ // qa_prd_file_list_by_project
105
+ // =============================================================================
106
+ (0, vitest_1.describe)("qa_prd_file_list_by_project", () => {
107
+ const TOOL_NAME = "qa_prd_file_list_by_project";
108
+ (0, vitest_1.describe)("schema validation", () => {
109
+ (0, vitest_1.it)("should accept valid input with projectId", () => {
110
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
111
+ const result = schemas_js_1.PrdFileListInputSchema.parse(input);
112
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
113
+ });
114
+ (0, vitest_1.it)("should reject input with empty projectId", () => {
115
+ const input = { projectId: "" };
116
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileListInputSchema.parse(input)).toThrow(zod_1.ZodError);
117
+ });
118
+ });
119
+ (0, vitest_1.describe)("mapToUpstream", () => {
120
+ (0, vitest_1.it)("should produce correct GET call", () => {
121
+ const tool = findTool(TOOL_NAME);
122
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
123
+ const result = tool.mapToUpstream(input);
124
+ (0, vitest_1.expect)(result.method).toBe("GET");
125
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/prd-files`);
126
+ });
127
+ });
128
+ });
129
+ // =============================================================================
130
+ // qa_prd_file_delete
131
+ // =============================================================================
132
+ (0, vitest_1.describe)("qa_prd_file_delete", () => {
133
+ const TOOL_NAME = "qa_prd_file_delete";
134
+ (0, vitest_1.describe)("schema validation", () => {
135
+ (0, vitest_1.it)("should accept valid input with projectId and prdFileId", () => {
136
+ const input = {
137
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
138
+ prdFileId: test_fixtures_js_1.TEST_PRD_FILE_ID,
139
+ };
140
+ const result = schemas_js_1.PrdFileDeleteInputSchema.parse(input);
141
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
142
+ (0, vitest_1.expect)(result.prdFileId).toBe(test_fixtures_js_1.TEST_PRD_FILE_ID);
143
+ });
144
+ (0, vitest_1.it)("should reject input with missing prdFileId", () => {
145
+ const input = { projectId: test_fixtures_js_1.TEST_PROJECT_ID };
146
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileDeleteInputSchema.parse(input)).toThrow(zod_1.ZodError);
147
+ });
148
+ });
149
+ (0, vitest_1.describe)("mapToUpstream", () => {
150
+ (0, vitest_1.it)("should produce correct DELETE call with both IDs in path", () => {
151
+ const tool = findTool(TOOL_NAME);
152
+ const input = {
153
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
154
+ prdFileId: test_fixtures_js_1.TEST_PRD_FILE_ID,
155
+ };
156
+ const result = tool.mapToUpstream(input);
157
+ (0, vitest_1.expect)(result.method).toBe("DELETE");
158
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/projects/${test_fixtures_js_1.TEST_PROJECT_ID}/prd-files/${test_fixtures_js_1.TEST_PRD_FILE_ID}`);
159
+ });
160
+ });
161
+ });
162
+ // =============================================================================
163
+ // qa_workflow_start_prd_file_process
164
+ // =============================================================================
165
+ (0, vitest_1.describe)("qa_workflow_start_prd_file_process", () => {
166
+ const TOOL_NAME = "qa_workflow_start_prd_file_process";
167
+ (0, vitest_1.describe)("schema validation", () => {
168
+ (0, vitest_1.it)("should accept valid input with all required fields", () => {
169
+ const input = {
170
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
171
+ name: "Process PRD for Login",
172
+ description: "Extract use cases from login PRD",
173
+ prdFilePath: "/uploads/prd-file-123.pdf",
174
+ originalFileName: "login-prd.pdf",
175
+ url: "https://example.com",
176
+ contentChecksum: "abc123checksum",
177
+ fileSize: 1024,
178
+ };
179
+ const result = schemas_js_1.PrdFileProcessStartInputSchema.parse(input);
180
+ (0, vitest_1.expect)(result.projectId).toBe(test_fixtures_js_1.TEST_PROJECT_ID);
181
+ (0, vitest_1.expect)(result.name).toBe("Process PRD for Login");
182
+ (0, vitest_1.expect)(result.fileSize).toBe(1024);
183
+ });
184
+ (0, vitest_1.it)("should reject input with missing prdFilePath", () => {
185
+ const input = {
186
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
187
+ name: "Process PRD",
188
+ description: "Extract use cases",
189
+ originalFileName: "login-prd.pdf",
190
+ url: "https://example.com",
191
+ contentChecksum: "abc123",
192
+ fileSize: 1024,
193
+ };
194
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileProcessStartInputSchema.parse(input)).toThrow(zod_1.ZodError);
195
+ });
196
+ (0, vitest_1.it)("should reject input with non-positive fileSize", () => {
197
+ const input = {
198
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
199
+ name: "Process PRD",
200
+ description: "Extract use cases",
201
+ prdFilePath: "/uploads/prd-file.pdf",
202
+ originalFileName: "prd.pdf",
203
+ url: "https://example.com",
204
+ contentChecksum: "abc",
205
+ fileSize: 0,
206
+ };
207
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileProcessStartInputSchema.parse(input)).toThrow(zod_1.ZodError);
208
+ });
209
+ (0, vitest_1.it)("should reject input with invalid URL", () => {
210
+ const input = {
211
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
212
+ name: "Process PRD",
213
+ description: "Extract use cases",
214
+ prdFilePath: "/uploads/prd-file.pdf",
215
+ originalFileName: "prd.pdf",
216
+ url: "not-a-url",
217
+ contentChecksum: "abc",
218
+ fileSize: 1024,
219
+ };
220
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileProcessStartInputSchema.parse(input)).toThrow(zod_1.ZodError);
221
+ });
222
+ });
223
+ (0, vitest_1.describe)("mapToUpstream", () => {
224
+ (0, vitest_1.it)("should produce correct POST call with all fields in body", () => {
225
+ const tool = findTool(TOOL_NAME);
226
+ const input = {
227
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
228
+ name: "Process PRD",
229
+ description: "Extract use cases",
230
+ prdFilePath: "/uploads/prd-file.pdf",
231
+ originalFileName: "login-prd.pdf",
232
+ url: "https://example.com",
233
+ contentChecksum: "sha256checksum",
234
+ fileSize: 2048,
235
+ };
236
+ const result = tool.mapToUpstream(input);
237
+ (0, vitest_1.expect)(result.method).toBe("POST");
238
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/workflow/use-case/prd-file-process`);
239
+ (0, vitest_1.expect)(result.body).toEqual({
240
+ projectId: test_fixtures_js_1.TEST_PROJECT_ID,
241
+ name: "Process PRD",
242
+ description: "Extract use cases",
243
+ prdFilePath: "/uploads/prd-file.pdf",
244
+ originalFileName: "login-prd.pdf",
245
+ url: "https://example.com",
246
+ contentChecksum: "sha256checksum",
247
+ fileSize: 2048,
248
+ });
249
+ });
250
+ });
251
+ });
252
+ // =============================================================================
253
+ // qa_workflow_get_prd_file_process_latest_run
254
+ // =============================================================================
255
+ (0, vitest_1.describe)("qa_workflow_get_prd_file_process_latest_run", () => {
256
+ const TOOL_NAME = "qa_workflow_get_prd_file_process_latest_run";
257
+ (0, vitest_1.describe)("schema validation", () => {
258
+ (0, vitest_1.it)("should accept valid input with workflowRuntimeId", () => {
259
+ const input = { workflowRuntimeId: test_fixtures_js_1.TEST_WORKFLOW_RUNTIME_ID };
260
+ const result = schemas_js_1.PrdFileProcessLatestRunInputSchema.parse(input);
261
+ (0, vitest_1.expect)(result.workflowRuntimeId).toBe(test_fixtures_js_1.TEST_WORKFLOW_RUNTIME_ID);
262
+ });
263
+ (0, vitest_1.it)("should reject input with empty workflowRuntimeId", () => {
264
+ const input = { workflowRuntimeId: "" };
265
+ (0, vitest_1.expect)(() => schemas_js_1.PrdFileProcessLatestRunInputSchema.parse(input)).toThrow(zod_1.ZodError);
266
+ });
267
+ });
268
+ (0, vitest_1.describe)("mapToUpstream", () => {
269
+ (0, vitest_1.it)("should produce correct GET call with runtime ID in path", () => {
270
+ const tool = findTool(TOOL_NAME);
271
+ const input = { workflowRuntimeId: test_fixtures_js_1.TEST_WORKFLOW_RUNTIME_ID };
272
+ const result = tool.mapToUpstream(input);
273
+ (0, vitest_1.expect)(result.method).toBe("GET");
274
+ (0, vitest_1.expect)(result.path).toBe(`${test_fixtures_js_1.TEST_UPSTREAM_PREFIX}/workflow/use-case/prd-file-process/${test_fixtures_js_1.TEST_WORKFLOW_RUNTIME_ID}/run/latest`);
275
+ });
276
+ });
277
+ });
278
+ //# sourceMappingURL=prd-file-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prd-file-tools.test.js","sourceRoot":"","sources":["../../../../src/__tests__/tools/prd-file-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview
3
+ * Test suite for Project MCP tools.
4
+ * Covers: qa_project_create, qa_project_get, qa_project_update, qa_project_list, qa_project_delete.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=project-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/tools/project-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}