@provartesting/provardx-cli 1.5.0 → 1.5.2

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 (78) hide show
  1. package/lib/mcp/docs/PROVAR_TOOL_GUIDE.md +18 -6
  2. package/lib/mcp/prompts/guidePrompts.js +21 -11
  3. package/lib/mcp/prompts/guidePrompts.js.map +1 -1
  4. package/lib/mcp/server.d.ts +1 -0
  5. package/lib/mcp/server.js +90 -21
  6. package/lib/mcp/server.js.map +1 -1
  7. package/lib/mcp/tools/antTools.d.ts +20 -0
  8. package/lib/mcp/tools/antTools.js +105 -41
  9. package/lib/mcp/tools/antTools.js.map +1 -1
  10. package/lib/mcp/tools/automationTools.js +65 -35
  11. package/lib/mcp/tools/automationTools.js.map +1 -1
  12. package/lib/mcp/tools/connectionTools.js +100 -30
  13. package/lib/mcp/tools/connectionTools.js.map +1 -1
  14. package/lib/mcp/tools/defectTools.js +12 -7
  15. package/lib/mcp/tools/defectTools.js.map +1 -1
  16. package/lib/mcp/tools/descHelper.d.ts +5 -0
  17. package/lib/mcp/tools/descHelper.js +14 -0
  18. package/lib/mcp/tools/descHelper.js.map +1 -0
  19. package/lib/mcp/tools/nitroXTools.js +72 -32
  20. package/lib/mcp/tools/nitroXTools.js.map +1 -1
  21. package/lib/mcp/tools/orgDescribeTools.d.ts +57 -0
  22. package/lib/mcp/tools/orgDescribeTools.js +329 -0
  23. package/lib/mcp/tools/orgDescribeTools.js.map +1 -0
  24. package/lib/mcp/tools/pageObjectGenerate.js +33 -15
  25. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  26. package/lib/mcp/tools/pageObjectValidate.js +11 -4
  27. package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
  28. package/lib/mcp/tools/projectInspect.js +31 -5
  29. package/lib/mcp/tools/projectInspect.js.map +1 -1
  30. package/lib/mcp/tools/projectValidateFromPath.js +128 -22
  31. package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
  32. package/lib/mcp/tools/propertiesTools.d.ts +12 -0
  33. package/lib/mcp/tools/propertiesTools.js +155 -17
  34. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  35. package/lib/mcp/tools/qualityHubApiTools.js +8 -7
  36. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -1
  37. package/lib/mcp/tools/qualityHubTools.js +108 -37
  38. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  39. package/lib/mcp/tools/rcaTools.d.ts +17 -0
  40. package/lib/mcp/tools/rcaTools.js +69 -15
  41. package/lib/mcp/tools/rcaTools.js.map +1 -1
  42. package/lib/mcp/tools/testCaseGenerate.d.ts +1 -0
  43. package/lib/mcp/tools/testCaseGenerate.js +116 -13
  44. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  45. package/lib/mcp/tools/testCaseStepTools.js +27 -9
  46. package/lib/mcp/tools/testCaseStepTools.js.map +1 -1
  47. package/lib/mcp/tools/testCaseValidate.d.ts +14 -1
  48. package/lib/mcp/tools/testCaseValidate.js +190 -69
  49. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  50. package/lib/mcp/tools/testPlanTools.js +43 -26
  51. package/lib/mcp/tools/testPlanTools.js.map +1 -1
  52. package/lib/mcp/tools/testPlanValidate.js +64 -11
  53. package/lib/mcp/tools/testPlanValidate.js.map +1 -1
  54. package/lib/mcp/tools/testSuiteValidate.js +99 -10
  55. package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
  56. package/lib/mcp/utils/detailLevel.d.ts +9 -0
  57. package/lib/mcp/utils/detailLevel.js +20 -0
  58. package/lib/mcp/utils/detailLevel.js.map +1 -0
  59. package/lib/mcp/utils/fieldMask.d.ts +17 -0
  60. package/lib/mcp/utils/fieldMask.js +75 -0
  61. package/lib/mcp/utils/fieldMask.js.map +1 -0
  62. package/lib/mcp/utils/testCasePlanMode.d.ts +41 -0
  63. package/lib/mcp/utils/testCasePlanMode.js +208 -0
  64. package/lib/mcp/utils/testCasePlanMode.js.map +1 -0
  65. package/lib/mcp/utils/tokenMeta.d.ts +40 -0
  66. package/lib/mcp/utils/tokenMeta.js +90 -0
  67. package/lib/mcp/utils/tokenMeta.js.map +1 -0
  68. package/lib/mcp/utils/validationDiff.d.ts +57 -0
  69. package/lib/mcp/utils/validationDiff.js +191 -0
  70. package/lib/mcp/utils/validationDiff.js.map +1 -0
  71. package/lib/mcp/utils/validationScore.d.ts +15 -0
  72. package/lib/mcp/utils/validationScore.js +31 -0
  73. package/lib/mcp/utils/validationScore.js.map +1 -0
  74. package/lib/mcp/utils/warningCodes.d.ts +10 -0
  75. package/lib/mcp/utils/warningCodes.js +19 -0
  76. package/lib/mcp/utils/warningCodes.js.map +1 -0
  77. package/oclif.manifest.json +1 -1
  78. package/package.json +13 -1
