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 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 "Done"'),
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, name Dave Sykes as the follow-up owner in storyOrOwner 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;
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 Dave Sykes via storyOrOwner). Additional categories may be added beyond these four. Do not leave requirements as untested prose'),
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 = "Manual QA", projectId, teamId }) {
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 = "Manual QA", projectId, teamId, entityStateId, tags, teamIterationId }) {
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
- "Id": config.tp.projectId
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
package/package.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "engines": {
28
28
  "node": ">=20.x"
29
29
  },
30
- "version": "2.6.4",
30
+ "version": "2.6.6",
31
31
  "description": "MCP server for Tartget Process",
32
32
  "main": "build/index.js",
33
33
  "keywords": [