@qase/mcp-server 1.0.0-beta.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.
- package/CHANGELOG.md +165 -0
- package/README.md +450 -0
- package/build/client/index.d.ts +23 -0
- package/build/client/index.d.ts.map +1 -0
- package/build/client/index.js +55 -0
- package/build/client/index.js.map +1 -0
- package/build/index.d.ts +32 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +125 -0
- package/build/index.js.map +1 -0
- package/build/operations/attachments.d.ts +8 -0
- package/build/operations/attachments.d.ts.map +1 -0
- package/build/operations/attachments.js +123 -0
- package/build/operations/attachments.js.map +1 -0
- package/build/operations/authors.d.ts +8 -0
- package/build/operations/authors.d.ts.map +1 -0
- package/build/operations/authors.js +68 -0
- package/build/operations/authors.js.map +1 -0
- package/build/operations/cases.d.ts +8 -0
- package/build/operations/cases.d.ts.map +1 -0
- package/build/operations/cases.js +278 -0
- package/build/operations/cases.js.map +1 -0
- package/build/operations/configurations.d.ts +8 -0
- package/build/operations/configurations.d.ts.map +1 -0
- package/build/operations/configurations.js +102 -0
- package/build/operations/configurations.js.map +1 -0
- package/build/operations/custom-fields.d.ts +8 -0
- package/build/operations/custom-fields.d.ts.map +1 -0
- package/build/operations/custom-fields.js +167 -0
- package/build/operations/custom-fields.js.map +1 -0
- package/build/operations/defects.d.ts +8 -0
- package/build/operations/defects.d.ts.map +1 -0
- package/build/operations/defects.js +219 -0
- package/build/operations/defects.js.map +1 -0
- package/build/operations/environments.d.ts +8 -0
- package/build/operations/environments.d.ts.map +1 -0
- package/build/operations/environments.js +149 -0
- package/build/operations/environments.js.map +1 -0
- package/build/operations/milestones.d.ts +8 -0
- package/build/operations/milestones.d.ts.map +1 -0
- package/build/operations/milestones.js +150 -0
- package/build/operations/milestones.js.map +1 -0
- package/build/operations/plans.d.ts +8 -0
- package/build/operations/plans.d.ts.map +1 -0
- package/build/operations/plans.js +153 -0
- package/build/operations/plans.js.map +1 -0
- package/build/operations/projects.d.ts +8 -0
- package/build/operations/projects.d.ts.map +1 -0
- package/build/operations/projects.js +186 -0
- package/build/operations/projects.js.map +1 -0
- package/build/operations/results.d.ts +8 -0
- package/build/operations/results.d.ts.map +1 -0
- package/build/operations/results.js +208 -0
- package/build/operations/results.js.map +1 -0
- package/build/operations/runs.d.ts +8 -0
- package/build/operations/runs.d.ts.map +1 -0
- package/build/operations/runs.js +211 -0
- package/build/operations/runs.js.map +1 -0
- package/build/operations/search.d.ts +8 -0
- package/build/operations/search.d.ts.map +1 -0
- package/build/operations/search.js +138 -0
- package/build/operations/search.js.map +1 -0
- package/build/operations/shared-parameters.d.ts +8 -0
- package/build/operations/shared-parameters.d.ts.map +1 -0
- package/build/operations/shared-parameters.js +139 -0
- package/build/operations/shared-parameters.js.map +1 -0
- package/build/operations/shared-steps.d.ts +8 -0
- package/build/operations/shared-steps.d.ts.map +1 -0
- package/build/operations/shared-steps.js +155 -0
- package/build/operations/shared-steps.js.map +1 -0
- package/build/operations/suites.d.ts +8 -0
- package/build/operations/suites.d.ts.map +1 -0
- package/build/operations/suites.js +164 -0
- package/build/operations/suites.js.map +1 -0
- package/build/operations/system-fields.d.ts +8 -0
- package/build/operations/system-fields.d.ts.map +1 -0
- package/build/operations/system-fields.js +40 -0
- package/build/operations/system-fields.js.map +1 -0
- package/build/operations/users.d.ts +8 -0
- package/build/operations/users.d.ts.map +1 -0
- package/build/operations/users.js +68 -0
- package/build/operations/users.js.map +1 -0
- package/build/types/index.d.ts +49 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +13 -0
- package/build/types/index.js.map +1 -0
- package/build/utils/errors.d.ts +73 -0
- package/build/utils/errors.d.ts.map +1 -0
- package/build/utils/errors.js +136 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/qql-helpers.d.ts +59 -0
- package/build/utils/qql-helpers.d.ts.map +1 -0
- package/build/utils/qql-helpers.js +85 -0
- package/build/utils/qql-helpers.js.map +1 -0
- package/build/utils/registry.d.ts +97 -0
- package/build/utils/registry.d.ts.map +1 -0
- package/build/utils/registry.js +132 -0
- package/build/utils/registry.js.map +1 -0
- package/build/utils/test-helpers.d.ts +32 -0
- package/build/utils/test-helpers.d.ts.map +1 -0
- package/build/utils/test-helpers.js +81 -0
- package/build/utils/test-helpers.js.map +1 -0
- package/build/utils/validation.d.ts +107 -0
- package/build/utils/validation.d.ts.map +1 -0
- package/build/utils/validation.js +104 -0
- package/build/utils/validation.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Cases (Qases) Operations
|
|
3
|
+
*
|
|
4
|
+
* Implements all MCP tools for managing test cases in Qase.
|
|
5
|
+
* Test cases are the core entities representing individual tests.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { getApiClient } from '../client/index.js';
|
|
9
|
+
import { toolRegistry } from '../utils/registry.js';
|
|
10
|
+
import { toResultAsync } from '../utils/errors.js';
|
|
11
|
+
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// SCHEMAS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Schema for listing test cases
|
|
17
|
+
*/
|
|
18
|
+
const ListCasesSchema = z.object({
|
|
19
|
+
code: ProjectCodeSchema,
|
|
20
|
+
search: z.string().optional().describe('Search query for test case title or description'),
|
|
21
|
+
milestone_id: z.number().int().positive().optional().describe('Filter by milestone ID'),
|
|
22
|
+
suite_id: z.number().int().positive().optional().describe('Filter by suite ID'),
|
|
23
|
+
severity: z.string().optional().describe('Filter by severity (e.g., "blocker", "critical")'),
|
|
24
|
+
priority: z.string().optional().describe('Filter by priority (e.g., "high", "medium")'),
|
|
25
|
+
type: z.string().optional().describe('Filter by type (e.g., "functional", "smoke")'),
|
|
26
|
+
behavior: z.string().optional().describe('Filter by behavior (e.g., "positive", "negative")'),
|
|
27
|
+
automation: z.string().optional().describe('Filter by automation status'),
|
|
28
|
+
status: z.string().optional().describe('Filter by status (e.g., "actual", "draft")'),
|
|
29
|
+
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
30
|
+
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Schema for getting a specific test case
|
|
34
|
+
*/
|
|
35
|
+
const GetCaseSchema = z.object({
|
|
36
|
+
code: ProjectCodeSchema,
|
|
37
|
+
id: IdSchema,
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Schema for test case steps
|
|
41
|
+
*/
|
|
42
|
+
const TestStepSchema = z.object({
|
|
43
|
+
action: z.string().describe('Step action description'),
|
|
44
|
+
expected_result: z.string().optional().describe('Expected result for this step'),
|
|
45
|
+
data: z.string().optional().describe('Test data for this step'),
|
|
46
|
+
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Schema for creating a test case
|
|
50
|
+
*/
|
|
51
|
+
const CreateCaseSchema = z.object({
|
|
52
|
+
code: ProjectCodeSchema,
|
|
53
|
+
title: z.string().min(1).max(255).describe('Test case title'),
|
|
54
|
+
description: z.string().optional().describe('Test case description'),
|
|
55
|
+
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
56
|
+
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
57
|
+
severity: z.string().optional().describe('Test severity (e.g., "blocker", "critical", "major")'),
|
|
58
|
+
priority: z.string().optional().describe('Test priority (e.g., "high", "medium", "low")'),
|
|
59
|
+
type: z.string().optional().describe('Test type (e.g., "functional", "smoke", "regression")'),
|
|
60
|
+
layer: z.string().optional().describe('Test layer (e.g., "api", "ui", "unit")'),
|
|
61
|
+
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
62
|
+
suite_id: z.number().int().positive().optional().describe('Suite ID to organize test case'),
|
|
63
|
+
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
64
|
+
behavior: z.string().optional().describe('Test behavior (e.g., "positive", "negative")'),
|
|
65
|
+
automation: z.string().optional().describe('Automation status'),
|
|
66
|
+
status: z.string().optional().describe('Test case status (e.g., "actual", "draft")'),
|
|
67
|
+
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
68
|
+
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
69
|
+
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
70
|
+
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Schema for updating a test case
|
|
74
|
+
*/
|
|
75
|
+
const UpdateCaseSchema = z.object({
|
|
76
|
+
code: ProjectCodeSchema,
|
|
77
|
+
id: IdSchema,
|
|
78
|
+
title: z.string().min(1).max(255).optional().describe('Test case title'),
|
|
79
|
+
description: z.string().optional().describe('Test case description'),
|
|
80
|
+
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
81
|
+
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
82
|
+
severity: z.string().optional().describe('Test severity'),
|
|
83
|
+
priority: z.string().optional().describe('Test priority'),
|
|
84
|
+
type: z.string().optional().describe('Test type'),
|
|
85
|
+
layer: z.string().optional().describe('Test layer'),
|
|
86
|
+
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
87
|
+
suite_id: z.number().int().positive().optional().describe('Suite ID'),
|
|
88
|
+
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
89
|
+
behavior: z.string().optional().describe('Test behavior'),
|
|
90
|
+
automation: z.string().optional().describe('Automation status'),
|
|
91
|
+
status: z.string().optional().describe('Test case status'),
|
|
92
|
+
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
93
|
+
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
94
|
+
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
95
|
+
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* Schema for deleting a test case
|
|
99
|
+
*/
|
|
100
|
+
const DeleteCaseSchema = z.object({
|
|
101
|
+
code: ProjectCodeSchema,
|
|
102
|
+
id: IdSchema,
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* Schema for bulk creating test cases
|
|
106
|
+
*/
|
|
107
|
+
const BulkCreateCasesSchema = z.object({
|
|
108
|
+
code: ProjectCodeSchema,
|
|
109
|
+
cases: z.array(CreateCaseSchema.omit({ code: true })).describe('Array of test cases to create'),
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Schema for attaching external issue
|
|
113
|
+
*/
|
|
114
|
+
const AttachExternalIssueSchema = z.object({
|
|
115
|
+
code: ProjectCodeSchema,
|
|
116
|
+
id: IdSchema,
|
|
117
|
+
issue_id: z.string().describe('External issue ID (e.g., Jira issue key)'),
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Schema for detaching external issue
|
|
121
|
+
*/
|
|
122
|
+
const DetachExternalIssueSchema = z.object({
|
|
123
|
+
code: ProjectCodeSchema,
|
|
124
|
+
id: IdSchema,
|
|
125
|
+
issue_id: z.string().describe('External issue ID to detach'),
|
|
126
|
+
});
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// HANDLERS
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* List all test cases in a project with filtering
|
|
132
|
+
*/
|
|
133
|
+
async function listCases(args) {
|
|
134
|
+
const client = getApiClient();
|
|
135
|
+
const { code, ...filters } = args;
|
|
136
|
+
const result = await toResultAsync(client.cases.getCases(code, filters.search, filters.milestone_id, filters.suite_id, filters.severity, filters.priority, filters.type, filters.behavior, filters.automation, filters.status, undefined, // externalIssuesType
|
|
137
|
+
undefined, // externalIssuesIds
|
|
138
|
+
undefined, // include
|
|
139
|
+
filters.limit, filters.offset));
|
|
140
|
+
return result.match((response) => response.data.result, (error) => {
|
|
141
|
+
throw new Error(error);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get a specific test case
|
|
146
|
+
*/
|
|
147
|
+
async function getCase(args) {
|
|
148
|
+
const client = getApiClient();
|
|
149
|
+
const { code, id } = args;
|
|
150
|
+
const result = await toResultAsync(client.cases.getCase(code, id));
|
|
151
|
+
return result.match((response) => response.data.result, (error) => {
|
|
152
|
+
throw new Error(error);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create a new test case
|
|
157
|
+
*/
|
|
158
|
+
async function createCase(args) {
|
|
159
|
+
const client = getApiClient();
|
|
160
|
+
const { code, ...caseData } = args;
|
|
161
|
+
const result = await toResultAsync(client.cases.createCase(code, caseData));
|
|
162
|
+
return result.match((response) => response.data.result, (error) => {
|
|
163
|
+
throw new Error(error);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Update an existing test case
|
|
168
|
+
*/
|
|
169
|
+
async function updateCase(args) {
|
|
170
|
+
const client = getApiClient();
|
|
171
|
+
const { code, id, ...updateData } = args;
|
|
172
|
+
const result = await toResultAsync(client.cases.updateCase(code, id, updateData));
|
|
173
|
+
return result.match((response) => response.data.result, (error) => {
|
|
174
|
+
throw new Error(error);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Delete a test case
|
|
179
|
+
*/
|
|
180
|
+
async function deleteCase(args) {
|
|
181
|
+
const client = getApiClient();
|
|
182
|
+
const { code, id } = args;
|
|
183
|
+
const result = await toResultAsync(client.cases.deleteCase(code, id));
|
|
184
|
+
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
185
|
+
throw new Error(error);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Bulk create multiple test cases
|
|
190
|
+
*/
|
|
191
|
+
async function bulkCreateCases(args) {
|
|
192
|
+
const client = getApiClient();
|
|
193
|
+
const { code, cases } = args;
|
|
194
|
+
const result = await toResultAsync(client.cases.bulk(code, { cases }));
|
|
195
|
+
return result.match((response) => response.data.result, (error) => {
|
|
196
|
+
throw new Error(error);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Attach external issue to a test case
|
|
201
|
+
*/
|
|
202
|
+
async function attachExternalIssue(args) {
|
|
203
|
+
const client = getApiClient();
|
|
204
|
+
const { code, id, issue_id } = args;
|
|
205
|
+
const result = await toResultAsync(client.cases.caseAttachExternalIssue(code, {
|
|
206
|
+
id,
|
|
207
|
+
issue_id,
|
|
208
|
+
}));
|
|
209
|
+
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
210
|
+
throw new Error(error);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Detach external issue from a test case
|
|
215
|
+
*/
|
|
216
|
+
async function detachExternalIssue(args) {
|
|
217
|
+
const client = getApiClient();
|
|
218
|
+
const { code, id, issue_id } = args;
|
|
219
|
+
const result = await toResultAsync(client.cases.caseDetachExternalIssue(code, {
|
|
220
|
+
id,
|
|
221
|
+
issue_id,
|
|
222
|
+
}));
|
|
223
|
+
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
224
|
+
throw new Error(error);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// ============================================================================
|
|
228
|
+
// TOOL REGISTRATION
|
|
229
|
+
// ============================================================================
|
|
230
|
+
toolRegistry.register({
|
|
231
|
+
name: 'list_cases',
|
|
232
|
+
description: 'Get all test cases in a project with optional filtering and pagination',
|
|
233
|
+
schema: ListCasesSchema,
|
|
234
|
+
handler: listCases,
|
|
235
|
+
});
|
|
236
|
+
toolRegistry.register({
|
|
237
|
+
name: 'get_case',
|
|
238
|
+
description: 'Get a specific test case by project code and case ID',
|
|
239
|
+
schema: GetCaseSchema,
|
|
240
|
+
handler: getCase,
|
|
241
|
+
});
|
|
242
|
+
toolRegistry.register({
|
|
243
|
+
name: 'create_case',
|
|
244
|
+
description: 'Create a new test case in a project',
|
|
245
|
+
schema: CreateCaseSchema,
|
|
246
|
+
handler: createCase,
|
|
247
|
+
});
|
|
248
|
+
toolRegistry.register({
|
|
249
|
+
name: 'update_case',
|
|
250
|
+
description: 'Update an existing test case',
|
|
251
|
+
schema: UpdateCaseSchema,
|
|
252
|
+
handler: updateCase,
|
|
253
|
+
});
|
|
254
|
+
toolRegistry.register({
|
|
255
|
+
name: 'delete_case',
|
|
256
|
+
description: 'Delete a test case from a project',
|
|
257
|
+
schema: DeleteCaseSchema,
|
|
258
|
+
handler: deleteCase,
|
|
259
|
+
});
|
|
260
|
+
toolRegistry.register({
|
|
261
|
+
name: 'bulk_create_cases',
|
|
262
|
+
description: 'Create multiple test cases at once in a project',
|
|
263
|
+
schema: BulkCreateCasesSchema,
|
|
264
|
+
handler: bulkCreateCases,
|
|
265
|
+
});
|
|
266
|
+
toolRegistry.register({
|
|
267
|
+
name: 'attach_external_issue',
|
|
268
|
+
description: 'Attach an external issue (e.g., Jira ticket) to a test case',
|
|
269
|
+
schema: AttachExternalIssueSchema,
|
|
270
|
+
handler: attachExternalIssue,
|
|
271
|
+
});
|
|
272
|
+
toolRegistry.register({
|
|
273
|
+
name: 'detach_external_issue',
|
|
274
|
+
description: 'Detach an external issue from a test case',
|
|
275
|
+
schema: DetachExternalIssueSchema,
|
|
276
|
+
handler: detachExternalIssue,
|
|
277
|
+
});
|
|
278
|
+
//# sourceMappingURL=cases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cases.js","sourceRoot":"","sources":["../../src/operations/cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurations.d.ts","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurations Operations
|
|
3
|
+
*
|
|
4
|
+
* Implements all MCP tools for managing test configurations in Qase.
|
|
5
|
+
* Configurations represent test environment settings (browser, OS, device, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { getApiClient } from '../client/index.js';
|
|
9
|
+
import { toolRegistry } from '../utils/registry.js';
|
|
10
|
+
import { toResultAsync } from '../utils/errors.js';
|
|
11
|
+
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// SCHEMAS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Schema for a single configuration item within a group
|
|
17
|
+
*/
|
|
18
|
+
const ConfigurationItemSchema = z.object({
|
|
19
|
+
title: z.string().min(1).describe('Configuration item title (e.g., "Chrome", "Windows 10")'),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Schema for listing configurations in a project
|
|
23
|
+
*/
|
|
24
|
+
const ListConfigurationsSchema = z.object({
|
|
25
|
+
code: ProjectCodeSchema,
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Schema for creating a configuration group
|
|
29
|
+
*/
|
|
30
|
+
const CreateConfigurationGroupSchema = z.object({
|
|
31
|
+
code: ProjectCodeSchema,
|
|
32
|
+
title: z.string().min(1).max(255).describe('Configuration group title (e.g., "Browser", "OS")'),
|
|
33
|
+
configurations: z
|
|
34
|
+
.array(ConfigurationItemSchema)
|
|
35
|
+
.min(1)
|
|
36
|
+
.describe('Configuration items in the group'),
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Schema for deleting a configuration group
|
|
40
|
+
*/
|
|
41
|
+
const DeleteConfigurationGroupSchema = z.object({
|
|
42
|
+
code: ProjectCodeSchema,
|
|
43
|
+
id: IdSchema.describe('Configuration group ID'),
|
|
44
|
+
});
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// HANDLERS
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* List all configurations in a project
|
|
50
|
+
*/
|
|
51
|
+
async function listConfigurations(args) {
|
|
52
|
+
const client = getApiClient();
|
|
53
|
+
const { code } = args;
|
|
54
|
+
const result = await toResultAsync(client.configurations.getConfigurations(code));
|
|
55
|
+
return result.match((response) => response.data.result, (error) => {
|
|
56
|
+
throw new Error(error);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a new configuration group
|
|
61
|
+
*/
|
|
62
|
+
async function createConfigurationGroup(args) {
|
|
63
|
+
const client = getApiClient();
|
|
64
|
+
const { code, ...groupData } = args;
|
|
65
|
+
const result = await toResultAsync(client.configurations.createConfigurationGroup(code, groupData));
|
|
66
|
+
return result.match((response) => response.data.result, (error) => {
|
|
67
|
+
throw new Error(error);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Delete a configuration group
|
|
72
|
+
*/
|
|
73
|
+
async function deleteConfigurationGroup(args) {
|
|
74
|
+
const client = getApiClient();
|
|
75
|
+
const { code, id } = args;
|
|
76
|
+
const result = await toResultAsync(client.configurations.deleteConfigurationGroup(code, id));
|
|
77
|
+
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
78
|
+
throw new Error(error);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// TOOL REGISTRATION
|
|
83
|
+
// ============================================================================
|
|
84
|
+
toolRegistry.register({
|
|
85
|
+
name: 'list_configurations',
|
|
86
|
+
description: 'Get all configuration groups and their items in a project',
|
|
87
|
+
schema: ListConfigurationsSchema,
|
|
88
|
+
handler: listConfigurations,
|
|
89
|
+
});
|
|
90
|
+
toolRegistry.register({
|
|
91
|
+
name: 'create_configuration_group',
|
|
92
|
+
description: 'Create a new configuration group (e.g., Browser, OS) with items',
|
|
93
|
+
schema: CreateConfigurationGroupSchema,
|
|
94
|
+
handler: createConfigurationGroup,
|
|
95
|
+
});
|
|
96
|
+
toolRegistry.register({
|
|
97
|
+
name: 'delete_configuration_group',
|
|
98
|
+
description: 'Delete a configuration group from a project',
|
|
99
|
+
schema: DeleteConfigurationGroupSchema,
|
|
100
|
+
handler: deleteConfigurationGroup,
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=configurations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurations.js","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/operations/custom-fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Fields Operations
|
|
3
|
+
*
|
|
4
|
+
* Implements all MCP tools for managing custom fields in Qase.
|
|
5
|
+
* Custom fields extend entities with project-specific data fields.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { getApiClient } from '../client/index.js';
|
|
9
|
+
import { toolRegistry } from '../utils/registry.js';
|
|
10
|
+
import { toResultAsync } from '../utils/errors.js';
|
|
11
|
+
import { IdSchema } from '../utils/validation.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// SCHEMAS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Custom field entity types
|
|
17
|
+
*/
|
|
18
|
+
const CustomFieldEntityEnum = z.enum(['case', 'run', 'defect', 'result']);
|
|
19
|
+
/**
|
|
20
|
+
* Custom field data types
|
|
21
|
+
*/
|
|
22
|
+
const CustomFieldTypeEnum = z.enum([
|
|
23
|
+
'number',
|
|
24
|
+
'string',
|
|
25
|
+
'text',
|
|
26
|
+
'selectbox',
|
|
27
|
+
'checkbox',
|
|
28
|
+
'radio',
|
|
29
|
+
'multiselect',
|
|
30
|
+
'url',
|
|
31
|
+
'user',
|
|
32
|
+
'datetime',
|
|
33
|
+
]);
|
|
34
|
+
/**
|
|
35
|
+
* Schema for listing custom fields
|
|
36
|
+
*/
|
|
37
|
+
const ListCustomFieldsSchema = z.object({
|
|
38
|
+
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
39
|
+
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Schema for getting a specific custom field
|
|
43
|
+
*/
|
|
44
|
+
const GetCustomFieldSchema = z.object({
|
|
45
|
+
id: IdSchema,
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Schema for creating a custom field
|
|
49
|
+
*/
|
|
50
|
+
const CreateCustomFieldSchema = z.object({
|
|
51
|
+
title: z.string().min(1).max(255).describe('Custom field title'),
|
|
52
|
+
entity: CustomFieldEntityEnum.describe('Entity type this field applies to'),
|
|
53
|
+
type: CustomFieldTypeEnum.describe('Data type of the field'),
|
|
54
|
+
placeholder: z.string().optional().describe('Placeholder text'),
|
|
55
|
+
default_value: z.string().optional().describe('Default value'),
|
|
56
|
+
is_required: z.boolean().optional().describe('Whether field is required'),
|
|
57
|
+
is_visible: z.boolean().optional().describe('Whether field is visible'),
|
|
58
|
+
projects: z.array(z.string()).optional().describe('Project codes where field is available'),
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Schema for updating a custom field
|
|
62
|
+
*/
|
|
63
|
+
const UpdateCustomFieldSchema = z.object({
|
|
64
|
+
id: IdSchema,
|
|
65
|
+
title: z.string().min(1).max(255).optional().describe('Custom field title'),
|
|
66
|
+
placeholder: z.string().optional().describe('Placeholder text'),
|
|
67
|
+
default_value: z.string().optional().describe('Default value'),
|
|
68
|
+
is_required: z.boolean().optional().describe('Whether field is required'),
|
|
69
|
+
is_visible: z.boolean().optional().describe('Whether field is visible'),
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Schema for deleting a custom field
|
|
73
|
+
*/
|
|
74
|
+
const DeleteCustomFieldSchema = z.object({
|
|
75
|
+
id: IdSchema,
|
|
76
|
+
});
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// HANDLERS
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/**
|
|
81
|
+
* List all custom fields
|
|
82
|
+
*/
|
|
83
|
+
async function listCustomFields(args) {
|
|
84
|
+
const client = getApiClient();
|
|
85
|
+
const { limit, offset } = args;
|
|
86
|
+
const result = await toResultAsync(client.customFields.getCustomFields(limit, offset));
|
|
87
|
+
return result.match((response) => response.data.result, (error) => {
|
|
88
|
+
throw new Error(error);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get a specific custom field
|
|
93
|
+
*/
|
|
94
|
+
async function getCustomField(args) {
|
|
95
|
+
const client = getApiClient();
|
|
96
|
+
const { id } = args;
|
|
97
|
+
const result = await toResultAsync(client.customFields.getCustomField(id));
|
|
98
|
+
return result.match((response) => response.data.result, (error) => {
|
|
99
|
+
throw new Error(error);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a new custom field
|
|
104
|
+
*/
|
|
105
|
+
async function createCustomField(args) {
|
|
106
|
+
const client = getApiClient();
|
|
107
|
+
const result = await toResultAsync(client.customFields.createCustomField(args));
|
|
108
|
+
return result.match((response) => response.data.result, (error) => {
|
|
109
|
+
throw new Error(error);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Update an existing custom field
|
|
114
|
+
*/
|
|
115
|
+
async function updateCustomField(args) {
|
|
116
|
+
const client = getApiClient();
|
|
117
|
+
const { id, ...updateData } = args;
|
|
118
|
+
const result = await toResultAsync(client.customFields.updateCustomField(id, updateData));
|
|
119
|
+
return result.match((response) => response.data.result, (error) => {
|
|
120
|
+
throw new Error(error);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Delete a custom field
|
|
125
|
+
*/
|
|
126
|
+
async function deleteCustomField(args) {
|
|
127
|
+
const client = getApiClient();
|
|
128
|
+
const { id } = args;
|
|
129
|
+
const result = await toResultAsync(client.customFields.deleteCustomField(id));
|
|
130
|
+
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
131
|
+
throw new Error(error);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// ============================================================================
|
|
135
|
+
// TOOL REGISTRATION
|
|
136
|
+
// ============================================================================
|
|
137
|
+
toolRegistry.register({
|
|
138
|
+
name: 'list_custom_fields',
|
|
139
|
+
description: 'Get all custom field definitions with optional pagination',
|
|
140
|
+
schema: ListCustomFieldsSchema,
|
|
141
|
+
handler: listCustomFields,
|
|
142
|
+
});
|
|
143
|
+
toolRegistry.register({
|
|
144
|
+
name: 'get_custom_field',
|
|
145
|
+
description: 'Get a specific custom field definition by ID',
|
|
146
|
+
schema: GetCustomFieldSchema,
|
|
147
|
+
handler: getCustomField,
|
|
148
|
+
});
|
|
149
|
+
toolRegistry.register({
|
|
150
|
+
name: 'create_custom_field',
|
|
151
|
+
description: 'Create a new custom field for extending entity data',
|
|
152
|
+
schema: CreateCustomFieldSchema,
|
|
153
|
+
handler: createCustomField,
|
|
154
|
+
});
|
|
155
|
+
toolRegistry.register({
|
|
156
|
+
name: 'update_custom_field',
|
|
157
|
+
description: 'Update an existing custom field definition',
|
|
158
|
+
schema: UpdateCustomFieldSchema,
|
|
159
|
+
handler: updateCustomField,
|
|
160
|
+
});
|
|
161
|
+
toolRegistry.register({
|
|
162
|
+
name: 'delete_custom_field',
|
|
163
|
+
description: 'Delete a custom field definition',
|
|
164
|
+
schema: DeleteCustomFieldSchema,
|
|
165
|
+
handler: deleteCustomField,
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=custom-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-fields.js","sourceRoot":"","sources":["../../src/operations/custom-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defects.d.ts","sourceRoot":"","sources":["../../src/operations/defects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|