targetprocess-mcp-server 2.6.4 → 2.6.6
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/build/index.js +3 -5
- package/build/tp.js +19 -23
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -382,7 +382,6 @@ server.registerTool('create_bug_based_on_card', {
|
|
|
382
382
|
"Developer Raised",
|
|
383
383
|
"Operations",
|
|
384
384
|
])
|
|
385
|
-
.default("Manual QA")
|
|
386
385
|
.optional()
|
|
387
386
|
.describe('Where the bug was found, defaults to "Manual QA" if no origin was specified'),
|
|
388
387
|
projectId: z.string()
|
|
@@ -562,7 +561,6 @@ server.registerTool('create_bug', {
|
|
|
562
561
|
"Developer Raised",
|
|
563
562
|
"Operations",
|
|
564
563
|
])
|
|
565
|
-
.default("Manual QA")
|
|
566
564
|
.optional()
|
|
567
565
|
.describe('Where the bug was found, defaults to "Manual QA" if no origin was specified'),
|
|
568
566
|
projectId: z.string()
|
|
@@ -573,7 +571,7 @@ server.registerTool('create_bug', {
|
|
|
573
571
|
.describe('Optional Team ID — if user gave a team name, resolve it via "get_teams" first; defaults to TP_TEAM_ID from config'),
|
|
574
572
|
entityStateId: z.string()
|
|
575
573
|
.optional()
|
|
576
|
-
.describe('Optional Entity State ID — if user gave a state name, resolve it via "get_bug_workflows" first; defaults to "
|
|
574
|
+
.describe('Optional Entity State ID — if user gave a state name, resolve it via "get_bug_workflows" first; defaults to "Backlog" or "To Do"'),
|
|
577
575
|
tags: z.string()
|
|
578
576
|
.optional()
|
|
579
577
|
.describe('Optional comma-separated tags to apply, e.g. "regression, mobile"'),
|
|
@@ -724,7 +722,7 @@ server.registerTool('create_formatted_feature', {
|
|
|
724
722
|
- area "Information security (ISO 27001:2022 Annex A 5.8)" / requirement "What personal or sensitive data does this feature touch, and what protects its privacy, confidentiality, integrity and availability?";
|
|
725
723
|
- area "Quality control" / requirement "How will this feature's behaviour and failures be measured or tested, and what happens when it fails?";
|
|
726
724
|
- area "Service logging" / requirement "What events or states should be logged so product support can diagnose an issue without reproducing it manually?";
|
|
727
|
-
For each row, set status to "Covered" (storyOrOwner holds the specific answer, or the child story/scenario that proves it), "Gap" (no answer/story yet — storyOrOwner names who should follow up), or "Decision needed" (genuinely open, not answerable yet). If any of the four is unclear,
|
|
725
|
+
For each row, set status to "Covered" (storyOrOwner holds the specific answer, or the child story/scenario that proves it), "Gap" (no answer/story yet — storyOrOwner names who should follow up), or "Decision needed" (genuinely open, not answerable yet). If any of the four is unclear, follow-up owner in rather than guessing — he's the named escalation contact, not a mandatory sign-off gate. Additional NFR categories beyond these four (Compliance, Billing, Operational, etc.) can still be added as extra rows when relevant, using the same Covered/Gap/Decision-needed treatment;
|
|
728
726
|
5) Cross-Cutting Scenarios — ONLY for behavior spanning multiple child stories that wouldn't naturally sit in any one of them (e.g. tenant isolation across all stories); do not duplicate per-story Gherkin here; omit if none apply;
|
|
729
727
|
6) Child Stories ("childStories") — pull this from "get_feature_user_stories" / "get_not_covered_user_stories_in_feature" rather than retyping it; keep it as a live pointer, not a duplicate spec; normally empty when first creating the feature;
|
|
730
728
|
7) Open Questions / Risks ("openQuestions") — anything raised at feature conception that hasn't been resolved into either a Covered NFR row or a child story; this is the section most likely to get silently dropped — treat it as the running "not done yet" list until each line is promoted to a Covered NFR row;
|
|
@@ -776,7 +774,7 @@ server.registerTool('create_formatted_feature', {
|
|
|
776
774
|
.describe('If Covered, the child story ID/scenario that proves it; if Gap or Decision needed, who owns the follow-up (e.g. "Needs legal/BA follow-up")'),
|
|
777
775
|
}))
|
|
778
776
|
.min(1)
|
|
779
|
-
.describe('Every NFR category converted from prose into a testable/decided row — the core of this template. MUST include the four fixed rows required for ISO 27001:2022 audit evidence: "System performance", "Information security (ISO 27001:2022 Annex A 5.8)", "Quality control", and "Service logging" — worded exactly, each answered specifically for this feature (escalate unclear items to
|
|
777
|
+
.describe('Every NFR category converted from prose into a testable/decided row — the core of this template. MUST include the four fixed rows required for ISO 27001:2022 audit evidence: "System performance", "Information security (ISO 27001:2022 Annex A 5.8)", "Quality control", and "Service logging" — worded exactly, each answered specifically for this feature (escalate unclear items to story owner). Additional categories may be added beyond these four. Do not leave requirements as untested prose'),
|
|
780
778
|
crossCuttingScenarios: z.array(z.object({
|
|
781
779
|
name: z.string()
|
|
782
780
|
.describe('Scenario name'),
|
package/build/tp.js
CHANGED
|
@@ -186,17 +186,12 @@ export class TpClient {
|
|
|
186
186
|
});
|
|
187
187
|
return response;
|
|
188
188
|
}
|
|
189
|
-
async createBug({ title, card, bugContent, origin
|
|
189
|
+
async createBug({ title, card, bugContent, origin, projectId, teamId }) {
|
|
190
190
|
const bug = {
|
|
191
191
|
"Name": title,
|
|
192
192
|
"Project": {
|
|
193
193
|
"Id": projectId || config.tp.projectId
|
|
194
194
|
},
|
|
195
|
-
"customFields": [{
|
|
196
|
-
"name": "Origin",
|
|
197
|
-
"type": "DropDown",
|
|
198
|
-
"value": origin
|
|
199
|
-
}],
|
|
200
195
|
"assignedTeams": [{
|
|
201
196
|
"team": {
|
|
202
197
|
"id": teamId || config.tp.teamId
|
|
@@ -204,6 +199,14 @@ export class TpClient {
|
|
|
204
199
|
}],
|
|
205
200
|
"Description": bugContent,
|
|
206
201
|
};
|
|
202
|
+
console.error(origin);
|
|
203
|
+
if (origin) {
|
|
204
|
+
bug["customFields"] = [{
|
|
205
|
+
"name": "Origin",
|
|
206
|
+
"type": "DropDown",
|
|
207
|
+
"value": origin
|
|
208
|
+
}];
|
|
209
|
+
}
|
|
207
210
|
if (card.type === "UserStory") {
|
|
208
211
|
bug["UserStory"] = { "Id": card.id };
|
|
209
212
|
}
|
|
@@ -286,17 +289,12 @@ export class TpClient {
|
|
|
286
289
|
param: { "format": "json" },
|
|
287
290
|
}, bug);
|
|
288
291
|
}
|
|
289
|
-
async createBugOnly({ title, bugContent, origin
|
|
292
|
+
async createBugOnly({ title, bugContent, origin, projectId, teamId, entityStateId, tags, teamIterationId }) {
|
|
290
293
|
const bug = {
|
|
291
294
|
"Name": title,
|
|
292
295
|
"Project": {
|
|
293
296
|
"Id": projectId || config.tp.projectId
|
|
294
297
|
},
|
|
295
|
-
"customFields": [{
|
|
296
|
-
"name": "Origin",
|
|
297
|
-
"type": "DropDown",
|
|
298
|
-
"value": origin
|
|
299
|
-
}],
|
|
300
298
|
"assignedTeams": [{
|
|
301
299
|
"team": {
|
|
302
300
|
"id": teamId || config.tp.teamId
|
|
@@ -304,6 +302,13 @@ export class TpClient {
|
|
|
304
302
|
}],
|
|
305
303
|
"Description": bugContent,
|
|
306
304
|
};
|
|
305
|
+
if (origin) {
|
|
306
|
+
bug["customFields"] = [{
|
|
307
|
+
"name": "Origin",
|
|
308
|
+
"type": "DropDown",
|
|
309
|
+
"value": origin
|
|
310
|
+
}];
|
|
311
|
+
}
|
|
307
312
|
if (entityStateId)
|
|
308
313
|
bug["EntityState"] = { "Id": entityStateId };
|
|
309
314
|
if (tags)
|
|
@@ -437,17 +442,8 @@ export class TpClient {
|
|
|
437
442
|
async createBugBasedOnUserStory(title, userStoryId, bugContent) {
|
|
438
443
|
const bug = {
|
|
439
444
|
"Name": title,
|
|
440
|
-
"Project": {
|
|
441
|
-
|
|
442
|
-
},
|
|
443
|
-
"UserStory": {
|
|
444
|
-
"Id": userStoryId
|
|
445
|
-
},
|
|
446
|
-
"customFields": [{
|
|
447
|
-
"name": "Origin",
|
|
448
|
-
"type": "DropDown",
|
|
449
|
-
"value": "Manual QA"
|
|
450
|
-
}],
|
|
445
|
+
"Project": { "Id": config.tp.projectId },
|
|
446
|
+
"UserStory": { "Id": userStoryId },
|
|
451
447
|
"assignedTeams": [{
|
|
452
448
|
"team": {
|
|
453
449
|
"id": config.tp.teamId
|