@qase/mcp-server 1.1.8 → 2.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.
- package/CHANGELOG.md +38 -0
- package/README.md +75 -542
- package/build/auth/client-context.d.ts +12 -0
- package/build/auth/client-context.d.ts.map +1 -0
- package/build/auth/client-context.js +12 -0
- package/build/auth/client-context.js.map +1 -0
- package/build/auth/jwks-verifier.d.ts +15 -0
- package/build/auth/jwks-verifier.d.ts.map +1 -0
- package/build/auth/jwks-verifier.js +31 -0
- package/build/auth/jwks-verifier.js.map +1 -0
- package/build/auth/mcp-guard.d.ts +15 -0
- package/build/auth/mcp-guard.d.ts.map +1 -0
- package/build/auth/mcp-guard.js +44 -0
- package/build/auth/mcp-guard.js.map +1 -0
- package/build/auth/oauth-config.d.ts +40 -0
- package/build/auth/oauth-config.d.ts.map +1 -0
- package/build/auth/oauth-config.js +34 -0
- package/build/auth/oauth-config.js.map +1 -0
- package/build/auth/proxy-provider.d.ts +31 -0
- package/build/auth/proxy-provider.d.ts.map +1 -0
- package/build/auth/proxy-provider.js +87 -0
- package/build/auth/proxy-provider.js.map +1 -0
- package/build/auth/token-type.d.ts +7 -0
- package/build/auth/token-type.d.ts.map +1 -0
- package/build/auth/token-type.js +10 -0
- package/build/auth/token-type.js.map +1 -0
- package/build/cache/circuit-breaker.d.ts +33 -0
- package/build/cache/circuit-breaker.d.ts.map +1 -0
- package/build/cache/circuit-breaker.js +68 -0
- package/build/cache/circuit-breaker.js.map +1 -0
- package/build/cache/index.d.ts +24 -0
- package/build/cache/index.d.ts.map +1 -0
- package/build/cache/index.js +86 -0
- package/build/cache/index.js.map +1 -0
- package/build/cache/keys.d.ts +25 -0
- package/build/cache/keys.d.ts.map +1 -0
- package/build/cache/keys.js +36 -0
- package/build/cache/keys.js.map +1 -0
- package/build/cache/layered.d.ts +31 -0
- package/build/cache/layered.d.ts.map +1 -0
- package/build/cache/layered.js +88 -0
- package/build/cache/layered.js.map +1 -0
- package/build/cache/memory.d.ts +32 -0
- package/build/cache/memory.d.ts.map +1 -0
- package/build/cache/memory.js +108 -0
- package/build/cache/memory.js.map +1 -0
- package/build/cache/metrics.d.ts +31 -0
- package/build/cache/metrics.d.ts.map +1 -0
- package/build/cache/metrics.js +95 -0
- package/build/cache/metrics.js.map +1 -0
- package/build/cache/prom-format.d.ts +7 -0
- package/build/cache/prom-format.d.ts.map +1 -0
- package/build/cache/prom-format.js +16 -0
- package/build/cache/prom-format.js.map +1 -0
- package/build/cache/redis-bus.d.ts +29 -0
- package/build/cache/redis-bus.d.ts.map +1 -0
- package/build/cache/redis-bus.js +50 -0
- package/build/cache/redis-bus.js.map +1 -0
- package/build/cache/redis.d.ts +32 -0
- package/build/cache/redis.d.ts.map +1 -0
- package/build/cache/redis.js +89 -0
- package/build/cache/redis.js.map +1 -0
- package/build/cache/types.d.ts +38 -0
- package/build/cache/types.d.ts.map +1 -0
- package/build/cache/types.js +2 -0
- package/build/cache/types.js.map +1 -0
- package/build/client/index.d.ts +10 -3
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +75 -50
- package/build/client/index.js.map +1 -1
- package/build/http/agent.d.ts +16 -0
- package/build/http/agent.d.ts.map +1 -0
- package/build/http/agent.js +16 -0
- package/build/http/agent.js.map +1 -0
- package/build/http/dedupe.d.ts +14 -0
- package/build/http/dedupe.d.ts.map +1 -0
- package/build/http/dedupe.js +69 -0
- package/build/http/dedupe.js.map +1 -0
- package/build/http/index.d.ts +6 -0
- package/build/http/index.d.ts.map +1 -0
- package/build/http/index.js +4 -0
- package/build/http/index.js.map +1 -0
- package/build/http/retry.d.ts +18 -0
- package/build/http/retry.d.ts.map +1 -0
- package/build/http/retry.js +52 -0
- package/build/http/retry.js.map +1 -0
- package/build/index.d.ts +1 -18
- package/build/index.d.ts.map +1 -1
- package/build/index.js +95 -63
- package/build/index.js.map +1 -1
- package/build/operations-v2/composites/ci-report.d.ts +2 -0
- package/build/operations-v2/composites/ci-report.d.ts.map +1 -0
- package/build/operations-v2/composites/ci-report.js +99 -0
- package/build/operations-v2/composites/ci-report.js.map +1 -0
- package/build/operations-v2/composites/regression-run.d.ts +2 -0
- package/build/operations-v2/composites/regression-run.d.ts.map +1 -0
- package/build/operations-v2/composites/regression-run.js +81 -0
- package/build/operations-v2/composites/regression-run.js.map +1 -0
- package/build/operations-v2/composites/triage-defect.d.ts +2 -0
- package/build/operations-v2/composites/triage-defect.d.ts.map +1 -0
- package/build/operations-v2/composites/triage-defect.js +67 -0
- package/build/operations-v2/composites/triage-defect.js.map +1 -0
- package/build/operations-v2/escape/api.d.ts +2 -0
- package/build/operations-v2/escape/api.d.ts.map +1 -0
- package/build/operations-v2/escape/api.js +34 -0
- package/build/operations-v2/escape/api.js.map +1 -0
- package/build/operations-v2/index.d.ts +21 -0
- package/build/operations-v2/index.d.ts.map +1 -0
- package/build/operations-v2/index.js +27 -0
- package/build/operations-v2/index.js.map +1 -0
- package/build/operations-v2/meta/discover.d.ts +9 -0
- package/build/operations-v2/meta/discover.d.ts.map +1 -0
- package/build/operations-v2/meta/discover.js +79 -0
- package/build/operations-v2/meta/discover.js.map +1 -0
- package/build/{operations/search.d.ts → operations-v2/qql/index.d.ts} +1 -1
- package/build/operations-v2/qql/index.d.ts.map +1 -0
- package/build/{operations/search.js → operations-v2/qql/index.js} +34 -9
- package/build/operations-v2/qql/index.js.map +1 -0
- package/build/operations-v2/read/get.d.ts +2 -0
- package/build/operations-v2/read/get.d.ts.map +1 -0
- package/build/operations-v2/read/get.js +115 -0
- package/build/operations-v2/read/get.js.map +1 -0
- package/build/operations-v2/read/project-context.d.ts +2 -0
- package/build/operations-v2/read/project-context.d.ts.map +1 -0
- package/build/operations-v2/read/project-context.js +102 -0
- package/build/operations-v2/read/project-context.js.map +1 -0
- package/build/operations-v2/write/attachments.d.ts +2 -0
- package/build/operations-v2/write/attachments.d.ts.map +1 -0
- package/build/operations-v2/write/attachments.js +58 -0
- package/build/operations-v2/write/attachments.js.map +1 -0
- package/build/operations-v2/write/case-fields.d.ts +206 -0
- package/build/operations-v2/write/case-fields.d.ts.map +1 -0
- package/build/operations-v2/write/case-fields.js +79 -0
- package/build/operations-v2/write/case-fields.js.map +1 -0
- package/build/operations-v2/write/cases-bulk.d.ts +2 -0
- package/build/operations-v2/write/cases-bulk.d.ts.map +1 -0
- package/build/operations-v2/write/cases-bulk.js +54 -0
- package/build/operations-v2/write/cases-bulk.js.map +1 -0
- package/build/operations-v2/write/cases.d.ts +2 -0
- package/build/operations-v2/write/cases.d.ts.map +1 -0
- package/build/operations-v2/write/cases.js +52 -0
- package/build/operations-v2/write/cases.js.map +1 -0
- package/build/operations-v2/write/defects.d.ts +2 -0
- package/build/operations-v2/write/defects.d.ts.map +1 -0
- package/build/operations-v2/write/defects.js +81 -0
- package/build/operations-v2/write/defects.js.map +1 -0
- package/build/operations-v2/write/environments.d.ts +2 -0
- package/build/operations-v2/write/environments.d.ts.map +1 -0
- package/build/operations-v2/write/environments.js +56 -0
- package/build/operations-v2/write/environments.js.map +1 -0
- package/build/operations-v2/write/external-issues.d.ts +2 -0
- package/build/operations-v2/write/external-issues.d.ts.map +1 -0
- package/build/operations-v2/write/external-issues.js +96 -0
- package/build/operations-v2/write/external-issues.js.map +1 -0
- package/build/operations-v2/write/milestones.d.ts +2 -0
- package/build/operations-v2/write/milestones.d.ts.map +1 -0
- package/build/operations-v2/write/milestones.js +56 -0
- package/build/operations-v2/write/milestones.js.map +1 -0
- package/build/operations-v2/write/plans.d.ts +2 -0
- package/build/operations-v2/write/plans.d.ts.map +1 -0
- package/build/operations-v2/write/plans.js +55 -0
- package/build/operations-v2/write/plans.js.map +1 -0
- package/build/operations-v2/write/results.d.ts +2 -0
- package/build/operations-v2/write/results.d.ts.map +1 -0
- package/build/operations-v2/write/results.js +72 -0
- package/build/operations-v2/write/results.js.map +1 -0
- package/build/operations-v2/write/runs.d.ts +2 -0
- package/build/operations-v2/write/runs.d.ts.map +1 -0
- package/build/operations-v2/write/runs.js +84 -0
- package/build/operations-v2/write/runs.js.map +1 -0
- package/build/operations-v2/write/shared-steps.d.ts +2 -0
- package/build/operations-v2/write/shared-steps.d.ts.map +1 -0
- package/build/operations-v2/write/shared-steps.js +60 -0
- package/build/operations-v2/write/shared-steps.js.map +1 -0
- package/build/operations-v2/write/suites.d.ts +2 -0
- package/build/operations-v2/write/suites.d.ts.map +1 -0
- package/build/operations-v2/write/suites.js +63 -0
- package/build/operations-v2/write/suites.js.map +1 -0
- package/build/prompts/index.d.ts +31 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +229 -0
- package/build/prompts/index.js.map +1 -0
- package/build/transports/sse.d.ts.map +1 -1
- package/build/transports/sse.js +6 -0
- package/build/transports/sse.js.map +1 -1
- package/build/transports/streamableHttp.d.ts +6 -1
- package/build/transports/streamableHttp.d.ts.map +1 -1
- package/build/transports/streamableHttp.js +128 -16
- package/build/transports/streamableHttp.js.map +1 -1
- package/build/utils/auth-context.d.ts +8 -0
- package/build/utils/auth-context.d.ts.map +1 -1
- package/build/utils/auth-context.js +18 -0
- package/build/utils/auth-context.js.map +1 -1
- package/build/utils/case-enums.d.ts +5 -3
- package/build/utils/case-enums.d.ts.map +1 -1
- package/build/utils/case-enums.js +77 -59
- package/build/utils/case-enums.js.map +1 -1
- package/build/utils/output-schemas.d.ts +16 -0
- package/build/utils/output-schemas.d.ts.map +1 -0
- package/build/utils/output-schemas.js +82 -0
- package/build/utils/output-schemas.js.map +1 -0
- package/build/utils/registry.d.ts +42 -9
- package/build/utils/registry.d.ts.map +1 -1
- package/build/utils/registry.js +64 -11
- package/build/utils/registry.js.map +1 -1
- package/build/utils/response-shape.d.ts +23 -0
- package/build/utils/response-shape.d.ts.map +1 -0
- package/build/utils/response-shape.js +73 -0
- package/build/utils/response-shape.js.map +1 -0
- package/build/utils/rich-response.d.ts +58 -0
- package/build/utils/rich-response.d.ts.map +1 -0
- package/build/utils/rich-response.js +93 -0
- package/build/utils/rich-response.js.map +1 -0
- package/build/utils/server-context.d.ts +65 -0
- package/build/utils/server-context.d.ts.map +1 -0
- package/build/utils/server-context.js +67 -0
- package/build/utils/server-context.js.map +1 -0
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/docs/connect.md +81 -0
- package/docs/migration.md +351 -0
- package/docs/self-run.md +270 -0
- package/docs/tools.md +111 -0
- package/docs/troubleshooting.md +144 -0
- package/package.json +11 -2
- package/server.json +8 -2
- package/build/operations/attachments.d.ts +0 -8
- package/build/operations/attachments.d.ts.map +0 -1
- package/build/operations/attachments.js +0 -146
- package/build/operations/attachments.js.map +0 -1
- package/build/operations/authors.d.ts +0 -8
- package/build/operations/authors.d.ts.map +0 -1
- package/build/operations/authors.js +0 -70
- package/build/operations/authors.js.map +0 -1
- package/build/operations/cases.d.ts +0 -8
- package/build/operations/cases.d.ts.map +0 -1
- package/build/operations/cases.js +0 -370
- package/build/operations/cases.js.map +0 -1
- package/build/operations/configurations.d.ts +0 -10
- package/build/operations/configurations.d.ts.map +0 -1
- package/build/operations/configurations.js +0 -125
- package/build/operations/configurations.js.map +0 -1
- package/build/operations/custom-fields.d.ts +0 -8
- package/build/operations/custom-fields.d.ts.map +0 -1
- package/build/operations/custom-fields.js +0 -172
- package/build/operations/custom-fields.js.map +0 -1
- package/build/operations/defects.d.ts +0 -8
- package/build/operations/defects.d.ts.map +0 -1
- package/build/operations/defects.js +0 -256
- package/build/operations/defects.js.map +0 -1
- package/build/operations/environments.d.ts +0 -8
- package/build/operations/environments.d.ts.map +0 -1
- package/build/operations/environments.js +0 -154
- package/build/operations/environments.js.map +0 -1
- package/build/operations/milestones.d.ts +0 -8
- package/build/operations/milestones.d.ts.map +0 -1
- package/build/operations/milestones.js +0 -155
- package/build/operations/milestones.js.map +0 -1
- package/build/operations/plans.d.ts +0 -8
- package/build/operations/plans.d.ts.map +0 -1
- package/build/operations/plans.js +0 -158
- package/build/operations/plans.js.map +0 -1
- package/build/operations/projects.d.ts +0 -8
- package/build/operations/projects.d.ts.map +0 -1
- package/build/operations/projects.js +0 -192
- package/build/operations/projects.js.map +0 -1
- package/build/operations/results.d.ts +0 -8
- package/build/operations/results.d.ts.map +0 -1
- package/build/operations/results.js +0 -214
- package/build/operations/results.js.map +0 -1
- package/build/operations/runs.d.ts +0 -8
- package/build/operations/runs.d.ts.map +0 -1
- package/build/operations/runs.js +0 -224
- package/build/operations/runs.js.map +0 -1
- package/build/operations/search.d.ts.map +0 -1
- package/build/operations/search.js.map +0 -1
- package/build/operations/shared-parameters.d.ts +0 -10
- package/build/operations/shared-parameters.d.ts.map +0 -1
- package/build/operations/shared-parameters.js +0 -93
- package/build/operations/shared-parameters.js.map +0 -1
- package/build/operations/shared-steps.d.ts +0 -8
- package/build/operations/shared-steps.d.ts.map +0 -1
- package/build/operations/shared-steps.js +0 -160
- package/build/operations/shared-steps.js.map +0 -1
- package/build/operations/suites.d.ts +0 -8
- package/build/operations/suites.d.ts.map +0 -1
- package/build/operations/suites.js +0 -169
- package/build/operations/suites.js.map +0 -1
- package/build/operations/system-fields.d.ts +0 -10
- package/build/operations/system-fields.d.ts.map +0 -1
- package/build/operations/system-fields.js +0 -47
- package/build/operations/system-fields.js.map +0 -1
- package/build/operations/users.d.ts +0 -10
- package/build/operations/users.d.ts.map +0 -1
- package/build/operations/users.js +0 -78
- package/build/operations/users.js.map +0 -1
|
@@ -1,172 +0,0 @@
|
|
|
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, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } 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(undefined, undefined, limit, offset));
|
|
87
|
-
return result.match((response) => response.data.result, (error) => {
|
|
88
|
-
throw createToolError(error, 'custom field operation');
|
|
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 createToolError(error, 'custom field operation');
|
|
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 createToolError(error, 'custom field operation');
|
|
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 createToolError(error, 'custom field operation');
|
|
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 createToolError(error, 'custom field operation');
|
|
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
|
-
annotations: ReadAnnotation,
|
|
143
|
-
});
|
|
144
|
-
toolRegistry.register({
|
|
145
|
-
name: 'get_custom_field',
|
|
146
|
-
description: 'Get a specific custom field definition by ID',
|
|
147
|
-
schema: GetCustomFieldSchema,
|
|
148
|
-
handler: getCustomField,
|
|
149
|
-
annotations: ReadAnnotation,
|
|
150
|
-
});
|
|
151
|
-
toolRegistry.register({
|
|
152
|
-
name: 'create_custom_field',
|
|
153
|
-
description: 'Create a new custom field for extending entity data',
|
|
154
|
-
schema: CreateCustomFieldSchema,
|
|
155
|
-
handler: createCustomField,
|
|
156
|
-
annotations: CreateAnnotation,
|
|
157
|
-
});
|
|
158
|
-
toolRegistry.register({
|
|
159
|
-
name: 'update_custom_field',
|
|
160
|
-
description: 'Update an existing custom field definition',
|
|
161
|
-
schema: UpdateCustomFieldSchema,
|
|
162
|
-
handler: updateCustomField,
|
|
163
|
-
annotations: UpdateAnnotation,
|
|
164
|
-
});
|
|
165
|
-
toolRegistry.register({
|
|
166
|
-
name: 'delete_custom_field',
|
|
167
|
-
description: 'Delete a custom field definition',
|
|
168
|
-
schema: DeleteCustomFieldSchema,
|
|
169
|
-
handler: deleteCustomField,
|
|
170
|
-
annotations: DeleteAnnotation,
|
|
171
|
-
});
|
|
172
|
-
//# sourceMappingURL=custom-fields.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-fields.js","sourceRoot":"","sources":["../../src/operations/custom-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defects.d.ts","sourceRoot":"","sources":["../../src/operations/defects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Defects Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing defects in Qase.
|
|
5
|
-
* Defects represent bugs and issues discovered during testing.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { getApiClient } from '../client/index.js';
|
|
9
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
11
|
-
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// SCHEMAS
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Defect severity as human-readable label.
|
|
17
|
-
* Converted to numeric ID before sending to the SDK.
|
|
18
|
-
*/
|
|
19
|
-
const DefectSeveritySchema = z
|
|
20
|
-
.enum(['undefined', 'blocker', 'critical', 'major', 'normal', 'minor', 'trivial'])
|
|
21
|
-
.optional()
|
|
22
|
-
.describe('Defect severity level');
|
|
23
|
-
const severityToId = {
|
|
24
|
-
undefined: 0,
|
|
25
|
-
blocker: 1,
|
|
26
|
-
critical: 2,
|
|
27
|
-
major: 3,
|
|
28
|
-
normal: 4,
|
|
29
|
-
minor: 5,
|
|
30
|
-
trivial: 6,
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Defect status values
|
|
34
|
-
*/
|
|
35
|
-
const DefectStatusEnum = z.enum(['open', 'in_progress', 'resolved', 'invalid']);
|
|
36
|
-
/**
|
|
37
|
-
* Schema for listing defects
|
|
38
|
-
* API: GET /v1/defect/{code}
|
|
39
|
-
* https://developers.qase.io/reference/get-defects
|
|
40
|
-
*
|
|
41
|
-
* The Qase API only supports filtering by a single status value.
|
|
42
|
-
* Severity filtering is not supported by the API.
|
|
43
|
-
*/
|
|
44
|
-
const ListDefectsSchema = z.object({
|
|
45
|
-
code: ProjectCodeSchema,
|
|
46
|
-
status: DefectStatusEnum.optional().describe('Filter by status'),
|
|
47
|
-
limit: z
|
|
48
|
-
.number()
|
|
49
|
-
.int()
|
|
50
|
-
.positive()
|
|
51
|
-
.max(100)
|
|
52
|
-
.optional()
|
|
53
|
-
.describe('Maximum number of items (default: 10)'),
|
|
54
|
-
offset: z
|
|
55
|
-
.number()
|
|
56
|
-
.int()
|
|
57
|
-
.nonnegative()
|
|
58
|
-
.optional()
|
|
59
|
-
.describe('Number of items to skip (default: 0)'),
|
|
60
|
-
});
|
|
61
|
-
/**
|
|
62
|
-
* Schema for getting a specific defect
|
|
63
|
-
*/
|
|
64
|
-
const GetDefectSchema = z.object({
|
|
65
|
-
code: ProjectCodeSchema,
|
|
66
|
-
id: IdSchema,
|
|
67
|
-
});
|
|
68
|
-
/**
|
|
69
|
-
* Schema for creating a defect
|
|
70
|
-
*/
|
|
71
|
-
const CreateDefectSchema = z.object({
|
|
72
|
-
code: ProjectCodeSchema,
|
|
73
|
-
title: z.string().min(1).max(255).describe('Defect title'),
|
|
74
|
-
actual_result: z.string().optional().describe('Actual behavior observed'),
|
|
75
|
-
severity: DefectSeveritySchema.describe('Defect severity'),
|
|
76
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
77
|
-
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
78
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
79
|
-
});
|
|
80
|
-
/**
|
|
81
|
-
* Schema for updating a defect
|
|
82
|
-
*/
|
|
83
|
-
const UpdateDefectSchema = z.object({
|
|
84
|
-
code: ProjectCodeSchema,
|
|
85
|
-
id: IdSchema,
|
|
86
|
-
title: z.string().min(1).max(255).optional().describe('Defect title'),
|
|
87
|
-
actual_result: z.string().optional().describe('Actual behavior observed'),
|
|
88
|
-
severity: DefectSeveritySchema.describe('Defect severity'),
|
|
89
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
90
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
91
|
-
});
|
|
92
|
-
/**
|
|
93
|
-
* Schema for deleting a defect
|
|
94
|
-
*/
|
|
95
|
-
const DeleteDefectSchema = z.object({
|
|
96
|
-
code: ProjectCodeSchema,
|
|
97
|
-
id: IdSchema,
|
|
98
|
-
});
|
|
99
|
-
/**
|
|
100
|
-
* Schema for resolving a defect
|
|
101
|
-
*/
|
|
102
|
-
const ResolveDefectSchema = z.object({
|
|
103
|
-
code: ProjectCodeSchema,
|
|
104
|
-
id: IdSchema,
|
|
105
|
-
});
|
|
106
|
-
/**
|
|
107
|
-
* Schema for updating defect status
|
|
108
|
-
*/
|
|
109
|
-
const UpdateDefectStatusSchema = z.object({
|
|
110
|
-
code: ProjectCodeSchema,
|
|
111
|
-
id: IdSchema,
|
|
112
|
-
status: DefectStatusEnum.describe('New defect status'),
|
|
113
|
-
});
|
|
114
|
-
// ============================================================================
|
|
115
|
-
// HANDLERS
|
|
116
|
-
// ============================================================================
|
|
117
|
-
/**
|
|
118
|
-
* List all defects in a project
|
|
119
|
-
* API: GET /v1/defect/{code}
|
|
120
|
-
* https://developers.qase.io/reference/get-defects
|
|
121
|
-
*/
|
|
122
|
-
async function listDefects(args) {
|
|
123
|
-
const client = getApiClient();
|
|
124
|
-
const { code, status, limit, offset } = args;
|
|
125
|
-
const result = await toResultAsync(client.defects.getDefects(code, status, limit, offset));
|
|
126
|
-
return result.match((response) => response.data.result, (error) => {
|
|
127
|
-
throw createToolError(error, 'defect operation');
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get a specific defect
|
|
132
|
-
*/
|
|
133
|
-
async function getDefect(args) {
|
|
134
|
-
const client = getApiClient();
|
|
135
|
-
const { code, id } = args;
|
|
136
|
-
const result = await toResultAsync(client.defects.getDefect(code, id));
|
|
137
|
-
return result.match((response) => response.data.result, (error) => {
|
|
138
|
-
throw createToolError(error, 'defect operation');
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Create a new defect
|
|
143
|
-
*/
|
|
144
|
-
async function createDefect(args) {
|
|
145
|
-
const client = getApiClient();
|
|
146
|
-
const { code, severity, ...rest } = args;
|
|
147
|
-
const defectData = {
|
|
148
|
-
...rest,
|
|
149
|
-
...(severity !== undefined && { severity: severityToId[severity] }),
|
|
150
|
-
};
|
|
151
|
-
const result = await toResultAsync(client.defects.createDefect(code, defectData));
|
|
152
|
-
return result.match((response) => response.data.result, (error) => {
|
|
153
|
-
throw createToolError(error, 'defect operation');
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Update an existing defect
|
|
158
|
-
*/
|
|
159
|
-
async function updateDefect(args) {
|
|
160
|
-
const client = getApiClient();
|
|
161
|
-
const { code, id, severity, ...rest } = args;
|
|
162
|
-
const updateData = {
|
|
163
|
-
...rest,
|
|
164
|
-
...(severity !== undefined && { severity: severityToId[severity] }),
|
|
165
|
-
};
|
|
166
|
-
const result = await toResultAsync(client.defects.updateDefect(code, id, updateData));
|
|
167
|
-
return result.match((response) => response.data.result, (error) => {
|
|
168
|
-
throw createToolError(error, 'defect operation');
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Delete a defect
|
|
173
|
-
*/
|
|
174
|
-
async function deleteDefect(args) {
|
|
175
|
-
const client = getApiClient();
|
|
176
|
-
const { code, id } = args;
|
|
177
|
-
const result = await toResultAsync(client.defects.deleteDefect(code, id));
|
|
178
|
-
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
179
|
-
throw createToolError(error, 'defect operation');
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Mark a defect as resolved
|
|
184
|
-
*/
|
|
185
|
-
async function resolveDefect(args) {
|
|
186
|
-
const client = getApiClient();
|
|
187
|
-
const { code, id } = args;
|
|
188
|
-
const result = await toResultAsync(client.defects.resolveDefect(code, id));
|
|
189
|
-
return result.match((response) => response.data.result, (error) => {
|
|
190
|
-
throw createToolError(error, 'defect operation');
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Update defect status
|
|
195
|
-
*/
|
|
196
|
-
async function updateDefectStatus(args) {
|
|
197
|
-
const client = getApiClient();
|
|
198
|
-
const { code, id, status } = args;
|
|
199
|
-
const result = await toResultAsync(client.defects.updateDefect(code, id, { status }));
|
|
200
|
-
return result.match((response) => response.data.result, (error) => {
|
|
201
|
-
throw createToolError(error, 'defect operation');
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
// ============================================================================
|
|
205
|
-
// TOOL REGISTRATION
|
|
206
|
-
// ============================================================================
|
|
207
|
-
toolRegistry.register({
|
|
208
|
-
name: 'list_defects',
|
|
209
|
-
description: 'Get all defects in a project with optional filtering by status and severity',
|
|
210
|
-
schema: ListDefectsSchema,
|
|
211
|
-
handler: listDefects,
|
|
212
|
-
annotations: ReadAnnotation,
|
|
213
|
-
});
|
|
214
|
-
toolRegistry.register({
|
|
215
|
-
name: 'get_defect',
|
|
216
|
-
description: 'Get a specific defect by project code and defect ID',
|
|
217
|
-
schema: GetDefectSchema,
|
|
218
|
-
handler: getDefect,
|
|
219
|
-
annotations: ReadAnnotation,
|
|
220
|
-
});
|
|
221
|
-
toolRegistry.register({
|
|
222
|
-
name: 'create_defect',
|
|
223
|
-
description: 'Create a new defect/bug report in a project',
|
|
224
|
-
schema: CreateDefectSchema,
|
|
225
|
-
handler: createDefect,
|
|
226
|
-
annotations: CreateAnnotation,
|
|
227
|
-
});
|
|
228
|
-
toolRegistry.register({
|
|
229
|
-
name: 'update_defect',
|
|
230
|
-
description: 'Update an existing defect',
|
|
231
|
-
schema: UpdateDefectSchema,
|
|
232
|
-
handler: updateDefect,
|
|
233
|
-
annotations: UpdateAnnotation,
|
|
234
|
-
});
|
|
235
|
-
toolRegistry.register({
|
|
236
|
-
name: 'delete_defect',
|
|
237
|
-
description: 'Delete a defect from a project',
|
|
238
|
-
schema: DeleteDefectSchema,
|
|
239
|
-
handler: deleteDefect,
|
|
240
|
-
annotations: DeleteAnnotation,
|
|
241
|
-
});
|
|
242
|
-
toolRegistry.register({
|
|
243
|
-
name: 'resolve_defect',
|
|
244
|
-
description: 'Mark a defect as resolved',
|
|
245
|
-
schema: ResolveDefectSchema,
|
|
246
|
-
handler: resolveDefect,
|
|
247
|
-
annotations: UpdateAnnotation,
|
|
248
|
-
});
|
|
249
|
-
toolRegistry.register({
|
|
250
|
-
name: 'update_defect_status',
|
|
251
|
-
description: 'Update the status of a defect (open, in_progress, resolved, invalid)',
|
|
252
|
-
schema: UpdateDefectStatusSchema,
|
|
253
|
-
handler: updateDefectStatus,
|
|
254
|
-
annotations: UpdateAnnotation,
|
|
255
|
-
});
|
|
256
|
-
//# sourceMappingURL=defects.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defects.js","sourceRoot":"","sources":["../../src/operations/defects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/operations/environments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environments Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test environments in Qase.
|
|
5
|
-
* Environments represent different testing stages (staging, production, etc.).
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { getApiClient } from '../client/index.js';
|
|
9
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
11
|
-
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// SCHEMAS
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Schema for listing environments
|
|
17
|
-
*/
|
|
18
|
-
const ListEnvironmentsSchema = z.object({
|
|
19
|
-
code: ProjectCodeSchema,
|
|
20
|
-
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
21
|
-
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* Schema for getting a specific environment
|
|
25
|
-
*/
|
|
26
|
-
const GetEnvironmentSchema = z.object({
|
|
27
|
-
code: ProjectCodeSchema,
|
|
28
|
-
id: IdSchema,
|
|
29
|
-
});
|
|
30
|
-
/**
|
|
31
|
-
* Schema for creating an environment
|
|
32
|
-
*/
|
|
33
|
-
const CreateEnvironmentSchema = z.object({
|
|
34
|
-
code: ProjectCodeSchema,
|
|
35
|
-
title: z.string().min(1).max(255).describe('Environment title'),
|
|
36
|
-
description: z.string().optional().describe('Environment description'),
|
|
37
|
-
slug: z.string().optional().describe('URL-friendly identifier'),
|
|
38
|
-
host: z.string().optional().describe('Environment host/URL'),
|
|
39
|
-
});
|
|
40
|
-
/**
|
|
41
|
-
* Schema for updating an environment
|
|
42
|
-
*/
|
|
43
|
-
const UpdateEnvironmentSchema = z.object({
|
|
44
|
-
code: ProjectCodeSchema,
|
|
45
|
-
id: IdSchema,
|
|
46
|
-
title: z.string().min(1).max(255).optional().describe('Environment title'),
|
|
47
|
-
description: z.string().optional().describe('Environment description'),
|
|
48
|
-
slug: z.string().optional().describe('URL-friendly identifier'),
|
|
49
|
-
host: z.string().optional().describe('Environment host/URL'),
|
|
50
|
-
});
|
|
51
|
-
/**
|
|
52
|
-
* Schema for deleting an environment
|
|
53
|
-
*/
|
|
54
|
-
const DeleteEnvironmentSchema = z.object({
|
|
55
|
-
code: ProjectCodeSchema,
|
|
56
|
-
id: IdSchema,
|
|
57
|
-
});
|
|
58
|
-
// ============================================================================
|
|
59
|
-
// HANDLERS
|
|
60
|
-
// ============================================================================
|
|
61
|
-
/**
|
|
62
|
-
* List all environments in a project
|
|
63
|
-
*/
|
|
64
|
-
async function listEnvironments(args) {
|
|
65
|
-
const client = getApiClient();
|
|
66
|
-
const { code, limit, offset } = args;
|
|
67
|
-
const result = await toResultAsync(client.environment.getEnvironments(code, undefined, undefined, limit, offset));
|
|
68
|
-
return result.match((response) => response.data.result, (error) => {
|
|
69
|
-
throw createToolError(error, 'environment operation');
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Get a specific environment
|
|
74
|
-
*/
|
|
75
|
-
async function getEnvironment(args) {
|
|
76
|
-
const client = getApiClient();
|
|
77
|
-
const { code, id } = args;
|
|
78
|
-
const result = await toResultAsync(client.environment.getEnvironment(code, id));
|
|
79
|
-
return result.match((response) => response.data.result, (error) => {
|
|
80
|
-
throw createToolError(error, 'environment operation');
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Create a new environment
|
|
85
|
-
*/
|
|
86
|
-
async function createEnvironment(args) {
|
|
87
|
-
const client = getApiClient();
|
|
88
|
-
const { code, ...environmentData } = args;
|
|
89
|
-
const result = await toResultAsync(client.environment.createEnvironment(code, environmentData));
|
|
90
|
-
return result.match((response) => response.data.result, (error) => {
|
|
91
|
-
throw createToolError(error, 'environment operation');
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Update an existing environment
|
|
96
|
-
*/
|
|
97
|
-
async function updateEnvironment(args) {
|
|
98
|
-
const client = getApiClient();
|
|
99
|
-
const { code, id, ...updateData } = args;
|
|
100
|
-
const result = await toResultAsync(client.environment.updateEnvironment(code, id, updateData));
|
|
101
|
-
return result.match((response) => response.data.result, (error) => {
|
|
102
|
-
throw createToolError(error, 'environment operation');
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Delete an environment
|
|
107
|
-
*/
|
|
108
|
-
async function deleteEnvironment(args) {
|
|
109
|
-
const client = getApiClient();
|
|
110
|
-
const { code, id } = args;
|
|
111
|
-
const result = await toResultAsync(client.environment.deleteEnvironment(code, id));
|
|
112
|
-
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
113
|
-
throw createToolError(error, 'environment operation');
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
// ============================================================================
|
|
117
|
-
// TOOL REGISTRATION
|
|
118
|
-
// ============================================================================
|
|
119
|
-
toolRegistry.register({
|
|
120
|
-
name: 'list_environments',
|
|
121
|
-
description: 'Get all test environments in a project',
|
|
122
|
-
schema: ListEnvironmentsSchema,
|
|
123
|
-
handler: listEnvironments,
|
|
124
|
-
annotations: ReadAnnotation,
|
|
125
|
-
});
|
|
126
|
-
toolRegistry.register({
|
|
127
|
-
name: 'get_environment',
|
|
128
|
-
description: 'Get a specific environment by project code and environment ID',
|
|
129
|
-
schema: GetEnvironmentSchema,
|
|
130
|
-
handler: getEnvironment,
|
|
131
|
-
annotations: ReadAnnotation,
|
|
132
|
-
});
|
|
133
|
-
toolRegistry.register({
|
|
134
|
-
name: 'create_environment',
|
|
135
|
-
description: 'Create a new test environment (staging, production, etc.)',
|
|
136
|
-
schema: CreateEnvironmentSchema,
|
|
137
|
-
handler: createEnvironment,
|
|
138
|
-
annotations: CreateAnnotation,
|
|
139
|
-
});
|
|
140
|
-
toolRegistry.register({
|
|
141
|
-
name: 'update_environment',
|
|
142
|
-
description: 'Update an existing test environment',
|
|
143
|
-
schema: UpdateEnvironmentSchema,
|
|
144
|
-
handler: updateEnvironment,
|
|
145
|
-
annotations: UpdateAnnotation,
|
|
146
|
-
});
|
|
147
|
-
toolRegistry.register({
|
|
148
|
-
name: 'delete_environment',
|
|
149
|
-
description: 'Delete a test environment from a project',
|
|
150
|
-
schema: DeleteEnvironmentSchema,
|
|
151
|
-
handler: deleteEnvironment,
|
|
152
|
-
annotations: DeleteAnnotation,
|
|
153
|
-
});
|
|
154
|
-
//# sourceMappingURL=environments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/operations/environments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"milestones.d.ts","sourceRoot":"","sources":["../../src/operations/milestones.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|