@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.
Files changed (107) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/README.md +450 -0
  3. package/build/client/index.d.ts +23 -0
  4. package/build/client/index.d.ts.map +1 -0
  5. package/build/client/index.js +55 -0
  6. package/build/client/index.js.map +1 -0
  7. package/build/index.d.ts +32 -0
  8. package/build/index.d.ts.map +1 -0
  9. package/build/index.js +125 -0
  10. package/build/index.js.map +1 -0
  11. package/build/operations/attachments.d.ts +8 -0
  12. package/build/operations/attachments.d.ts.map +1 -0
  13. package/build/operations/attachments.js +123 -0
  14. package/build/operations/attachments.js.map +1 -0
  15. package/build/operations/authors.d.ts +8 -0
  16. package/build/operations/authors.d.ts.map +1 -0
  17. package/build/operations/authors.js +68 -0
  18. package/build/operations/authors.js.map +1 -0
  19. package/build/operations/cases.d.ts +8 -0
  20. package/build/operations/cases.d.ts.map +1 -0
  21. package/build/operations/cases.js +278 -0
  22. package/build/operations/cases.js.map +1 -0
  23. package/build/operations/configurations.d.ts +8 -0
  24. package/build/operations/configurations.d.ts.map +1 -0
  25. package/build/operations/configurations.js +102 -0
  26. package/build/operations/configurations.js.map +1 -0
  27. package/build/operations/custom-fields.d.ts +8 -0
  28. package/build/operations/custom-fields.d.ts.map +1 -0
  29. package/build/operations/custom-fields.js +167 -0
  30. package/build/operations/custom-fields.js.map +1 -0
  31. package/build/operations/defects.d.ts +8 -0
  32. package/build/operations/defects.d.ts.map +1 -0
  33. package/build/operations/defects.js +219 -0
  34. package/build/operations/defects.js.map +1 -0
  35. package/build/operations/environments.d.ts +8 -0
  36. package/build/operations/environments.d.ts.map +1 -0
  37. package/build/operations/environments.js +149 -0
  38. package/build/operations/environments.js.map +1 -0
  39. package/build/operations/milestones.d.ts +8 -0
  40. package/build/operations/milestones.d.ts.map +1 -0
  41. package/build/operations/milestones.js +150 -0
  42. package/build/operations/milestones.js.map +1 -0
  43. package/build/operations/plans.d.ts +8 -0
  44. package/build/operations/plans.d.ts.map +1 -0
  45. package/build/operations/plans.js +153 -0
  46. package/build/operations/plans.js.map +1 -0
  47. package/build/operations/projects.d.ts +8 -0
  48. package/build/operations/projects.d.ts.map +1 -0
  49. package/build/operations/projects.js +186 -0
  50. package/build/operations/projects.js.map +1 -0
  51. package/build/operations/results.d.ts +8 -0
  52. package/build/operations/results.d.ts.map +1 -0
  53. package/build/operations/results.js +208 -0
  54. package/build/operations/results.js.map +1 -0
  55. package/build/operations/runs.d.ts +8 -0
  56. package/build/operations/runs.d.ts.map +1 -0
  57. package/build/operations/runs.js +211 -0
  58. package/build/operations/runs.js.map +1 -0
  59. package/build/operations/search.d.ts +8 -0
  60. package/build/operations/search.d.ts.map +1 -0
  61. package/build/operations/search.js +138 -0
  62. package/build/operations/search.js.map +1 -0
  63. package/build/operations/shared-parameters.d.ts +8 -0
  64. package/build/operations/shared-parameters.d.ts.map +1 -0
  65. package/build/operations/shared-parameters.js +139 -0
  66. package/build/operations/shared-parameters.js.map +1 -0
  67. package/build/operations/shared-steps.d.ts +8 -0
  68. package/build/operations/shared-steps.d.ts.map +1 -0
  69. package/build/operations/shared-steps.js +155 -0
  70. package/build/operations/shared-steps.js.map +1 -0
  71. package/build/operations/suites.d.ts +8 -0
  72. package/build/operations/suites.d.ts.map +1 -0
  73. package/build/operations/suites.js +164 -0
  74. package/build/operations/suites.js.map +1 -0
  75. package/build/operations/system-fields.d.ts +8 -0
  76. package/build/operations/system-fields.d.ts.map +1 -0
  77. package/build/operations/system-fields.js +40 -0
  78. package/build/operations/system-fields.js.map +1 -0
  79. package/build/operations/users.d.ts +8 -0
  80. package/build/operations/users.d.ts.map +1 -0
  81. package/build/operations/users.js +68 -0
  82. package/build/operations/users.js.map +1 -0
  83. package/build/types/index.d.ts +49 -0
  84. package/build/types/index.d.ts.map +1 -0
  85. package/build/types/index.js +13 -0
  86. package/build/types/index.js.map +1 -0
  87. package/build/utils/errors.d.ts +73 -0
  88. package/build/utils/errors.d.ts.map +1 -0
  89. package/build/utils/errors.js +136 -0
  90. package/build/utils/errors.js.map +1 -0
  91. package/build/utils/qql-helpers.d.ts +59 -0
  92. package/build/utils/qql-helpers.d.ts.map +1 -0
  93. package/build/utils/qql-helpers.js +85 -0
  94. package/build/utils/qql-helpers.js.map +1 -0
  95. package/build/utils/registry.d.ts +97 -0
  96. package/build/utils/registry.d.ts.map +1 -0
  97. package/build/utils/registry.js +132 -0
  98. package/build/utils/registry.js.map +1 -0
  99. package/build/utils/test-helpers.d.ts +32 -0
  100. package/build/utils/test-helpers.d.ts.map +1 -0
  101. package/build/utils/test-helpers.js +81 -0
  102. package/build/utils/test-helpers.js.map +1 -0
  103. package/build/utils/validation.d.ts +107 -0
  104. package/build/utils/validation.d.ts.map +1 -0
  105. package/build/utils/validation.js +104 -0
  106. package/build/utils/validation.js.map +1 -0
  107. package/package.json +84 -0
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Test Runs Operations
3
+ *
4
+ * Implements all MCP tools for managing test runs in Qase.
5
+ * Test runs represent test execution sessions.
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 runs
17
+ */
18
+ const ListRunsSchema = z.object({
19
+ code: ProjectCodeSchema,
20
+ search: z.string().optional().describe('Search query for run title'),
21
+ status: z.string().optional().describe('Filter by status (e.g., "active", "complete")'),
22
+ milestone: z.number().int().positive().optional().describe('Filter by milestone ID'),
23
+ environment: z.number().int().positive().optional().describe('Filter by environment ID'),
24
+ from_start_time: z.number().optional().describe('Filter runs started after this timestamp'),
25
+ to_start_time: z.number().optional().describe('Filter runs started before this timestamp'),
26
+ limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
27
+ offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
28
+ include: z.string().optional().describe('Comma-separated relations to include (e.g., "cases")'),
29
+ });
30
+ /**
31
+ * Schema for getting a specific test run
32
+ */
33
+ const GetRunSchema = z.object({
34
+ code: ProjectCodeSchema,
35
+ id: IdSchema,
36
+ include: z.string().optional().describe('Comma-separated relations to include (e.g., "cases")'),
37
+ });
38
+ /**
39
+ * Schema for creating a test run
40
+ */
41
+ const CreateRunSchema = z.object({
42
+ code: ProjectCodeSchema,
43
+ title: z.string().min(1).max(255).describe('Test run title'),
44
+ description: z.string().optional().describe('Test run description'),
45
+ environment_id: z.number().int().positive().optional().describe('Environment ID for this run'),
46
+ milestone_id: z.number().int().positive().optional().describe('Milestone ID for this run'),
47
+ plan_id: z.number().int().positive().optional().describe('Test plan ID to base this run on'),
48
+ cases: z
49
+ .array(z.number().int().positive())
50
+ .optional()
51
+ .describe('Array of test case IDs to include in the run'),
52
+ is_autotest: z.boolean().optional().describe('Mark as automated test run'),
53
+ start_time: z.number().optional().describe('Start time as unix timestamp'),
54
+ end_time: z.number().optional().describe('End time as unix timestamp'),
55
+ custom_field: z.record(z.any()).optional().describe('Custom field values'),
56
+ tags: z.array(z.string()).optional().describe('Tags for categorization'),
57
+ });
58
+ /**
59
+ * Schema for deleting a test run
60
+ */
61
+ const DeleteRunSchema = z.object({
62
+ code: ProjectCodeSchema,
63
+ id: IdSchema,
64
+ });
65
+ /**
66
+ * Schema for completing a test run
67
+ */
68
+ const CompleteRunSchema = z.object({
69
+ code: ProjectCodeSchema,
70
+ id: IdSchema,
71
+ });
72
+ /**
73
+ * Schema for getting run public link
74
+ */
75
+ const GetRunPublicLinkSchema = z.object({
76
+ code: ProjectCodeSchema,
77
+ id: IdSchema,
78
+ });
79
+ /**
80
+ * Schema for deleting run public link
81
+ */
82
+ const DeleteRunPublicLinkSchema = z.object({
83
+ code: ProjectCodeSchema,
84
+ id: IdSchema,
85
+ });
86
+ // ============================================================================
87
+ // HANDLERS
88
+ // ============================================================================
89
+ /**
90
+ * List all test runs in a project
91
+ */
92
+ async function listRuns(args) {
93
+ const client = getApiClient();
94
+ const { code, ...filters } = args;
95
+ const result = await toResultAsync(client.runs.getRuns(code, filters.search, filters.status, filters.milestone, filters.environment, filters.from_start_time, filters.to_start_time, filters.limit, filters.offset, filters.include));
96
+ return result.match((response) => response.data.result, (error) => {
97
+ throw new Error(error);
98
+ });
99
+ }
100
+ /**
101
+ * Get a specific test run
102
+ */
103
+ async function getRun(args) {
104
+ const client = getApiClient();
105
+ const { code, id, include } = args;
106
+ const result = await toResultAsync(client.runs.getRun(code, id, include));
107
+ return result.match((response) => response.data.result, (error) => {
108
+ throw new Error(error);
109
+ });
110
+ }
111
+ /**
112
+ * Create a new test run
113
+ */
114
+ async function createRun(args) {
115
+ const client = getApiClient();
116
+ const { code, ...runData } = args;
117
+ const result = await toResultAsync(client.runs.createRun(code, runData));
118
+ return result.match((response) => response.data.result, (error) => {
119
+ throw new Error(error);
120
+ });
121
+ }
122
+ /**
123
+ * Delete a test run
124
+ */
125
+ async function deleteRun(args) {
126
+ const client = getApiClient();
127
+ const { code, id } = args;
128
+ const result = await toResultAsync(client.runs.deleteRun(code, id));
129
+ return result.match((_response) => ({ success: true, id }), (error) => {
130
+ throw new Error(error);
131
+ });
132
+ }
133
+ /**
134
+ * Complete a test run
135
+ */
136
+ async function completeRun(args) {
137
+ const client = getApiClient();
138
+ const { code, id } = args;
139
+ const result = await toResultAsync(client.runs.completeRun(code, id));
140
+ return result.match((_response) => ({ success: true, id, status: 'complete' }), (error) => {
141
+ throw new Error(error);
142
+ });
143
+ }
144
+ /**
145
+ * Get or create public link for a test run
146
+ */
147
+ async function getRunPublicLink(args) {
148
+ const client = getApiClient();
149
+ const { code, id } = args;
150
+ const result = await toResultAsync(client.runs.updateRunPublicity(code, id, { status: true }));
151
+ return result.match((response) => response.data.result, (error) => {
152
+ throw new Error(error);
153
+ });
154
+ }
155
+ /**
156
+ * Delete public link for a test run
157
+ */
158
+ async function deleteRunPublicLink(args) {
159
+ const client = getApiClient();
160
+ const { code, id } = args;
161
+ const result = await toResultAsync(client.runs.updateRunPublicity(code, id, { status: false }));
162
+ return result.match((_response) => ({ success: true, id, public_link_removed: true }), (error) => {
163
+ throw new Error(error);
164
+ });
165
+ }
166
+ // ============================================================================
167
+ // TOOL REGISTRATION
168
+ // ============================================================================
169
+ toolRegistry.register({
170
+ name: 'list_runs',
171
+ description: 'Get all test runs in a project with optional filtering and pagination',
172
+ schema: ListRunsSchema,
173
+ handler: listRuns,
174
+ });
175
+ toolRegistry.register({
176
+ name: 'get_run',
177
+ description: 'Get a specific test run by project code and run ID',
178
+ schema: GetRunSchema,
179
+ handler: getRun,
180
+ });
181
+ toolRegistry.register({
182
+ name: 'create_run',
183
+ description: 'Create a new test run in a project',
184
+ schema: CreateRunSchema,
185
+ handler: createRun,
186
+ });
187
+ toolRegistry.register({
188
+ name: 'delete_run',
189
+ description: 'Delete a test run from a project',
190
+ schema: DeleteRunSchema,
191
+ handler: deleteRun,
192
+ });
193
+ toolRegistry.register({
194
+ name: 'complete_run',
195
+ description: 'Mark a test run as complete',
196
+ schema: CompleteRunSchema,
197
+ handler: completeRun,
198
+ });
199
+ toolRegistry.register({
200
+ name: 'get_run_public_link',
201
+ description: 'Get or create a public link for sharing a test run externally',
202
+ schema: GetRunPublicLinkSchema,
203
+ handler: getRunPublicLink,
204
+ });
205
+ toolRegistry.register({
206
+ name: 'delete_run_public_link',
207
+ description: 'Delete the public link for a test run',
208
+ schema: DeleteRunPublicLinkSchema,
209
+ handler: deleteRunPublicLink,
210
+ });
211
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/operations/runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * QQL Search Operations
3
+ *
4
+ * Implements QQL (Qase Query Language) search functionality.
5
+ * QQL enables powerful cross-project querying with complex filters.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * QQL Search Operations
3
+ *
4
+ * Implements QQL (Qase Query Language) search functionality.
5
+ * QQL enables powerful cross-project querying with complex filters.
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 { QqlExamples } from '../utils/qql-helpers.js';
12
+ // ============================================================================
13
+ // SCHEMAS
14
+ // ============================================================================
15
+ /**
16
+ * Schema for QQL search
17
+ */
18
+ const QqlSearchSchema = z.object({
19
+ query: z
20
+ .string()
21
+ .min(1)
22
+ .max(1000)
23
+ .describe('QQL query expression. Examples:\n' +
24
+ '- entity = "case" and project = "DEMO" and status = "Actual"\n' +
25
+ '- entity = "defect" and severity = "blocker" and status = "open"\n' +
26
+ '- entity = "result" and status = "failed" and created >= now("-7d")\n' +
27
+ '- entity = "run" and milestone ~ "Sprint 12"\n' +
28
+ 'See QQL documentation for full syntax and examples.'),
29
+ limit: z
30
+ .number()
31
+ .int()
32
+ .positive()
33
+ .max(100)
34
+ .optional()
35
+ .describe('Maximum number of results to return (default: 10, max: 100)'),
36
+ offset: z
37
+ .number()
38
+ .int()
39
+ .nonnegative()
40
+ .optional()
41
+ .describe('Number of results to skip for pagination'),
42
+ });
43
+ /**
44
+ * Schema for QQL help
45
+ */
46
+ const GetQqlHelpSchema = z.object({
47
+ topic: z
48
+ .enum(['syntax', 'entities', 'operators', 'functions', 'examples'])
49
+ .optional()
50
+ .describe('Specific help topic, or omit for general overview'),
51
+ });
52
+ // ============================================================================
53
+ // HANDLERS
54
+ // ============================================================================
55
+ /**
56
+ * Execute QQL search query
57
+ */
58
+ async function qqlSearch(args) {
59
+ const client = getApiClient();
60
+ const { query, limit, offset } = args;
61
+ const result = await toResultAsync(client.search({
62
+ query,
63
+ limit: limit || 10,
64
+ offset: offset || 0,
65
+ }));
66
+ return result.match((response) => ({
67
+ total: response.data.result.total,
68
+ filtered: response.data.result.filtered,
69
+ count: response.data.result.count,
70
+ entities: response.data.result.entities,
71
+ }), (error) => {
72
+ throw new Error(error);
73
+ });
74
+ }
75
+ /**
76
+ * Get QQL help and documentation
77
+ */
78
+ async function getQqlHelp(args) {
79
+ const { topic } = args;
80
+ const help = {
81
+ overview: {
82
+ description: 'QQL (Qase Query Language) allows powerful searches across Qase entities',
83
+ structure: 'entity = "TYPE" and CONDITION [and CONDITION...] [ORDER BY field ASC/DESC]',
84
+ entities: ['case', 'defect', 'run', 'result', 'plan', 'requirement'],
85
+ note: 'QQL is only available in Business and Enterprise Qase subscriptions',
86
+ },
87
+ syntax: {
88
+ basicStructure: 'entity = "TYPE" and CONDITION [and CONDITION...]',
89
+ ordering: 'ORDER BY field ASC/DESC',
90
+ customFields: 'cf["Field Name"] = value',
91
+ caseNotes: 'Queries are case-sensitive for field values',
92
+ stringMatching: '~ operator is case-insensitive substring match',
93
+ },
94
+ entities: {
95
+ case: 'Test cases - entity = "case"',
96
+ defect: 'Defects/bugs - entity = "defect"',
97
+ run: 'Test runs - entity = "run"',
98
+ result: 'Test results - entity = "result"',
99
+ plan: 'Test plans - entity = "plan"',
100
+ requirement: 'Requirements - entity = "requirement"',
101
+ },
102
+ operators: {
103
+ comparison: ['=', '!=', '<', '<=', '>', '>='],
104
+ string: ['~', 'is', 'is not'],
105
+ array: ['in', 'not in'],
106
+ null: ['is empty', 'is not empty'],
107
+ logical: ['and', 'or', 'not'],
108
+ },
109
+ functions: {
110
+ currentUser: 'currentUser() - Returns current user ID',
111
+ activeUsers: 'activeUsers() - Returns all active user IDs',
112
+ now: 'now("+/-Nd/w/m") - Current timestamp with optional offset (d=days, w=weeks, m=months)',
113
+ startOfDay: 'startOfDay("YYYY-MM-DD") - Start of specified day',
114
+ endOfDay: 'endOfDay("YYYY-MM-DD") - End of specified day',
115
+ },
116
+ examples: QqlExamples,
117
+ };
118
+ if (topic) {
119
+ return { topic, content: help[topic] };
120
+ }
121
+ return help;
122
+ }
123
+ // ============================================================================
124
+ // TOOL REGISTRATION
125
+ // ============================================================================
126
+ toolRegistry.register({
127
+ name: 'qql_search',
128
+ description: 'Search entities using Qase Query Language (QQL) with powerful filtering and cross-project queries',
129
+ schema: QqlSearchSchema,
130
+ handler: qqlSearch,
131
+ });
132
+ toolRegistry.register({
133
+ name: 'qql_help',
134
+ description: 'Get help and examples for Qase Query Language (QQL) syntax',
135
+ schema: GetQqlHelpSchema,
136
+ handler: getQqlHelp,
137
+ });
138
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CACP,mCAAmC;QACjC,gEAAgE;QAChE,oEAAoE;QACpE,uEAAuE;QACvE,gDAAgD;QAChD,qDAAqD,CACxD;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;IAC1E,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,WAAW,EAAE;SACb,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;SAClE,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC,CAAC;AAEH,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,IAAqC;IAC5D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAC/B,MAAc,CAAC,MAAM,CAAC;QACrB,KAAK;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CACjB,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;QAClB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QACjC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;QACvC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QACjC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;KACxC,CAAC,EACF,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,IAAsC;IAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE;YACR,WAAW,EAAE,yEAAyE;YACtF,SAAS,EAAE,4EAA4E;YACvF,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC;YACpE,IAAI,EAAE,qEAAqE;SAC5E;QACD,MAAM,EAAE;YACN,cAAc,EAAE,kDAAkD;YAClE,QAAQ,EAAE,yBAAyB;YACnC,YAAY,EAAE,0BAA0B;YACxC,SAAS,EAAE,6CAA6C;YACxD,cAAc,EAAE,gDAAgD;SACjE;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,kCAAkC;YAC1C,GAAG,EAAE,4BAA4B;YACjC,MAAM,EAAE,kCAAkC;YAC1C,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,uCAAuC;SACrD;QACD,SAAS,EAAE;YACT,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAC7C,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;YAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;YACvB,IAAI,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC;YAClC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;SAC9B;QACD,SAAS,EAAE;YACT,WAAW,EAAE,yCAAyC;YACtD,WAAW,EAAE,6CAA6C;YAC1D,GAAG,EAAE,uFAAuF;YAC5F,UAAU,EAAE,mDAAmD;YAC/D,QAAQ,EAAE,+CAA+C;SAC1D;QACD,QAAQ,EAAE,WAAW;KACtB,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAA0B,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,YAAY,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,mGAAmG;IACrG,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AAEH,YAAY,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,4DAA4D;IACzE,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,UAAU;CACpB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared Parameters Operations
3
+ *
4
+ * Implements all MCP tools for managing shared parameters in Qase.
5
+ * Shared parameters are reusable parameters for data-driven testing.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=shared-parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-parameters.d.ts","sourceRoot":"","sources":["../../src/operations/shared-parameters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Shared Parameters Operations
3
+ *
4
+ * Implements all MCP tools for managing shared parameters in Qase.
5
+ * Shared parameters are reusable parameters for data-driven testing.
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
+ * Schema for listing shared parameters
17
+ */
18
+ const ListSharedParametersSchema = z.object({
19
+ limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
20
+ offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
21
+ });
22
+ /**
23
+ * Schema for getting a specific shared parameter
24
+ */
25
+ const GetSharedParameterSchema = z.object({
26
+ id: IdSchema,
27
+ });
28
+ /**
29
+ * Schema for creating a shared parameter
30
+ */
31
+ const CreateSharedParameterSchema = z.object({
32
+ title: z.string().min(1).max(255).describe('Shared parameter title'),
33
+ values: z.array(z.string()).min(1).describe('Array of parameter values'),
34
+ });
35
+ /**
36
+ * Schema for updating a shared parameter
37
+ */
38
+ const UpdateSharedParameterSchema = z.object({
39
+ id: IdSchema,
40
+ title: z.string().min(1).max(255).optional().describe('Shared parameter title'),
41
+ values: z.array(z.string()).min(1).optional().describe('Array of parameter values'),
42
+ });
43
+ /**
44
+ * Schema for deleting a shared parameter
45
+ */
46
+ const DeleteSharedParameterSchema = z.object({
47
+ id: IdSchema,
48
+ });
49
+ // ============================================================================
50
+ // HANDLERS
51
+ // ============================================================================
52
+ /**
53
+ * List all shared parameters
54
+ */
55
+ async function listSharedParameters(args) {
56
+ const client = getApiClient();
57
+ const { limit, offset } = args;
58
+ const result = await toResultAsync(client.parameters.getParameters(limit, offset));
59
+ return result.match((response) => response.data.result, (error) => {
60
+ throw new Error(error);
61
+ });
62
+ }
63
+ /**
64
+ * Get a specific shared parameter
65
+ */
66
+ async function getSharedParameter(args) {
67
+ const client = getApiClient();
68
+ const { id } = args;
69
+ const result = await toResultAsync(client.parameters.getParameter(id));
70
+ return result.match((response) => response.data.result, (error) => {
71
+ throw new Error(error);
72
+ });
73
+ }
74
+ /**
75
+ * Create a new shared parameter
76
+ */
77
+ async function createSharedParameter(args) {
78
+ const client = getApiClient();
79
+ const result = await toResultAsync(client.parameters.createParameter(args));
80
+ return result.match((response) => response.data.result, (error) => {
81
+ throw new Error(error);
82
+ });
83
+ }
84
+ /**
85
+ * Update an existing shared parameter
86
+ */
87
+ async function updateSharedParameter(args) {
88
+ const client = getApiClient();
89
+ const { id, ...updateData } = args;
90
+ const result = await toResultAsync(client.parameters.updateParameter(id, updateData));
91
+ return result.match((response) => response.data.result, (error) => {
92
+ throw new Error(error);
93
+ });
94
+ }
95
+ /**
96
+ * Delete a shared parameter
97
+ */
98
+ async function deleteSharedParameter(args) {
99
+ const client = getApiClient();
100
+ const { id } = args;
101
+ const result = await toResultAsync(client.parameters.deleteParameter(id));
102
+ return result.match((_response) => ({ success: true, id }), (error) => {
103
+ throw new Error(error);
104
+ });
105
+ }
106
+ // ============================================================================
107
+ // TOOL REGISTRATION
108
+ // ============================================================================
109
+ toolRegistry.register({
110
+ name: 'list_shared_parameters',
111
+ description: 'Get all shared parameters with optional pagination',
112
+ schema: ListSharedParametersSchema,
113
+ handler: listSharedParameters,
114
+ });
115
+ toolRegistry.register({
116
+ name: 'get_shared_parameter',
117
+ description: 'Get a specific shared parameter by ID',
118
+ schema: GetSharedParameterSchema,
119
+ handler: getSharedParameter,
120
+ });
121
+ toolRegistry.register({
122
+ name: 'create_shared_parameter',
123
+ description: 'Create a new shared parameter for data-driven testing',
124
+ schema: CreateSharedParameterSchema,
125
+ handler: createSharedParameter,
126
+ });
127
+ toolRegistry.register({
128
+ name: 'update_shared_parameter',
129
+ description: 'Update an existing shared parameter',
130
+ schema: UpdateSharedParameterSchema,
131
+ handler: updateSharedParameter,
132
+ });
133
+ toolRegistry.register({
134
+ name: 'delete_shared_parameter',
135
+ description: 'Delete a shared parameter',
136
+ schema: DeleteSharedParameterSchema,
137
+ handler: deleteSharedParameter,
138
+ });
139
+ //# sourceMappingURL=shared-parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-parameters.js","sourceRoot":"","sources":["../../src/operations/shared-parameters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared Steps Operations
3
+ *
4
+ * Implements all MCP tools for managing shared steps in Qase.
5
+ * Shared steps are reusable test steps that can be included in multiple test cases.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=shared-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-steps.d.ts","sourceRoot":"","sources":["../../src/operations/shared-steps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}