@qase/mcp-server 2.1.1 → 2.2.0
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 +27 -0
- package/README.md +5 -4
- package/build/client/index.d.ts +2 -1
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +3 -1
- package/build/client/index.js.map +1 -1
- package/build/operations-v2/composites/ci-report.js +4 -1
- package/build/operations-v2/composites/ci-report.js.map +1 -1
- package/build/operations-v2/composites/triage-defect.js +4 -1
- package/build/operations-v2/composites/triage-defect.js.map +1 -1
- package/build/operations-v2/escape/api.js +2 -1
- package/build/operations-v2/escape/api.js.map +1 -1
- package/build/operations-v2/index.d.ts +1 -0
- package/build/operations-v2/index.d.ts.map +1 -1
- package/build/operations-v2/index.js +1 -0
- package/build/operations-v2/index.js.map +1 -1
- package/build/operations-v2/read/get.js +2 -0
- package/build/operations-v2/read/get.js.map +1 -1
- package/build/operations-v2/write/attachments.js +74 -16
- package/build/operations-v2/write/attachments.js.map +1 -1
- package/build/operations-v2/write/case-fields.d.ts.map +1 -1
- package/build/operations-v2/write/case-fields.js +8 -2
- package/build/operations-v2/write/case-fields.js.map +1 -1
- package/build/operations-v2/write/cases.js +3 -1
- package/build/operations-v2/write/cases.js.map +1 -1
- package/build/operations-v2/write/defects.js +4 -1
- package/build/operations-v2/write/defects.js.map +1 -1
- package/build/operations-v2/write/results.js +8 -2
- package/build/operations-v2/write/results.js.map +1 -1
- package/build/operations-v2/write/reviews.d.ts +15 -0
- package/build/operations-v2/write/reviews.d.ts.map +1 -0
- package/build/operations-v2/write/reviews.js +350 -0
- package/build/operations-v2/write/reviews.js.map +1 -0
- package/build/operations-v2/write/shared-steps.js +4 -1
- package/build/operations-v2/write/shared-steps.js.map +1 -1
- package/build/utils/output-schemas.d.ts +4 -0
- package/build/utils/output-schemas.d.ts.map +1 -1
- package/build/utils/output-schemas.js +51 -0
- package/build/utils/output-schemas.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/docs/migration.md +1 -1
- package/docs/tools.md +29 -12
- package/docs/troubleshooting.md +22 -0
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/operations-v2/write/results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/operations-v2/write/results.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Case Review Operations
|
|
3
|
+
*
|
|
4
|
+
* Reviews are the pull-request workflow for test cases: an author proposes a new
|
|
5
|
+
* case or a change to an existing one, reviewers approve or request changes, and
|
|
6
|
+
* merging applies the proposal.
|
|
7
|
+
*
|
|
8
|
+
* Scope note: the public API covers only the authoring side — create, read,
|
|
9
|
+
* update the proposal, assign reviewers, delete. Approving, requesting changes,
|
|
10
|
+
* merging, and declining have no API endpoints (they exist in the UI and emit
|
|
11
|
+
* webhooks), so no tool here can perform them. Every description says so; a tool
|
|
12
|
+
* that implied otherwise would report work it cannot do.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=reviews.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../../src/operations-v2/write/reviews.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Case Review Operations
|
|
3
|
+
*
|
|
4
|
+
* Reviews are the pull-request workflow for test cases: an author proposes a new
|
|
5
|
+
* case or a change to an existing one, reviewers approve or request changes, and
|
|
6
|
+
* merging applies the proposal.
|
|
7
|
+
*
|
|
8
|
+
* Scope note: the public API covers only the authoring side — create, read,
|
|
9
|
+
* update the proposal, assign reviewers, delete. Approving, requesting changes,
|
|
10
|
+
* merging, and declining have no API endpoints (they exist in the UI and emit
|
|
11
|
+
* webhooks), so no tool here can perform them. Every description says so; a tool
|
|
12
|
+
* that implied otherwise would report work it cannot do.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import { getApiClient } from '../../client/index.js';
|
|
16
|
+
import { toolRegistry, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, ReadAnnotation, } from '../../utils/registry.js';
|
|
17
|
+
import { toResultAsync, createToolError, ToolExecutionError } from '../../utils/errors.js';
|
|
18
|
+
import { ProjectCodeSchema, IdSchema } from '../../utils/validation.js';
|
|
19
|
+
import { normalizeCaseEnums } from '../../utils/case-enums.js';
|
|
20
|
+
import { CaseFieldsSchema, resolveSharedStepRefs } from './case-fields.js';
|
|
21
|
+
import { richResult, summaryBlock, dataBlock, markdownTable } from '../../utils/rich-response.js';
|
|
22
|
+
import { ReviewCreateOutput, ReviewUpdateOutput, ReviewListOutput, ReviewBulkCreateOutput, } from '../../utils/output-schemas.js';
|
|
23
|
+
/** Wording shared by every review tool, so the API's limits are never implied away. */
|
|
24
|
+
const NO_WORKFLOW_ACTIONS = 'The API has no endpoints for approving, requesting changes, merging, or declining — ' +
|
|
25
|
+
'those actions are only available in the Qase UI, so this tool cannot perform them. ' +
|
|
26
|
+
'Use qase_review_list or qase_get to read the current status.';
|
|
27
|
+
const REVIEW_MUST_BE_ENABLED = 'Requires "Test case review" to be enabled in the project settings.';
|
|
28
|
+
/**
|
|
29
|
+
* Case fields a review may propose. The names match qase_case_upsert, so a
|
|
30
|
+
* proposal is written the same way as an ordinary case — including enum labels
|
|
31
|
+
* ("high") and shared step references.
|
|
32
|
+
*/
|
|
33
|
+
const ProposedCaseSchema = CaseFieldsSchema.partial();
|
|
34
|
+
/** Reviewer identifiers: author UUIDs, or emails resolved to them. */
|
|
35
|
+
const ReviewersSchema = z
|
|
36
|
+
.array(z.string())
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Reviewers, as author UUIDs (see qase_get { entity: "author" }) or email addresses, ' +
|
|
39
|
+
'which are resolved to UUIDs. Note these are AUTHOR uuids, not user IDs. The review ' +
|
|
40
|
+
'author cannot review their own review: since the review is created by whoever owns the ' +
|
|
41
|
+
'API token, listing that person here fails with "cannot be a reviewer of their own ' +
|
|
42
|
+
'review". Leave the list empty to assign reviewers later in the UI.');
|
|
43
|
+
/**
|
|
44
|
+
* ReviewCaseData has no `automation` field — it carries is_manual /
|
|
45
|
+
* is_to_be_automated instead. (applyAutomationMapping, used for cases, emits the
|
|
46
|
+
* camelCase isManual/isToBeAutomated that the case endpoint takes, so it cannot
|
|
47
|
+
* be reused here: the value would be dropped.)
|
|
48
|
+
*/
|
|
49
|
+
function mapAutomation(proposed) {
|
|
50
|
+
const automation = proposed.automation;
|
|
51
|
+
if (typeof automation !== 'number') {
|
|
52
|
+
// Nothing to map; drop a non-numeric leftover so it cannot reach the API.
|
|
53
|
+
const { automation: _drop, ...rest } = proposed;
|
|
54
|
+
return automation === undefined ? proposed : rest;
|
|
55
|
+
}
|
|
56
|
+
const { automation: _drop, ...rest } = proposed;
|
|
57
|
+
switch (automation) {
|
|
58
|
+
case 2: // Automated
|
|
59
|
+
return { ...rest, is_manual: false, is_to_be_automated: false };
|
|
60
|
+
case 1: // To be automated
|
|
61
|
+
return { ...rest, is_manual: true, is_to_be_automated: true };
|
|
62
|
+
default: // Manual
|
|
63
|
+
return { ...rest, is_manual: true, is_to_be_automated: false };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Build the `proposed_case` payload from tool arguments. */
|
|
67
|
+
async function buildProposedCase(fields) {
|
|
68
|
+
const normalized = mapAutomation(await normalizeCaseEnums(fields));
|
|
69
|
+
if (normalized.steps !== undefined) {
|
|
70
|
+
normalized.steps = resolveSharedStepRefs(normalized.steps);
|
|
71
|
+
}
|
|
72
|
+
return normalized;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Turn emails into author UUIDs, leaving values that are already UUIDs alone.
|
|
76
|
+
* Without this the caller has to look up authors first, and mixing up user IDs
|
|
77
|
+
* with author UUIDs fails in a way that is hard to read.
|
|
78
|
+
*/
|
|
79
|
+
async function resolveReviewers(reviewers) {
|
|
80
|
+
if (!reviewers || reviewers.length === 0)
|
|
81
|
+
return reviewers;
|
|
82
|
+
const emails = reviewers.filter((r) => r.includes('@'));
|
|
83
|
+
if (emails.length === 0)
|
|
84
|
+
return reviewers;
|
|
85
|
+
const client = getApiClient();
|
|
86
|
+
const resolved = new Map();
|
|
87
|
+
for (const email of emails) {
|
|
88
|
+
const res = await toResultAsync(client.authors.getAuthors(email, undefined, 100, 0));
|
|
89
|
+
const uuid = res.match((r) => {
|
|
90
|
+
const match = (r.data.result?.entities ?? []).find((a) => a.email?.toLowerCase() === email.toLowerCase());
|
|
91
|
+
return match?.uuid;
|
|
92
|
+
}, () => undefined);
|
|
93
|
+
if (!uuid) {
|
|
94
|
+
throw new ToolExecutionError(`No author found for "${email}".`, 'Check the address, or pass the author UUID directly — list them with ' +
|
|
95
|
+
'qase_get { entity: "author", id: ... } or the /author endpoint via qase_api.');
|
|
96
|
+
}
|
|
97
|
+
resolved.set(email, uuid);
|
|
98
|
+
}
|
|
99
|
+
return reviewers.map((r) => resolved.get(r) ?? r);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Every review endpoint fails outright when the feature is off for the project,
|
|
103
|
+
* and the API's wording does not point at the setting. Attach that hint to the
|
|
104
|
+
* failures where it plausibly applies.
|
|
105
|
+
*
|
|
106
|
+
* `error` arrives already formatted by toResultAsync/formatApiError — a string
|
|
107
|
+
* prefixed per status ("Invalid request: ...", "Access forbidden: ...") — so the
|
|
108
|
+
* check is on that text, not on a response object.
|
|
109
|
+
*/
|
|
110
|
+
function reviewError(error, operation) {
|
|
111
|
+
const message = createToolError(error, operation).message;
|
|
112
|
+
// The author of a review cannot review it, and the review is authored by
|
|
113
|
+
// whoever owns the API token — so this is hit by simply passing your own
|
|
114
|
+
// address. Say what to do instead of leaving the raw validation error.
|
|
115
|
+
if (/cannot be a reviewer of their own review/i.test(error)) {
|
|
116
|
+
throw new ToolExecutionError(message, 'A review cannot be reviewed by its author, and the review is created by the owner of ' +
|
|
117
|
+
'the API token — so that person cannot appear in `reviewers`. Pass somebody else, or ' +
|
|
118
|
+
'omit `reviewers` and assign them in the UI.');
|
|
119
|
+
}
|
|
120
|
+
// Match the feature-disabled case narrowly: a plain 400/403 with nothing more
|
|
121
|
+
// specific to say. Testing for "review" anywhere in the text would attach this
|
|
122
|
+
// hint to unrelated validation errors that merely mention reviews.
|
|
123
|
+
const looksLikeFeatureOff = (error.startsWith('Invalid request:') || error.startsWith('Access forbidden:')) &&
|
|
124
|
+
!/reviewer|title|proposed_case|not found/i.test(error);
|
|
125
|
+
if (looksLikeFeatureOff || /review.{0,20}(disabled|not enabled|turned off)/i.test(error)) {
|
|
126
|
+
throw new ToolExecutionError(message, `${REVIEW_MUST_BE_ENABLED} Check Project settings → Test case review if this persists.`);
|
|
127
|
+
}
|
|
128
|
+
throw createToolError(error, operation);
|
|
129
|
+
}
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// SCHEMAS
|
|
132
|
+
// ============================================================================
|
|
133
|
+
const CreateSchema = z.object({
|
|
134
|
+
code: ProjectCodeSchema,
|
|
135
|
+
case_id: IdSchema.optional().describe('Test case to propose changes to. With it, an "edit" review is created and only the ' +
|
|
136
|
+
'fields being changed need to be sent. Without it, a "create" review is opened for a ' +
|
|
137
|
+
'brand-new case draft and `title` is required.'),
|
|
138
|
+
reviewers: ReviewersSchema,
|
|
139
|
+
...ProposedCaseSchema.shape,
|
|
140
|
+
});
|
|
141
|
+
const UpdateSchema = z.object({
|
|
142
|
+
code: ProjectCodeSchema,
|
|
143
|
+
id: IdSchema.describe('Review ID'),
|
|
144
|
+
reviewers: ReviewersSchema.describe('Replaces the current reviewer list; an empty array removes everyone. Omit to leave it ' +
|
|
145
|
+
'unchanged. Author UUIDs or emails. Changing ONLY reviewers keeps existing approvals.'),
|
|
146
|
+
...ProposedCaseSchema.shape,
|
|
147
|
+
});
|
|
148
|
+
const ListSchema = z.object({
|
|
149
|
+
code: ProjectCodeSchema,
|
|
150
|
+
status: z.enum(['open', 'merged', 'declined']).optional(),
|
|
151
|
+
type: z
|
|
152
|
+
.enum(['create', 'edit'])
|
|
153
|
+
.optional()
|
|
154
|
+
.describe('"create" proposes a new case, "edit" proposes changes to an existing one'),
|
|
155
|
+
case_id: IdSchema.optional().describe('Only reviews of this test case'),
|
|
156
|
+
author_uuid: z.string().optional().describe('Only reviews opened by this author UUID'),
|
|
157
|
+
reviewer_uuid: z.string().optional().describe('Only reviews this author UUID is a reviewer on'),
|
|
158
|
+
search: z.string().optional().describe('Substring match on the review title'),
|
|
159
|
+
limit: z.number().int().positive().max(100).optional().describe('Default 25, max 100'),
|
|
160
|
+
offset: z.number().int().nonnegative().optional(),
|
|
161
|
+
});
|
|
162
|
+
const GetIdSchema = z.object({
|
|
163
|
+
code: ProjectCodeSchema,
|
|
164
|
+
id: IdSchema.describe('Review ID'),
|
|
165
|
+
});
|
|
166
|
+
const BulkCreateSchema = z.object({
|
|
167
|
+
code: ProjectCodeSchema,
|
|
168
|
+
reviews: z
|
|
169
|
+
.array(z.object({
|
|
170
|
+
case_id: IdSchema.optional().describe('Omit for a new-case draft ("create" review)'),
|
|
171
|
+
reviewers: ReviewersSchema,
|
|
172
|
+
...ProposedCaseSchema.shape,
|
|
173
|
+
}))
|
|
174
|
+
.min(1)
|
|
175
|
+
.describe('Reviews to open. Validated as a whole: if any item is invalid, NOTHING is created. ' +
|
|
176
|
+
'Once valid, each item is processed individually and reported separately.'),
|
|
177
|
+
});
|
|
178
|
+
// ============================================================================
|
|
179
|
+
// HANDLERS
|
|
180
|
+
// ============================================================================
|
|
181
|
+
async function create(args) {
|
|
182
|
+
const client = getApiClient();
|
|
183
|
+
const { code, case_id, reviewers, ...fields } = args;
|
|
184
|
+
if (case_id === undefined && !fields.title) {
|
|
185
|
+
throw new ToolExecutionError('A "create" review needs a title.', 'Pass `title` (plus any other fields the project requires) for a new-case draft, or ' +
|
|
186
|
+
'pass `case_id` to propose changes to an existing case instead.');
|
|
187
|
+
}
|
|
188
|
+
const proposed_case = await buildProposedCase(fields);
|
|
189
|
+
const payload = {
|
|
190
|
+
proposed_case,
|
|
191
|
+
...(case_id !== undefined && { case_id }),
|
|
192
|
+
...(reviewers && { reviewers: await resolveReviewers(reviewers) }),
|
|
193
|
+
};
|
|
194
|
+
const result = await toResultAsync(client.reviews.createReview(code, payload));
|
|
195
|
+
return result.match((r) => {
|
|
196
|
+
const id = r.data.result?.id;
|
|
197
|
+
return {
|
|
198
|
+
review_id: id,
|
|
199
|
+
type: case_id === undefined ? 'create' : 'edit',
|
|
200
|
+
case_id: case_id ?? null,
|
|
201
|
+
status: 'open',
|
|
202
|
+
};
|
|
203
|
+
}, (e) => reviewError(e, 'review creation'));
|
|
204
|
+
}
|
|
205
|
+
async function update(args) {
|
|
206
|
+
const client = getApiClient();
|
|
207
|
+
const { code, id, reviewers, ...fields } = args;
|
|
208
|
+
const hasProposalChange = Object.keys(fields).length > 0;
|
|
209
|
+
if (!hasProposalChange && !reviewers) {
|
|
210
|
+
throw new ToolExecutionError('Nothing to update.', 'Pass case fields to change the proposal, or `reviewers` to reassign it.');
|
|
211
|
+
}
|
|
212
|
+
const payload = {};
|
|
213
|
+
if (hasProposalChange)
|
|
214
|
+
payload.proposed_case = await buildProposedCase(fields);
|
|
215
|
+
if (reviewers)
|
|
216
|
+
payload.reviewers = await resolveReviewers(reviewers);
|
|
217
|
+
const result = await toResultAsync(client.reviews.updateReview(code, id, payload));
|
|
218
|
+
return result.match(() => ({
|
|
219
|
+
review_id: id,
|
|
220
|
+
updated: Object.keys(payload),
|
|
221
|
+
// Surfaced because it is easy to reset approvals without meaning to.
|
|
222
|
+
approvals_reset: hasProposalChange,
|
|
223
|
+
}), (e) => reviewError(e, 'review update'));
|
|
224
|
+
}
|
|
225
|
+
async function list(args) {
|
|
226
|
+
const client = getApiClient();
|
|
227
|
+
const { code, status, type, case_id, author_uuid, reviewer_uuid, search, limit, offset } = args;
|
|
228
|
+
const result = await toResultAsync(client.reviews.getReviews(code, status, type, case_id, author_uuid, reviewer_uuid, search, limit ?? 25, offset ?? 0));
|
|
229
|
+
return result.match((r) => {
|
|
230
|
+
const res = r.data.result;
|
|
231
|
+
const entities = res?.entities ?? [];
|
|
232
|
+
const total = res?.total ?? entities.length;
|
|
233
|
+
const lines = [`Found **${total}** reviews (showing ${entities.length})`];
|
|
234
|
+
if (entities.length > 0) {
|
|
235
|
+
const rows = entities.map((rev) => [
|
|
236
|
+
String(rev.id ?? '?'),
|
|
237
|
+
(rev.title || '-').substring(0, 50),
|
|
238
|
+
String(rev.type ?? '-'),
|
|
239
|
+
String(rev.status ?? '-'),
|
|
240
|
+
rev.case_id ? `#${rev.case_id}` : '-',
|
|
241
|
+
String((rev.reviewers ?? []).length),
|
|
242
|
+
]);
|
|
243
|
+
lines.push('', markdownTable(['ID', 'Title', 'Type', 'Status', 'Case', 'Reviewers'], rows));
|
|
244
|
+
}
|
|
245
|
+
if (entities.length < total) {
|
|
246
|
+
lines.push('', `_Showing ${entities.length} of ${total} — page with limit/offset._`);
|
|
247
|
+
}
|
|
248
|
+
const structured = { total, returned: entities.length, entities };
|
|
249
|
+
return richResult([summaryBlock(lines.join('\n')), dataBlock(structured)], structured);
|
|
250
|
+
}, (e) => reviewError(e, 'review list'));
|
|
251
|
+
}
|
|
252
|
+
async function del(args) {
|
|
253
|
+
const client = getApiClient();
|
|
254
|
+
const result = await toResultAsync(client.reviews.deleteReview(args.code, args.id));
|
|
255
|
+
return result.match(() => ({ success: true, review_id: args.id }), (e) => reviewError(e, 'review deletion'));
|
|
256
|
+
}
|
|
257
|
+
async function bulkCreate(args) {
|
|
258
|
+
const client = getApiClient();
|
|
259
|
+
const { code, reviews } = args;
|
|
260
|
+
const prepared = [];
|
|
261
|
+
for (const { case_id, reviewers, ...fields } of reviews) {
|
|
262
|
+
if (case_id === undefined && !fields.title) {
|
|
263
|
+
throw new ToolExecutionError('Every "create" review in the batch needs a title.', 'Add `title` to each item without a `case_id`. Nothing was sent — the API validates ' +
|
|
264
|
+
'the whole batch, so one invalid item would reject all of them anyway.');
|
|
265
|
+
}
|
|
266
|
+
prepared.push({
|
|
267
|
+
proposed_case: await buildProposedCase(fields),
|
|
268
|
+
...(case_id !== undefined && { case_id }),
|
|
269
|
+
...(reviewers && { reviewers: await resolveReviewers(reviewers) }),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const result = await toResultAsync(client.reviews.bulkCreateReviews(code, { reviews: prepared }));
|
|
273
|
+
return result.match((r) => {
|
|
274
|
+
// The API nests the results as items[].review_id, while the single-create
|
|
275
|
+
// tool returns review_id at the top level. Surface a flat list of IDs so a
|
|
276
|
+
// caller does not have to know the difference to find what it just created.
|
|
277
|
+
const raw = r.data.result;
|
|
278
|
+
const items = raw?.items ?? [];
|
|
279
|
+
const review_ids = items
|
|
280
|
+
.map((item) => item?.review_id ?? item?.id)
|
|
281
|
+
.filter((id) => typeof id === 'number');
|
|
282
|
+
const lines = [`Opened **${review_ids.length}** of ${reviews.length} reviews`];
|
|
283
|
+
if (review_ids.length > 0) {
|
|
284
|
+
lines.push('', ...review_ids.map((id, i) => `- **#${id}** ${reviews[i]?.title ?? ''}`.trimEnd()));
|
|
285
|
+
}
|
|
286
|
+
if (review_ids.length < reviews.length) {
|
|
287
|
+
lines.push('', `_${reviews.length - review_ids.length} item(s) returned no ID — see \`items\` for what the API reported._`);
|
|
288
|
+
}
|
|
289
|
+
const structured = { created: review_ids.length, review_ids, items };
|
|
290
|
+
return richResult([summaryBlock(lines.join('\n')), dataBlock(structured)], structured);
|
|
291
|
+
}, (e) => reviewError(e, 'bulk review creation'));
|
|
292
|
+
}
|
|
293
|
+
// ============================================================================
|
|
294
|
+
// TOOL REGISTRATION
|
|
295
|
+
// ============================================================================
|
|
296
|
+
toolRegistry.register({
|
|
297
|
+
name: 'qase_review_create',
|
|
298
|
+
description: 'Open a test case review — the pull-request flow for test cases. Pass `case_id` to propose ' +
|
|
299
|
+
'changes to an existing case ("edit" review, send only the fields that change); omit it to ' +
|
|
300
|
+
'propose a brand-new case ("create" review, `title` required). Case fields are named and ' +
|
|
301
|
+
`normalised exactly as in qase_case_upsert. ${REVIEW_MUST_BE_ENABLED} ${NO_WORKFLOW_ACTIONS}`,
|
|
302
|
+
schema: CreateSchema,
|
|
303
|
+
handler: create,
|
|
304
|
+
annotations: CreateAnnotation,
|
|
305
|
+
outputSchema: ReviewCreateOutput,
|
|
306
|
+
visibility: 'discoverable',
|
|
307
|
+
});
|
|
308
|
+
toolRegistry.register({
|
|
309
|
+
name: 'qase_review_update',
|
|
310
|
+
description: 'Update an open review: change the proposed case fields, reassign reviewers, or both. ' +
|
|
311
|
+
'IMPORTANT: changing the proposal RESETS every approval already given; updating only ' +
|
|
312
|
+
`\`reviewers\` keeps them. ${NO_WORKFLOW_ACTIONS}`,
|
|
313
|
+
schema: UpdateSchema,
|
|
314
|
+
handler: update,
|
|
315
|
+
annotations: UpdateAnnotation,
|
|
316
|
+
outputSchema: ReviewUpdateOutput,
|
|
317
|
+
visibility: 'discoverable',
|
|
318
|
+
});
|
|
319
|
+
toolRegistry.register({
|
|
320
|
+
name: 'qase_review_list',
|
|
321
|
+
description: 'List test case reviews, filtered by status, type, reviewed case, author, reviewer, or ' +
|
|
322
|
+
'title. Reports the total alongside what was returned, so a partial page is visible. ' +
|
|
323
|
+
'This is how to read review and per-reviewer approval status — QQL has no review entity.',
|
|
324
|
+
schema: ListSchema,
|
|
325
|
+
handler: list,
|
|
326
|
+
annotations: ReadAnnotation,
|
|
327
|
+
outputSchema: ReviewListOutput,
|
|
328
|
+
visibility: 'discoverable',
|
|
329
|
+
});
|
|
330
|
+
toolRegistry.register({
|
|
331
|
+
name: 'qase_review_delete',
|
|
332
|
+
description: 'Delete a review by ID. Merged reviews cannot be deleted. This removes the proposal ' +
|
|
333
|
+
'entirely; it does not decline it — declining is UI-only.',
|
|
334
|
+
schema: GetIdSchema,
|
|
335
|
+
handler: del,
|
|
336
|
+
annotations: DeleteAnnotation,
|
|
337
|
+
visibility: 'discoverable',
|
|
338
|
+
});
|
|
339
|
+
toolRegistry.register({
|
|
340
|
+
name: 'qase_review_bulk_create',
|
|
341
|
+
description: 'Open several reviews in one request. The batch is validated as a whole — if any item is ' +
|
|
342
|
+
'invalid, nothing is created — then each item is processed and reported individually. ' +
|
|
343
|
+
`${REVIEW_MUST_BE_ENABLED} ${NO_WORKFLOW_ACTIONS}`,
|
|
344
|
+
schema: BulkCreateSchema,
|
|
345
|
+
handler: bulkCreate,
|
|
346
|
+
annotations: CreateAnnotation,
|
|
347
|
+
outputSchema: ReviewBulkCreateOutput,
|
|
348
|
+
visibility: 'discoverable',
|
|
349
|
+
});
|
|
350
|
+
//# sourceMappingURL=reviews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../../src/operations-v2/write/reviews.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,10 @@ const StepContentSchema = z.object({
|
|
|
7
7
|
action: z.string().describe('Step action description'),
|
|
8
8
|
expected_result: z.string().optional().describe('Expected result'),
|
|
9
9
|
data: z.string().optional().describe('Test data'),
|
|
10
|
-
attachments: z
|
|
10
|
+
attachments: z
|
|
11
|
+
.array(z.string())
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Attachment hashes from qase_attachment_upload'),
|
|
11
14
|
});
|
|
12
15
|
const UpsertSchema = z.object({
|
|
13
16
|
code: ProjectCodeSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-steps.js","sourceRoot":"","sources":["../../../src/operations-v2/write/shared-steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACjD,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"shared-steps.js","sourceRoot":"","sources":["../../../src/operations-v2/write/shared-steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,10 @@ export declare const RegressionRunOutput: OutputSchema;
|
|
|
11
11
|
export declare const TriageDefectOutput: OutputSchema;
|
|
12
12
|
export declare const QqlSearchOutput: OutputSchema;
|
|
13
13
|
export declare const ProjectContextOutput: OutputSchema;
|
|
14
|
+
export declare const ReviewCreateOutput: OutputSchema;
|
|
15
|
+
export declare const ReviewUpdateOutput: OutputSchema;
|
|
16
|
+
export declare const ReviewListOutput: OutputSchema;
|
|
17
|
+
export declare const ReviewBulkCreateOutput: OutputSchema;
|
|
14
18
|
export declare const DeleteOutput: OutputSchema;
|
|
15
19
|
export declare const DiscoverToolsOutput: OutputSchema;
|
|
16
20
|
//# sourceMappingURL=output-schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,YAQ5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAOhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAO7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAkBlC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAO1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAkBjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,YAQ5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAOhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAO7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAkBlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAYhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAgBhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAQ9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAapC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAO1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAkBjC,CAAC"}
|
|
@@ -57,6 +57,57 @@ export const ProjectContextOutput = {
|
|
|
57
57
|
},
|
|
58
58
|
required: ['project', 'suites', 'milestones', 'environments', 'coverage'],
|
|
59
59
|
};
|
|
60
|
+
export const ReviewCreateOutput = {
|
|
61
|
+
type: 'object',
|
|
62
|
+
properties: {
|
|
63
|
+
review_id: { type: 'integer', description: 'Created review ID' },
|
|
64
|
+
type: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
description: '"create" for a new-case draft, "edit" when case_id was given',
|
|
67
|
+
},
|
|
68
|
+
case_id: { type: ['integer', 'null'], description: 'Reviewed case, null for a create review' },
|
|
69
|
+
status: { type: 'string', description: 'Always "open" for a freshly created review' },
|
|
70
|
+
},
|
|
71
|
+
required: ['review_id', 'type'],
|
|
72
|
+
};
|
|
73
|
+
export const ReviewUpdateOutput = {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
review_id: { type: 'integer' },
|
|
77
|
+
updated: {
|
|
78
|
+
type: 'array',
|
|
79
|
+
items: { type: 'string' },
|
|
80
|
+
description: 'Which parts were sent: "proposed_case", "reviewers", or both',
|
|
81
|
+
},
|
|
82
|
+
approvals_reset: {
|
|
83
|
+
type: 'boolean',
|
|
84
|
+
description: 'True when the proposal changed, which clears every approval already given. False when only reviewers changed.',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ['review_id', 'approvals_reset'],
|
|
88
|
+
};
|
|
89
|
+
export const ReviewListOutput = {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
total: { type: 'integer', description: 'Reviews matching the filters' },
|
|
93
|
+
returned: { type: 'integer', description: 'Reviews in this response — page for the rest' },
|
|
94
|
+
entities: { type: 'array', items: { type: 'object' }, description: 'The reviews' },
|
|
95
|
+
},
|
|
96
|
+
required: ['total', 'returned', 'entities'],
|
|
97
|
+
};
|
|
98
|
+
export const ReviewBulkCreateOutput = {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
created: { type: 'integer', description: 'How many reviews were opened' },
|
|
102
|
+
review_ids: {
|
|
103
|
+
type: 'array',
|
|
104
|
+
items: { type: 'integer' },
|
|
105
|
+
description: "IDs of the created reviews, in request order. Flattened from the API's items[].review_id so it matches qase_review_create.",
|
|
106
|
+
},
|
|
107
|
+
items: { type: 'array', items: { type: 'object' }, description: 'Raw per-item API result' },
|
|
108
|
+
},
|
|
109
|
+
required: ['created', 'review_ids'],
|
|
110
|
+
};
|
|
60
111
|
export const DeleteOutput = {
|
|
61
112
|
type: 'object',
|
|
62
113
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schemas.js","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"output-schemas.js","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"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"}
|
package/build/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "2.
|
|
1
|
+
export declare const VERSION = "2.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/version.js
CHANGED
package/docs/migration.md
CHANGED
|
@@ -183,7 +183,7 @@ All 83 v1 tools mapped to their v2 equivalents.
|
|
|
183
183
|
|---|---|---|
|
|
184
184
|
| `list_attachments` | `qase_api` | Use escape hatch: `GET /attachment` |
|
|
185
185
|
| `get_attachment` | `qase_get` with `entity="attachment"` | Pass hash as `id` |
|
|
186
|
-
| `upload_attachment` | `qase_attachment_upload` |
|
|
186
|
+
| `upload_attachment` | `qase_attachment_upload` | Pass `file_base64` (or `file_path` for a server running locally). The single `file` argument still works but is deprecated |
|
|
187
187
|
| `delete_attachment` | `qase_attachment_delete` | — |
|
|
188
188
|
|
|
189
189
|
### Authors
|