@@ -10,6 +10,7 @@ import { makeError, makeRequestId } from '../schemas/common.js';
10
10
  import { log } from '../logging/logger.js';
11
11
  import { credentialsService } from '../../services/auth/credentials.js';
12
12
  import { qualityHubClient, getQualityHubBaseUrl, QualityHubAuthError, QualityHubRateLimitError, REQUEST_ACCESS_URL, } from '../../services/qualityHub/client.js';
13
+ import { desc } from './descHelper.js';
13
14
  const CORPUS_FALLBACK_HINT = 'Fallback: read the provar://docs/step-reference MCP resource for step types and attribute formats, then continue.';
14
15
  const CORPUS_ONBOARDING_WARNING = 'Corpus retrieval skipped — no Provar API key configured. Continuing without example grounding.\n' +
15
16
  'To enable corpus retrieval: run sf provar auth login\n' +
@@ -27,7 +28,7 @@ const CORPUS_UNREACHABLE_WARNING = 'Corpus retrieval skipped — API unreachable
27
28
  export function registerCorpusExamplesRetrieve(server) {
28
29
  server.registerTool('provar_qualityhub_examples_retrieve', {
29
30
  title: 'Retrieve Corpus Examples',
30
- description: [
31
+ description: desc([
31
32
  'Retrieve N similar Provar test case examples from the Quality Hub corpus (1000+ tests in Bedrock KB).',
32
33
  'Use this BEFORE writing any Provar .testcase XML — whether via provar_testcase_generate, Write, or Edit.',
33
34
  'Pass a user story, requirement, source test file content, or step type keywords as the query.',
@@ -40,13 +41,13 @@ export function registerCorpusExamplesRetrieve(server) {
40
41
  'then include key field names in your query (e.g. "Opportunity: CloseDate, Amount, StageName").',
41
42
  '',
42
43
  'Requires a Provar API key (sf provar auth login). Without a key, returns empty examples with onboarding instructions.',
43
- ].join('\n'),
44
+ ].join('\n'), 'Retrieve similar Provar test case examples from the Quality Hub corpus.'),
44
45
  inputSchema: {
45
46
  query: z
46
47
  .string()
47
- .describe('Text to search against the corpus — a user story, requirement description, or source test file content. ' +
48
+ .describe(desc('Text to search against the corpus — a user story, requirement description, or source test file content. ' +
48
49
  'Longer is better: include Salesforce object names, field names, and action descriptions. ' +
49
- 'Truncated server-side at 2000 characters.'),
50
+ 'Truncated server-side at 2000 characters.', 'string, user story or requirement text; include SF object/field names')),
50
51
  n: z
51
52
  .number()
52
53
  .int()
@@ -54,16 +55,16 @@ export function registerCorpusExamplesRetrieve(server) {
54
55
  .max(10)
55
56
  .optional()
56
57
  .default(5)
57
- .describe('Number of examples to return. Default 5, max 10.'),
58
+ .describe(desc('Number of examples to return. Default 5, max 10.', 'int 1–10, optional; examples to return')),
58
59
  app_filter: z
59
60
  .string()
60
61
  .optional()
61
- .describe('Optional Salesforce cloud filter to bias results (e.g. "SalesCloud", "ServiceCloud", "HealthCloud").'),
62
+ .describe(desc('Optional Salesforce cloud filter to bias results (e.g. "SalesCloud", "ServiceCloud", "HealthCloud").', 'string, optional; SF cloud filter e.g. SalesCloud')),
62
63
  prefer_high_quality: z
63
64
  .boolean()
64
65
  .optional()
65
66
  .default(true)
66
- .describe('When true (default), favours tier4/tier3 corpus examples. Set false to include all tiers.'),
67
+ .describe(desc('When true (default), favours tier4/tier3 corpus examples. Set false to include all tiers.', 'bool, optional; default true, prefer high-quality corpus examples')),
67
68
  },
68
69
  }, async ({ query, n, app_filter, prefer_high_quality }) => {
69
70
  const requestId = makeRequestId();
@@ -1 +1 @@
1
- {"version":3,"file":"qualityHubApiTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubApiTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qualityHubApiTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubApiTools.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,10 @@
8
8
  import { z } from 'zod';
9
9
  import { makeError, makeRequestId } from '../schemas/common.js';
10
10
  import { log } from '../logging/logger.js';
11
+ import { applyDetailLevel } from '../utils/detailLevel.js';
12
+ import { maskFields, parseFieldsParam } from '../utils/fieldMask.js';
11
13
  import { runSfCommand } from './sfSpawn.js';
14
+ import { desc } from './descHelper.js';
12
15
  function handleSpawnError(err, requestId, toolName) {
13
16
  const error = err;
14
17
  log('error', `${toolName} failed`, { requestId, error: error.message });
@@ -22,24 +25,27 @@ function handleSpawnError(err, requestId, toolName) {
22
25
  ],
23
26
  };
24
27
  }
28
+ const QH_SUMMARY_FIELDS = ['requestId', 'exitCode'];
25
29
  // ── Tool: provar_qualityhub_connect ───────────────────────────────────────────
26
30
  export function registerQualityHubConnect(server) {
27
31
  server.registerTool('provar_qualityhub_connect', {
28
32
  title: 'Connect to Quality Hub',
29
- description: 'Connect to a Provar Quality Hub org. Invokes `sf provar quality-hub connect` with the supplied flags.',
33
+ description: desc('Connect to a Provar Quality Hub org. Invokes `sf provar quality-hub connect` with the supplied flags.', 'Connect to a Provar Quality Hub org via sf CLI.'),
30
34
  inputSchema: {
31
- target_org: z.string().describe('SF org alias or username to connect as'),
35
+ target_org: z
36
+ .string()
37
+ .describe(desc('SF org alias or username to connect as', 'string, SF org alias or username')),
32
38
  flags: z
33
39
  .array(z.string())
34
40
  .optional()
35
41
  .default([])
36
- .describe('Additional raw CLI flags to forward (e.g. ["--json"])'),
42
+ .describe(desc('Additional raw CLI flags to forward (e.g. ["--json"])', 'array of strings, optional; extra CLI flags')),
37
43
  sf_path: z
38
44
  .string()
39
45
  .optional()
40
- .describe('Path to the sf CLI executable when not in PATH ' +
46
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
41
47
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
42
- 'Leave unset to use auto-discovery.'),
48
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
43
49
  },
44
50
  }, ({ target_org, flags, sf_path }) => {
45
51
  const requestId = makeRequestId();
@@ -69,18 +75,36 @@ export function registerQualityHubConnect(server) {
69
75
  export function registerQualityHubDisplay(server) {
70
76
  server.registerTool('provar_qualityhub_display', {
71
77
  title: 'Display Quality Hub Info',
72
- description: 'Display connected Quality Hub org info. Invokes `sf provar quality-hub display`.',
78
+ description: desc('Display connected Quality Hub org info. Invokes `sf provar quality-hub display`.', 'Display connected Quality Hub org info via sf CLI.'),
73
79
  inputSchema: {
74
- target_org: z.string().optional().describe('SF org alias or username (uses default if omitted)'),
75
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags to forward'),
80
+ target_org: z
81
+ .string()
82
+ .optional()
83
+ .describe(desc('SF org alias or username (uses default if omitted)', 'string, optional; SF org alias or username')),
84
+ flags: z
85
+ .array(z.string())
86
+ .optional()
87
+ .default([])
88
+ .describe(desc('Additional raw CLI flags to forward', 'array of strings, optional; extra CLI flags')),
76
89
  sf_path: z
77
90
  .string()
78
91
  .optional()
79
- .describe('Path to the sf CLI executable when not in PATH ' +
92
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
80
93
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
81
- 'Leave unset to use auto-discovery.'),
94
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
95
+ detail: z
96
+ .enum(['summary', 'standard', 'full'])
97
+ .optional()
98
+ .default('standard')
99
+ .describe('Response verbosity: "summary" returns only requestId and exitCode; ' +
100
+ '"standard" (default) returns requestId, exitCode, stdout, and stderr.'),
101
+ fields: z
102
+ .string()
103
+ .optional()
104
+ .describe('Comma-separated list of response keys to retain (e.g. "exitCode,stdout"). ' +
105
+ 'Unknown field names are silently ignored. Applied after the detail filter.'),
82
106
  },
83
- }, ({ target_org, flags, sf_path }) => {
107
+ }, ({ target_org, flags, sf_path, detail, fields }) => {
84
108
  const requestId = makeRequestId();
85
109
  log('info', 'provar_qualityhub_display', { requestId, target_org });
86
110
  try {
@@ -88,7 +112,12 @@ export function registerQualityHubDisplay(server) {
88
112
  if (target_org)
89
113
  args.splice(3, 0, '--target-org', target_org);
90
114
  const result = runSfCommand(args, sf_path);
91
- const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
115
+ let response = {
116
+ requestId,
117
+ exitCode: result.exitCode,
118
+ stdout: result.stdout,
119
+ stderr: result.stderr,
120
+ };
92
121
  if (result.exitCode !== 0) {
93
122
  return {
94
123
  isError: true,
@@ -100,6 +129,14 @@ export function registerQualityHubDisplay(server) {
100
129
  ],
101
130
  };
102
131
  }
132
+ const detailLevel = (detail ?? 'standard');
133
+ if (detailLevel !== 'standard') {
134
+ response = applyDetailLevel(response, detailLevel, QH_SUMMARY_FIELDS);
135
+ }
136
+ const fieldList = parseFieldsParam(fields);
137
+ if (fieldList) {
138
+ response = maskFields(response, fieldList);
139
+ }
103
140
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
104
141
  }
105
142
  catch (err) {
@@ -124,21 +161,21 @@ function detectWildcardFlags(flags) {
124
161
  export function registerQualityHubTestRun(server) {
125
162
  server.registerTool('provar_qualityhub_testrun', {
126
163
  title: 'Trigger Quality Hub Test Run',
127
- description: 'Trigger a Quality Hub test run. Invokes `sf provar quality-hub test run`. ' +
128
- 'Warning: wildcard characters (* or ?) in flag values will cause QH plan-level reporting to be skipped — use exact plan names.',
164
+ description: desc('Trigger a Quality Hub test run. Invokes `sf provar quality-hub test run`. ' +
165
+ 'Warning: wildcard characters (* or ?) in flag values will cause QH plan-level reporting to be skipped — use exact plan names.', 'Trigger a Quality Hub test run via sf CLI; use exact plan names.'),
129
166
  inputSchema: {
130
- target_org: z.string().describe('SF org alias or username'),
167
+ target_org: z.string().describe(desc('SF org alias or username', 'string, SF org alias or username')),
131
168
  flags: z
132
169
  .array(z.string())
133
170
  .optional()
134
171
  .default([])
135
- .describe('Additional raw CLI flags (e.g. ["--plan-name", "SmokeTests"]). Avoid wildcards in --plan-name values — they skip QH plan-level reporting.'),
172
+ .describe(desc('Additional raw CLI flags (e.g. ["--plan-name", "SmokeTests"]). Avoid wildcards in --plan-name values — they skip QH plan-level reporting.', 'array of strings, optional; extra CLI flags; avoid wildcards in --plan-name')),
136
173
  sf_path: z
137
174
  .string()
138
175
  .optional()
139
- .describe('Path to the sf CLI executable when not in PATH ' +
176
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
140
177
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
141
- 'Leave unset to use auto-discovery.'),
178
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
142
179
  },
143
180
  }, ({ target_org, flags, sf_path }) => {
144
181
  const requestId = makeRequestId();
@@ -177,17 +214,23 @@ export function registerQualityHubTestRun(server) {
177
214
  export function registerQualityHubTestRunReport(server) {
178
215
  server.registerTool('provar_qualityhub_testrun_report', {
179
216
  title: 'Poll Quality Hub Test Run',
180
- description: 'Poll the status of a Quality Hub test run. Invokes `sf provar quality-hub test run report`.',
217
+ description: desc('Poll the status of a Quality Hub test run. Invokes `sf provar quality-hub test run report`.', 'Poll a Quality Hub test run status via sf CLI.'),
181
218
  inputSchema: {
182
- target_org: z.string().describe('SF org alias or username'),
183
- run_id: z.string().describe('Test run ID returned by provar_qualityhub_testrun'),
184
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
219
+ target_org: z.string().describe(desc('SF org alias or username', 'string, SF org alias or username')),
220
+ run_id: z
221
+ .string()
222
+ .describe(desc('Test run ID returned by provar_qualityhub_testrun', 'string, run ID from qualityhub_testrun')),
223
+ flags: z
224
+ .array(z.string())
225
+ .optional()
226
+ .default([])
227
+ .describe(desc('Additional raw CLI flags', 'array of strings, optional; extra CLI flags')),
185
228
  sf_path: z
186
229
  .string()
187
230
  .optional()
188
- .describe('Path to the sf CLI executable when not in PATH ' +
231
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
189
232
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
190
- 'Leave unset to use auto-discovery.'),
233
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
191
234
  },
192
235
  }, ({ target_org, run_id, flags, sf_path }) => {
193
236
  const requestId = makeRequestId();
@@ -236,17 +279,21 @@ export function registerQualityHubTestRunReport(server) {
236
279
  export function registerQualityHubTestRunAbort(server) {
237
280
  server.registerTool('provar_qualityhub_testrun_abort', {
238
281
  title: 'Abort Quality Hub Test Run',
239
- description: 'Abort an in-progress Quality Hub test run. Invokes `sf provar quality-hub test run abort`.',
282
+ description: desc('Abort an in-progress Quality Hub test run. Invokes `sf provar quality-hub test run abort`.', 'Abort an in-progress Quality Hub test run via sf CLI.'),
240
283
  inputSchema: {
241
- target_org: z.string().describe('SF org alias or username'),
242
- run_id: z.string().describe('Test run ID to abort'),
243
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
284
+ target_org: z.string().describe(desc('SF org alias or username', 'string, SF org alias or username')),
285
+ run_id: z.string().describe(desc('Test run ID to abort', 'string, run ID to abort')),
286
+ flags: z
287
+ .array(z.string())
288
+ .optional()
289
+ .default([])
290
+ .describe(desc('Additional raw CLI flags', 'array of strings, optional; extra CLI flags')),
244
291
  sf_path: z
245
292
  .string()
246
293
  .optional()
247
- .describe('Path to the sf CLI executable when not in PATH ' +
294
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
248
295
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
249
- 'Leave unset to use auto-discovery.'),
296
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
250
297
  },
251
298
  }, ({ target_org, run_id, flags, sf_path }) => {
252
299
  const requestId = makeRequestId();
@@ -276,27 +323,43 @@ export function registerQualityHubTestRunAbort(server) {
276
323
  export function registerQualityHubTestcaseRetrieve(server) {
277
324
  server.registerTool('provar_qualityhub_testcase_retrieve', {
278
325
  title: 'Retrieve Quality Hub Test Cases',
279
- description: 'Retrieve Quality Hub test cases by user story or component. Invokes `sf provar quality-hub testcase retrieve`.',
326
+ description: desc('Retrieve Quality Hub test cases by user story or component. Invokes `sf provar quality-hub testcase retrieve`.', 'Retrieve Quality Hub test cases by user story or component via sf CLI.'),
280
327
  inputSchema: {
281
- target_org: z.string().describe('SF org alias or username'),
328
+ target_org: z.string().describe(desc('SF org alias or username', 'string, SF org alias or username')),
282
329
  flags: z
283
330
  .array(z.string())
284
331
  .optional()
285
332
  .default([])
286
- .describe('Additional raw CLI flags (e.g. ["--user-story", "US-123"])'),
333
+ .describe(desc('Additional raw CLI flags (e.g. ["--user-story", "US-123"])', 'array of strings, optional; extra CLI flags e.g. --user-story')),
287
334
  sf_path: z
288
335
  .string()
289
336
  .optional()
290
- .describe('Path to the sf CLI executable when not in PATH ' +
337
+ .describe(desc('Path to the sf CLI executable when not in PATH ' +
291
338
  '(e.g. "C:\\\\Program Files\\\\sf\\\\bin\\\\sf.cmd" for the Windows standalone installer). ' +
292
- 'Leave unset to use auto-discovery.'),
339
+ 'Leave unset to use auto-discovery.', 'string, optional; path to sf CLI executable')),
340
+ detail: z
341
+ .enum(['summary', 'standard', 'full'])
342
+ .optional()
343
+ .default('standard')
344
+ .describe('Response verbosity: "summary" returns only requestId and exitCode; ' +
345
+ '"standard" (default) returns requestId, exitCode, stdout, and stderr.'),
346
+ fields: z
347
+ .string()
348
+ .optional()
349
+ .describe('Comma-separated list of response keys to retain (e.g. "exitCode,stdout"). ' +
350
+ 'Unknown field names are silently ignored. Applied after the detail filter.'),
293
351
  },
294
- }, ({ target_org, flags, sf_path }) => {
352
+ }, ({ target_org, flags, sf_path, detail, fields }) => {
295
353
  const requestId = makeRequestId();
296
354
  log('info', 'provar_qualityhub_testcase_retrieve', { requestId, target_org });
297
355
  try {
298
356
  const result = runSfCommand(['provar', 'quality-hub', 'testcase', 'retrieve', '--target-org', target_org, ...flags], sf_path);
299
- const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
357
+ let response = {
358
+ requestId,
359
+ exitCode: result.exitCode,
360
+ stdout: result.stdout,
361
+ stderr: result.stderr,
362
+ };
300
363
  if (result.exitCode !== 0) {
301
364
  return {
302
365
  isError: true,
@@ -308,6 +371,14 @@ export function registerQualityHubTestcaseRetrieve(server) {
308
371
  ],
309
372
  };
310
373
  }
374
+ const detailLevel = (detail ?? 'standard');
375
+ if (detailLevel !== 'standard') {
376
+ response = applyDetailLevel(response, detailLevel, QH_SUMMARY_FIELDS);
377
+ }
378
+ const fieldList = parseFieldsParam(fields);
379
+ if (fieldList) {
380
+ response = maskFields(response, fieldList);
381
+ }
311
382
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
312
383
  }
313
384
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"qualityHubTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubTools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,gBAAgB,CACvB,GAAY,EACZ,SAAiB,EACjB,QAAgB;IAEhB,MAAM,KAAK,GAAG,GAAgC,CAAC;IAC/C,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO;QACL,OAAO,EAAE,IAAa;QACtB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;aAC3F;SACF;KACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACzE,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,uDAAuD,CAAC;YACpE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EAC1E,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAChG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACjG,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC;YAC5D,IAAI,UAAU;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,mBAAmB,CAAC,KAAe;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO,CACL,sCAAsC,KAAK,MAAM;oBACjD,2CAA2C;oBAC3C,6CAA6C,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,4EAA4E;YAC5E,+HAA+H;QACjI,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC3D,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,2IAA2I,CAC5I;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EAC9E,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAA4B;gBACxC,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACpB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YACrD,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,6FAA6F;QAC1G,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAChF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACtF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,kCAAkC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,EAC5G,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAC/F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpD,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAqC,CAAC;gBAC7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrE,WAAW,GAAG,gBAAgB,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACrE,MAAM,gBAAgB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChE,WAAW,GAAG,gBAAgB,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,UAAU,GAAG,WAAW;gBAC5B,CAAC,CAAC,iLAAiL;gBACnL,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,sBAAsB,GAAG,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;YAEpF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAClF,iBAAiB,EAAE,sBAAsB;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,4FAA4F;QACzG,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACnD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACtF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,EAC3G,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAC9F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,iCAAiC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,YAAY,CACjB,qCAAqC,EACrC;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,gHAAgH;QAClH,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC3D,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,4DAA4D,CAAC;YACzE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,CACvC;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,qCAAqC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EACvF,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBACjG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,qCAAqC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,+BAA+B,CAAC,MAAM,CAAC,CAAC;IACxC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,kCAAkC,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"qualityHubTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubTools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,SAAS,gBAAgB,CACvB,GAAY,EACZ,SAAiB,EACjB,QAAgB;IAEhB,MAAM,KAAK,GAAG,GAAgC,CAAC;IAC/C,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO;QACL,OAAO,EAAE,IAAa;QACtB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;aAC3F;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEpD,iFAAiF;AAEjF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,IAAI,CACf,uGAAuG,EACvG,iDAAiD,CAClD;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,CAAC,IAAI,CAAC,wCAAwC,EAAE,kCAAkC,CAAC,CAAC;YAC/F,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,IAAI,CAAC,uDAAuD,EAAE,6CAA6C,CAAC,CAC7G;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EAC1E,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,IAAI,CACf,kFAAkF,EAClF,oDAAoD,CACrD;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CAAC,oDAAoD,EAAE,4CAA4C,CAAC,CACzG;YACH,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,IAAI,CAAC,qCAAqC,EAAE,6CAA6C,CAAC,CAAC;YACvG,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,OAAO,CAAC,UAAU,CAAC;iBACnB,QAAQ,CACP,qEAAqE;gBACnE,uEAAuE,CAC1E;YACH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4EAA4E;gBAC1E,4EAA4E,CAC/E;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC;YAC5D,IAAI,UAAU;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,QAAQ,GAA4B;gBACtC,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,UAAU,CAAgB,CAAC;YAC1D,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAA4B,CAAC;YACxE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,mBAAmB,CAAC,KAAe;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO,CACL,sCAAsC,KAAK,MAAM;oBACjD,2CAA2C;oBAC3C,6CAA6C,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EAAE,IAAI,CACf,4EAA4E;YAC1E,+HAA+H,EACjI,kEAAkE,CACnE;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,kCAAkC,CAAC,CAAC;YACrG,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,IAAI,CACF,2IAA2I,EAC3I,6EAA6E,CAC9E,CACF;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EAC9E,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAA4B;gBACxC,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACpB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YACrD,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,IAAI,CACf,6FAA6F,EAC7F,gDAAgD,CACjD;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,kCAAkC,CAAC,CAAC;YACrG,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CACP,IAAI,CAAC,mDAAmD,EAAE,wCAAwC,CAAC,CACpG;YACH,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,6CAA6C,CAAC,CAAC;YAC5F,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,kCAAkC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,EAC5G,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAC/F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpD,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAqC,CAAC;gBAC7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrE,WAAW,GAAG,gBAAgB,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACrE,MAAM,gBAAgB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChE,WAAW,GAAG,gBAAgB,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,UAAU,GAAG,WAAW;gBAC5B,CAAC,CAAC,iLAAiL;gBACnL,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,sBAAsB,GAAG,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;YAEpF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAClF,iBAAiB,EAAE,sBAAsB;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,IAAI,CACf,4FAA4F,EAC5F,uDAAuD,CACxD;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,kCAAkC,CAAC,CAAC;YACrG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;YACpF,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,6CAA6C,CAAC,CAAC;YAC5F,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,EAC3G,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAC9F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,iCAAiC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,YAAY,CACjB,qCAAqC,EACrC;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,IAAI,CACf,gHAAgH,EAChH,wEAAwE,CACzE;QACD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,kCAAkC,CAAC,CAAC;YACrG,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,IAAI,CACF,4DAA4D,EAC5D,+DAA+D,CAChE,CACF;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,IAAI,CACF,iDAAiD;gBAC/C,4FAA4F;gBAC5F,oCAAoC,EACtC,6CAA6C,CAC9C,CACF;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,OAAO,CAAC,UAAU,CAAC;iBACnB,QAAQ,CACP,qEAAqE;gBACnE,uEAAuE,CAC1E;YACH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4EAA4E;gBAC1E,4EAA4E,CAC/E;SACJ;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,qCAAqC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EACvF,OAAO,CACR,CAAC;YACF,IAAI,QAAQ,GAA4B;gBACtC,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBACjG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,UAAU,CAAgB,CAAC;YAC1D,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAA4B,CAAC;YACxE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,qCAAqC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,+BAA+B,CAAC,MAAM,CAAC,CAAC;IACxC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,kCAAkC,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,5 +1,22 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { ServerConfig } from '../server.js';
3
+ type ErrorCategory = 'INFRASTRUCTURE' | 'ASSERTION' | 'LOCATOR' | 'TIMEOUT' | 'OTHER';
4
+ /**
5
+ * Classify a failure message into a structured error category for retry decisions.
6
+ *
7
+ * Categories are coarse-grained and intended to drive automated retry policy
8
+ * downstream (e.g. retry INFRASTRUCTURE/TIMEOUT, never retry ASSERTION/LOCATOR).
9
+ *
10
+ * Returns `undefined` when no pattern matches — callers should leave the field unset.
11
+ */
12
+ export declare function classifyErrorCategory(errorText: string): ErrorCategory | undefined;
13
+ /**
14
+ * A failure is retryable only when the underlying cause is transient.
15
+ * INFRASTRUCTURE (network blips) and TIMEOUT (slow page) can succeed on retry;
16
+ * ASSERTION / LOCATOR / OTHER are deterministic and should not be retried.
17
+ */
18
+ export declare function isRetryable(category: ErrorCategory | undefined): boolean | undefined;
3
19
  export declare function registerTestRunLocate(server: McpServer): void;
4
20
  export declare function registerTestRunRca(server: McpServer, config: ServerConfig): void;
5
21
  export declare function registerAllRcaTools(server: McpServer, config: ServerConfig): void;
22
+ export {};
@@ -13,6 +13,45 @@ import { XMLParser } from 'fast-xml-parser';
13
13
  import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
14
14
  import { makeError, makeRequestId } from '../schemas/common.js';
15
15
  import { log } from '../logging/logger.js';
16
+ import { desc } from './descHelper.js';
17
+ /**
18
+ * Classify a failure message into a structured error category for retry decisions.
19
+ *
20
+ * Categories are coarse-grained and intended to drive automated retry policy
21
+ * downstream (e.g. retry INFRASTRUCTURE/TIMEOUT, never retry ASSERTION/LOCATOR).
22
+ *
23
+ * Returns `undefined` when no pattern matches — callers should leave the field unset.
24
+ */
25
+ export function classifyErrorCategory(errorText) {
26
+ // INFRASTRUCTURE — transient network / socket / browser-process failures.
27
+ if (/Connection reset|Failed to read client socket message|socket hang up|ECONNRESET/i.test(errorText)) {
28
+ return 'INFRASTRUCTURE';
29
+ }
30
+ // LOCATOR — page object selector no longer matches the rendered DOM.
31
+ if (/NoSuchElementException/i.test(errorText))
32
+ return 'LOCATOR';
33
+ // TIMEOUT — element or operation did not complete in time.
34
+ if (/TimeoutException/i.test(errorText))
35
+ return 'TIMEOUT';
36
+ // ASSERTION — explicit assertion failure raised by the test or framework.
37
+ if (/AssertionException/i.test(errorText))
38
+ return 'ASSERTION';
39
+ // OTHER — known exception class but not fitting the four primary buckets.
40
+ if (/SessionNotCreatedException|WebDriverException|ClassNotFoundException|LicenseException|InvalidPasswordException/i.test(errorText)) {
41
+ return 'OTHER';
42
+ }
43
+ return undefined;
44
+ }
45
+ /**
46
+ * A failure is retryable only when the underlying cause is transient.
47
+ * INFRASTRUCTURE (network blips) and TIMEOUT (slow page) can succeed on retry;
48
+ * ASSERTION / LOCATOR / OTHER are deterministic and should not be retried.
49
+ */
50
+ export function isRetryable(category) {
51
+ if (category === undefined)
52
+ return undefined;
53
+ return category === 'INFRASTRUCTURE' || category === 'TIMEOUT';
54
+ }
16
55
  const RCA_RULES = [
17
56
  {
18
57
  category: 'DRIVER_VERSION_MISMATCH',
@@ -331,24 +370,26 @@ function resolveResultsLocation(project_path, results_path, run_index) {
331
370
  export function registerTestRunLocate(server) {
332
371
  server.registerTool('provar_testrun_report_locate', {
333
372
  title: 'Locate Test Report',
334
- description: [
373
+ description: desc([
335
374
  'Resolve exactly where Provar test run artifacts were written, without parsing them.',
336
375
  'Returns the results directory, paths to JUnit.xml and Index.html if they exist,',
337
376
  'paths to per-test HTML reports, and any validation JSON files.',
338
377
  'Supports explicit results_path override or auto-detection from sf config, provardx properties file, or ANT build.xml.',
339
- ].join(' '),
378
+ ].join(' '), 'Resolve Provar test run artifact locations without parsing them.'),
340
379
  inputSchema: {
341
- project_path: z.string().describe('Absolute path to the Provar project root'),
380
+ project_path: z
381
+ .string()
382
+ .describe(desc('Absolute path to the Provar project root', 'string, absolute path to project root')),
342
383
  results_path: z
343
384
  .string()
344
385
  .optional()
345
- .describe('Explicit override for the results base directory; if provided, skip auto-detection'),
386
+ .describe(desc('Explicit override for the results base directory; if provided, skip auto-detection', 'string, optional; explicit results base dir override')),
346
387
  run_index: z
347
388
  .number()
348
389
  .int()
349
390
  .positive()
350
391
  .optional()
351
- .describe('Which Increment run to target (default: latest); must be a positive integer'),
392
+ .describe(desc('Which Increment run to target (default: latest); must be a positive integer', 'int >0, optional; Increment run index')),
352
393
  },
353
394
  }, (input) => {
354
395
  const requestId = makeRequestId();
@@ -553,7 +594,9 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
553
594
  const poMatch = /Page Object:\s*([\w.]+)/i.exec(failureText);
554
595
  const opMatch = /operation:\s*(\w+)/i.exec(failureText);
555
596
  const matchingHtml = htmlFiles.find((f) => path.basename(f) === `${tc.name}.html`);
556
- reports.push({
597
+ const error_category = classifyErrorCategory(failureText);
598
+ const retryable = isRetryable(error_category);
599
+ const report = {
557
600
  test_case: tc.name,
558
601
  error_class,
559
602
  error_message: failureText.slice(0, 500),
@@ -565,7 +608,12 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
565
608
  report_html: matchingHtml ?? null,
566
609
  screenshot_dir: screenshotDir,
567
610
  pre_existing: priorFailed.has(tc.name),
568
- });
611
+ };
612
+ if (error_category !== undefined)
613
+ report.error_category = error_category;
614
+ if (retryable !== undefined)
615
+ report.retryable = retryable;
616
+ reports.push(report);
569
617
  }
570
618
  return reports;
571
619
  }
@@ -573,37 +621,43 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
573
621
  export function registerTestRunRca(server, config) {
574
622
  server.registerTool('provar_testrun_rca', {
575
623
  title: 'Root Cause Analysis',
576
- description: [
624
+ description: desc([
577
625
  'Parse a completed Provar test run and produce a structured Root Cause Analysis (RCA) report.',
578
626
  'Resolves the results directory, parses JUnit.xml, classifies each failure by category,',
579
627
  'and produces recommendations. Use locate_only=true to skip parsing and just resolve artifact locations.',
580
628
  'Use mode="failures" to get a lightweight array of failed test cases',
581
629
  '([{ testItemId, title, errorMessage }]) without the full RCA classification — useful when you',
582
630
  'need failure names quickly without loading the HTML report.',
583
- ].join(' '),
631
+ 'In mode="rca" (default), each entry in failures[] additionally includes optional error_category',
632
+ '(INFRASTRUCTURE|ASSERTION|LOCATOR|TIMEOUT|OTHER) and retryable (boolean) fields when the failure',
633
+ 'text matches a known pattern — INFRASTRUCTURE/TIMEOUT are flagged retryable, others are not.',
634
+ 'These fields are NOT included in mode="failures" output.',
635
+ ].join(' '), 'Parse a Provar test run JUnit.xml and produce an RCA report with failure classification.'),
584
636
  inputSchema: {
585
- project_path: z.string().describe('Absolute path to the Provar project root'),
637
+ project_path: z
638
+ .string()
639
+ .describe(desc('Absolute path to the Provar project root', 'string, absolute path to project root')),
586
640
  results_path: z
587
641
  .string()
588
642
  .optional()
589
- .describe('Explicit override for the results base directory; must be within --allowed-paths if provided'),
643
+ .describe(desc('Explicit override for the results base directory; must be within --allowed-paths if provided', 'string, optional; explicit results base dir override')),
590
644
  run_index: z
591
645
  .number()
592
646
  .int()
593
647
  .positive()
594
648
  .optional()
595
- .describe('Which Increment run to target (default: latest); must be a positive integer'),
649
+ .describe(desc('Which Increment run to target (default: latest); must be a positive integer', 'int >0, optional; Increment run index')),
596
650
  locate_only: z
597
651
  .boolean()
598
652
  .optional()
599
653
  .default(false)
600
- .describe('If true, skip parsing and return just artifact locations'),
654
+ .describe(desc('If true, skip parsing and return just artifact locations', 'bool, optional; default false, skip parsing')),
601
655
  mode: z
602
656
  .enum(['rca', 'failures'])
603
657
  .optional()
604
658
  .default('rca')
605
- .describe('"rca" (default): full root-cause analysis with classification and recommendations. ' +
606
- '"failures": lightweight array of failed test cases [{ testItemId, title, errorMessage }].'),
659
+ .describe(desc('"rca" (default): full root-cause analysis with classification and recommendations. ' +
660
+ '"failures": lightweight array of failed test cases [{ testItemId, title, errorMessage }].', 'enum rca|failures; default rca')),
607
661
  },
608
662
  }, (input) => {
609
663
  const requestId = makeRequestId();