@provartesting/provardx-cli 1.5.0-beta.13 → 1.5.0-beta.15

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 (60) hide show
  1. package/lib/commands/provar/mcp/start.d.ts +2 -0
  2. package/lib/commands/provar/mcp/start.js +14 -1
  3. package/lib/commands/provar/mcp/start.js.map +1 -1
  4. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +2 -2
  5. package/lib/mcp/prompts/loopPrompts.js +18 -18
  6. package/lib/mcp/prompts/migrationPrompts.js +10 -10
  7. package/lib/mcp/server.d.ts +5 -0
  8. package/lib/mcp/server.js +14 -3
  9. package/lib/mcp/server.js.map +1 -1
  10. package/lib/mcp/tools/antTools.js +140 -129
  11. package/lib/mcp/tools/antTools.js.map +1 -1
  12. package/lib/mcp/tools/automationTools.js +125 -103
  13. package/lib/mcp/tools/automationTools.js.map +1 -1
  14. package/lib/mcp/tools/connectionTools.js +17 -13
  15. package/lib/mcp/tools/connectionTools.js.map +1 -1
  16. package/lib/mcp/tools/defectTools.js +35 -28
  17. package/lib/mcp/tools/defectTools.js.map +1 -1
  18. package/lib/mcp/tools/hierarchyValidate.d.ts +1 -1
  19. package/lib/mcp/tools/hierarchyValidate.js +127 -42
  20. package/lib/mcp/tools/hierarchyValidate.js.map +1 -1
  21. package/lib/mcp/tools/nitroXTools.js +161 -142
  22. package/lib/mcp/tools/nitroXTools.js.map +1 -1
  23. package/lib/mcp/tools/pageObjectGenerate.js +47 -40
  24. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  25. package/lib/mcp/tools/pageObjectValidate.js +136 -46
  26. package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
  27. package/lib/mcp/tools/projectInspect.js +51 -30
  28. package/lib/mcp/tools/projectInspect.js.map +1 -1
  29. package/lib/mcp/tools/projectValidateFromPath.js +70 -49
  30. package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
  31. package/lib/mcp/tools/propertiesTools.js +64 -48
  32. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  33. package/lib/mcp/tools/qualityHubApiTools.js +48 -44
  34. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -1
  35. package/lib/mcp/tools/qualityHubTools.js +76 -52
  36. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  37. package/lib/mcp/tools/rcaTools.js +63 -55
  38. package/lib/mcp/tools/rcaTools.js.map +1 -1
  39. package/lib/mcp/tools/testCaseGenerate.js +46 -35
  40. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  41. package/lib/mcp/tools/testCaseStepTools.js +38 -34
  42. package/lib/mcp/tools/testCaseStepTools.js.map +1 -1
  43. package/lib/mcp/tools/testCaseValidate.js +60 -41
  44. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  45. package/lib/mcp/tools/testPlanTools.js +198 -76
  46. package/lib/mcp/tools/testPlanTools.js.map +1 -1
  47. package/lib/mcp/tools/testPlanValidate.js +56 -18
  48. package/lib/mcp/tools/testPlanValidate.js.map +1 -1
  49. package/lib/mcp/tools/testSuiteValidate.js +37 -11
  50. package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
  51. package/lib/mcp/update/updateChecker.d.ts +14 -0
  52. package/lib/mcp/update/updateChecker.js +228 -0
  53. package/lib/mcp/update/updateChecker.js.map +1 -0
  54. package/lib/services/projectValidation.d.ts +5 -2
  55. package/lib/services/projectValidation.js +83 -31
  56. package/lib/services/projectValidation.js.map +1 -1
  57. package/messages/sf.provar.auth.clear.md +1 -1
  58. package/messages/sf.provar.mcp.start.md +83 -48
  59. package/oclif.manifest.json +224 -212
  60. package/package.json +1 -1
@@ -23,47 +23,51 @@ const CORPUS_RATE_LIMIT_WARNING = 'Corpus retrieval skipped — rate limit reach
23
23
  const CORPUS_UNREACHABLE_WARNING = 'Corpus retrieval skipped — API unreachable. Continuing without example grounding.\n' +
24
24
  'Check your network connection or try again later.\n' +
25
25
  CORPUS_FALLBACK_HINT;
26
- // ── Tool: provar.qualityhub.examples.retrieve ─────────────────────────────────
26
+ // ── Tool: provar_qualityhub_examples_retrieve ─────────────────────────────────
27
27
  export function registerCorpusExamplesRetrieve(server) {
28
- server.tool('provar.qualityhub.examples.retrieve', [
29
- 'Retrieve N similar Provar test case examples from the Quality Hub corpus (1000+ tests in Bedrock KB).',
30
- 'Use this BEFORE writing any Provar .testcase XML — whether via provar.testcase.generate, Write, or Edit.',
31
- 'Pass a user story, requirement, source test file content, or step type keywords as the query.',
32
- 'Returns up to N example Provar XML test cases ordered by similarity score.',
33
- 'If retrieval fails (no auth, network error, rate limit), returns empty examples with a warning — the',
34
- 'generation workflow can still continue without grounding. Never hard-errors on API failure.',
35
- '',
36
- 'For org-specific field metadata: first call getObjectSchema from the Salesforce Hosted MCP',
37
- '(platform/sobject-reads — https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads),',
38
- 'then include key field names in your query (e.g. "Opportunity: CloseDate, Amount, StageName").',
39
- '',
40
- 'Requires a Provar API key (sf provar auth login). Without a key, returns empty examples with onboarding instructions.',
41
- ].join('\n'), {
42
- query: z
43
- .string()
44
- .describe('Text to search against the corpus — a user story, requirement description, or source test file content. ' +
45
- 'Longer is better: include Salesforce object names, field names, and action descriptions. ' +
46
- 'Truncated server-side at 2000 characters.'),
47
- n: z
48
- .number()
49
- .int()
50
- .min(1)
51
- .max(10)
52
- .optional()
53
- .default(5)
54
- .describe('Number of examples to return. Default 5, max 10.'),
55
- app_filter: z
56
- .string()
57
- .optional()
58
- .describe('Optional Salesforce cloud filter to bias results (e.g. "SalesCloud", "ServiceCloud", "HealthCloud").'),
59
- prefer_high_quality: z
60
- .boolean()
61
- .optional()
62
- .default(true)
63
- .describe('When true (default), favours tier4/tier3 corpus examples. Set false to include all tiers.'),
28
+ server.registerTool('provar_qualityhub_examples_retrieve', {
29
+ title: 'Retrieve Corpus Examples',
30
+ description: [
31
+ 'Retrieve N similar Provar test case examples from the Quality Hub corpus (1000+ tests in Bedrock KB).',
32
+ 'Use this BEFORE writing any Provar .testcase XML whether via provar_testcase_generate, Write, or Edit.',
33
+ 'Pass a user story, requirement, source test file content, or step type keywords as the query.',
34
+ 'Returns up to N example Provar XML test cases ordered by similarity score.',
35
+ 'If retrieval fails (no auth, network error, rate limit), returns empty examples with a warning — the',
36
+ 'generation workflow can still continue without grounding. Never hard-errors on API failure.',
37
+ '',
38
+ 'For org-specific field metadata: first call getObjectSchema from the Salesforce Hosted MCP',
39
+ '(platform/sobject-reads — https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads),',
40
+ 'then include key field names in your query (e.g. "Opportunity: CloseDate, Amount, StageName").',
41
+ '',
42
+ 'Requires a Provar API key (sf provar auth login). Without a key, returns empty examples with onboarding instructions.',
43
+ ].join('\n'),
44
+ inputSchema: {
45
+ query: z
46
+ .string()
47
+ .describe('Text to search against the corpus — a user story, requirement description, or source test file content. ' +
48
+ 'Longer is better: include Salesforce object names, field names, and action descriptions. ' +
49
+ 'Truncated server-side at 2000 characters.'),
50
+ n: z
51
+ .number()
52
+ .int()
53
+ .min(1)
54
+ .max(10)
55
+ .optional()
56
+ .default(5)
57
+ .describe('Number of examples to return. Default 5, max 10.'),
58
+ app_filter: z
59
+ .string()
60
+ .optional()
61
+ .describe('Optional Salesforce cloud filter to bias results (e.g. "SalesCloud", "ServiceCloud", "HealthCloud").'),
62
+ prefer_high_quality: z
63
+ .boolean()
64
+ .optional()
65
+ .default(true)
66
+ .describe('When true (default), favours tier4/tier3 corpus examples. Set false to include all tiers.'),
67
+ },
64
68
  }, async ({ query, n, app_filter, prefer_high_quality }) => {
65
69
  const requestId = makeRequestId();
66
- log('info', 'provar.qualityhub.examples.retrieve', { requestId, query_length: query.length, n, app_filter });
70
+ log('info', 'provar_qualityhub_examples_retrieve', { requestId, query_length: query.length, n, app_filter });
67
71
  if (!query || query.trim().length === 0) {
68
72
  return {
69
73
  isError: true,
@@ -77,7 +81,7 @@ export function registerCorpusExamplesRetrieve(server) {
77
81
  }
78
82
  const apiKey = credentialsService.resolveApiKey();
79
83
  if (!apiKey) {
80
- log('warn', 'provar.qualityhub.examples.retrieve: no api key', { requestId });
84
+ log('warn', 'provar_qualityhub_examples_retrieve: no api key', { requestId });
81
85
  const result = {
82
86
  requestId,
83
87
  examples: [],
@@ -95,9 +99,9 @@ export function registerCorpusExamplesRetrieve(server) {
95
99
  prefer_high_quality,
96
100
  });
97
101
  if (response.query_truncated) {
98
- log('warn', 'provar.qualityhub.examples.retrieve: query truncated', { requestId });
102
+ log('warn', 'provar_qualityhub_examples_retrieve: query truncated', { requestId });
99
103
  }
100
- log('info', 'provar.qualityhub.examples.retrieve: success', {
104
+ log('info', 'provar_qualityhub_examples_retrieve: success', {
101
105
  requestId,
102
106
  retrieval_id: response.retrieval_id,
103
107
  count: response.count,
@@ -110,16 +114,16 @@ export function registerCorpusExamplesRetrieve(server) {
110
114
  let warning;
111
115
  if (err instanceof QualityHubAuthError) {
112
116
  warning = CORPUS_AUTH_WARNING;
113
- log('warn', 'provar.qualityhub.examples.retrieve: auth error', { requestId });
117
+ log('warn', 'provar_qualityhub_examples_retrieve: auth error', { requestId });
114
118
  }
115
119
  else if (err instanceof QualityHubRateLimitError) {
116
120
  warning = CORPUS_RATE_LIMIT_WARNING;
117
- log('warn', 'provar.qualityhub.examples.retrieve: rate limited', { requestId });
121
+ log('warn', 'provar_qualityhub_examples_retrieve: rate limited', { requestId });
118
122
  }
119
123
  else {
120
124
  warning = CORPUS_UNREACHABLE_WARNING;
121
125
  const errMsg = err.message.slice(0, 200);
122
- log('warn', 'provar.qualityhub.examples.retrieve: api error', { requestId, error: errMsg });
126
+ log('warn', 'provar_qualityhub_examples_retrieve: api error', { requestId, error: errMsg });
123
127
  }
124
128
  // Degrade gracefully — never isError:true. The LLM continues without grounding.
125
129
  const result = { requestId, examples: [], count: 0, query_truncated: false, warning };
@@ -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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"}
@@ -22,18 +22,22 @@ function handleSpawnError(err, requestId, toolName) {
22
22
  ],
23
23
  };
24
24
  }
25
- // ── Tool: provar.qualityhub.connect ───────────────────────────────────────────
25
+ // ── Tool: provar_qualityhub_connect ───────────────────────────────────────────
26
26
  export function registerQualityHubConnect(server) {
27
- server.tool('provar.qualityhub.connect', 'Connect to a Provar Quality Hub org. Invokes `sf provar quality-hub connect` with the supplied flags.', {
28
- target_org: z.string().describe('SF org alias or username to connect as'),
29
- flags: z
30
- .array(z.string())
31
- .optional()
32
- .default([])
33
- .describe('Additional raw CLI flags to forward (e.g. ["--json"])'),
27
+ server.registerTool('provar_qualityhub_connect', {
28
+ title: 'Connect to Quality Hub',
29
+ description: 'Connect to a Provar Quality Hub org. Invokes `sf provar quality-hub connect` with the supplied flags.',
30
+ inputSchema: {
31
+ target_org: z.string().describe('SF org alias or username to connect as'),
32
+ flags: z
33
+ .array(z.string())
34
+ .optional()
35
+ .default([])
36
+ .describe('Additional raw CLI flags to forward (e.g. ["--json"])'),
37
+ },
34
38
  }, ({ target_org, flags }) => {
35
39
  const requestId = makeRequestId();
36
- log('info', 'provar.qualityhub.connect', { requestId, target_org });
40
+ log('info', 'provar_qualityhub_connect', { requestId, target_org });
37
41
  try {
38
42
  const result = runSfCommand(['provar', 'quality-hub', 'connect', '--target-org', target_org, ...flags]);
39
43
  const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
@@ -51,18 +55,22 @@ export function registerQualityHubConnect(server) {
51
55
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
52
56
  }
53
57
  catch (err) {
54
- return handleSpawnError(err, requestId, 'provar.qualityhub.connect');
58
+ return handleSpawnError(err, requestId, 'provar_qualityhub_connect');
55
59
  }
56
60
  });
57
61
  }
58
- // ── Tool: provar.qualityhub.display ──────────────────────────────────────────
62
+ // ── Tool: provar_qualityhub_display ──────────────────────────────────────────
59
63
  export function registerQualityHubDisplay(server) {
60
- server.tool('provar.qualityhub.display', 'Display connected Quality Hub org info. Invokes `sf provar quality-hub display`.', {
61
- target_org: z.string().optional().describe('SF org alias or username (uses default if omitted)'),
62
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags to forward'),
64
+ server.registerTool('provar_qualityhub_display', {
65
+ title: 'Display Quality Hub Info',
66
+ description: 'Display connected Quality Hub org info. Invokes `sf provar quality-hub display`.',
67
+ inputSchema: {
68
+ target_org: z.string().optional().describe('SF org alias or username (uses default if omitted)'),
69
+ flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags to forward'),
70
+ },
63
71
  }, ({ target_org, flags }) => {
64
72
  const requestId = makeRequestId();
65
- log('info', 'provar.qualityhub.display', { requestId, target_org });
73
+ log('info', 'provar_qualityhub_display', { requestId, target_org });
66
74
  try {
67
75
  const args = ['provar', 'quality-hub', 'display', ...flags];
68
76
  if (target_org)
@@ -83,11 +91,11 @@ export function registerQualityHubDisplay(server) {
83
91
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
84
92
  }
85
93
  catch (err) {
86
- return handleSpawnError(err, requestId, 'provar.qualityhub.display');
94
+ return handleSpawnError(err, requestId, 'provar_qualityhub_display');
87
95
  }
88
96
  });
89
97
  }
90
- // ── Tool: provar.qualityhub.testrun ──────────────────────────────────────────
98
+ // ── Tool: provar_qualityhub_testrun ──────────────────────────────────────────
91
99
  function detectWildcardFlags(flags) {
92
100
  for (let i = 0; i < flags.length - 1; i++) {
93
101
  if (flags[i] === '--plan-name') {
@@ -102,17 +110,21 @@ function detectWildcardFlags(flags) {
102
110
  return undefined;
103
111
  }
104
112
  export function registerQualityHubTestRun(server) {
105
- server.tool('provar.qualityhub.testrun', 'Trigger a Quality Hub test run. Invokes `sf provar quality-hub test run`. ' +
106
- 'Warning: wildcard characters (* or ?) in flag values will cause QH plan-level reporting to be skipped — use exact plan names.', {
107
- target_org: z.string().describe('SF org alias or username'),
108
- flags: z
109
- .array(z.string())
110
- .optional()
111
- .default([])
112
- .describe('Additional raw CLI flags (e.g. ["--plan-name", "SmokeTests"]). Avoid wildcards in --plan-name values — they skip QH plan-level reporting.'),
113
+ server.registerTool('provar_qualityhub_testrun', {
114
+ title: 'Trigger Quality Hub Test Run',
115
+ description: 'Trigger a Quality Hub test run. Invokes `sf provar quality-hub test run`. ' +
116
+ 'Warning: wildcard characters (* or ?) in flag values will cause QH plan-level reporting to be skipped — use exact plan names.',
117
+ inputSchema: {
118
+ target_org: z.string().describe('SF org alias or username'),
119
+ flags: z
120
+ .array(z.string())
121
+ .optional()
122
+ .default([])
123
+ .describe('Additional raw CLI flags (e.g. ["--plan-name", "SmokeTests"]). Avoid wildcards in --plan-name values — they skip QH plan-level reporting.'),
124
+ },
113
125
  }, ({ target_org, flags }) => {
114
126
  const requestId = makeRequestId();
115
- log('info', 'provar.qualityhub.testrun', { requestId, target_org });
127
+ log('info', 'provar_qualityhub_testrun', { requestId, target_org });
116
128
  try {
117
129
  const wildcardWarning = detectWildcardFlags(flags);
118
130
  const result = runSfCommand(['provar', 'quality-hub', 'test', 'run', '--target-org', target_org, ...flags]);
@@ -139,19 +151,23 @@ export function registerQualityHubTestRun(server) {
139
151
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
140
152
  }
141
153
  catch (err) {
142
- return handleSpawnError(err, requestId, 'provar.qualityhub.testrun');
154
+ return handleSpawnError(err, requestId, 'provar_qualityhub_testrun');
143
155
  }
144
156
  });
145
157
  }
146
- // ── Tool: provar.qualityhub.testrun.report ────────────────────────────────────
158
+ // ── Tool: provar_qualityhub_testrun_report ────────────────────────────────────
147
159
  export function registerQualityHubTestRunReport(server) {
148
- server.tool('provar.qualityhub.testrun.report', 'Poll the status of a Quality Hub test run. Invokes `sf provar quality-hub test run report`.', {
149
- target_org: z.string().describe('SF org alias or username'),
150
- run_id: z.string().describe('Test run ID returned by provar.qualityhub.testrun'),
151
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
160
+ server.registerTool('provar_qualityhub_testrun_report', {
161
+ title: 'Poll Quality Hub Test Run',
162
+ description: 'Poll the status of a Quality Hub test run. Invokes `sf provar quality-hub test run report`.',
163
+ inputSchema: {
164
+ target_org: z.string().describe('SF org alias or username'),
165
+ run_id: z.string().describe('Test run ID returned by provar_qualityhub_testrun'),
166
+ flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
167
+ },
152
168
  }, ({ target_org, run_id, flags }) => {
153
169
  const requestId = makeRequestId();
154
- log('info', 'provar.qualityhub.testrun.report', { requestId, target_org, run_id });
170
+ log('info', 'provar_qualityhub_testrun_report', { requestId, target_org, run_id });
155
171
  try {
156
172
  const result = runSfCommand([
157
173
  'provar',
@@ -190,7 +206,7 @@ export function registerQualityHubTestRunReport(server) {
190
206
  hasFailures = normalizedStatus !== undefined && failureStatuses.has(normalizedStatus);
191
207
  }
192
208
  const suggestion = hasFailures
193
- ? 'Failures detected. Use provar.qualityhub.defect.create with run_id and target_org to automatically create Defect__c records for each failure (syncs to Jira/ADO if configured).'
209
+ ? 'Failures detected. Use provar_qualityhub_defect_create with run_id and target_org to automatically create Defect__c records for each failure (syncs to Jira/ADO if configured).'
194
210
  : '';
195
211
  const responseWithSuggestion = { ...response, suggestion: suggestion || undefined };
196
212
  return {
@@ -199,19 +215,23 @@ export function registerQualityHubTestRunReport(server) {
199
215
  };
200
216
  }
201
217
  catch (err) {
202
- return handleSpawnError(err, requestId, 'provar.qualityhub.testrun.report');
218
+ return handleSpawnError(err, requestId, 'provar_qualityhub_testrun_report');
203
219
  }
204
220
  });
205
221
  }
206
- // ── Tool: provar.qualityhub.testrun.abort ─────────────────────────────────────
222
+ // ── Tool: provar_qualityhub_testrun_abort ─────────────────────────────────────
207
223
  export function registerQualityHubTestRunAbort(server) {
208
- server.tool('provar.qualityhub.testrun.abort', 'Abort an in-progress Quality Hub test run. Invokes `sf provar quality-hub test run abort`.', {
209
- target_org: z.string().describe('SF org alias or username'),
210
- run_id: z.string().describe('Test run ID to abort'),
211
- flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
224
+ server.registerTool('provar_qualityhub_testrun_abort', {
225
+ title: 'Abort Quality Hub Test Run',
226
+ description: 'Abort an in-progress Quality Hub test run. Invokes `sf provar quality-hub test run abort`.',
227
+ inputSchema: {
228
+ target_org: z.string().describe('SF org alias or username'),
229
+ run_id: z.string().describe('Test run ID to abort'),
230
+ flags: z.array(z.string()).optional().default([]).describe('Additional raw CLI flags'),
231
+ },
212
232
  }, ({ target_org, run_id, flags }) => {
213
233
  const requestId = makeRequestId();
214
- log('info', 'provar.qualityhub.testrun.abort', { requestId, target_org, run_id });
234
+ log('info', 'provar_qualityhub_testrun_abort', { requestId, target_org, run_id });
215
235
  try {
216
236
  const result = runSfCommand([
217
237
  'provar',
@@ -240,22 +260,26 @@ export function registerQualityHubTestRunAbort(server) {
240
260
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
241
261
  }
242
262
  catch (err) {
243
- return handleSpawnError(err, requestId, 'provar.qualityhub.testrun.abort');
263
+ return handleSpawnError(err, requestId, 'provar_qualityhub_testrun_abort');
244
264
  }
245
265
  });
246
266
  }
247
- // ── Tool: provar.qualityhub.testcase.retrieve ─────────────────────────────────
267
+ // ── Tool: provar_qualityhub_testcase_retrieve ─────────────────────────────────
248
268
  export function registerQualityHubTestcaseRetrieve(server) {
249
- server.tool('provar.qualityhub.testcase.retrieve', 'Retrieve Quality Hub test cases by user story or component. Invokes `sf provar quality-hub testcase retrieve`.', {
250
- target_org: z.string().describe('SF org alias or username'),
251
- flags: z
252
- .array(z.string())
253
- .optional()
254
- .default([])
255
- .describe('Additional raw CLI flags (e.g. ["--user-story", "US-123"])'),
269
+ server.registerTool('provar_qualityhub_testcase_retrieve', {
270
+ title: 'Retrieve Quality Hub Test Cases',
271
+ description: 'Retrieve Quality Hub test cases by user story or component. Invokes `sf provar quality-hub testcase retrieve`.',
272
+ inputSchema: {
273
+ target_org: z.string().describe('SF org alias or username'),
274
+ flags: z
275
+ .array(z.string())
276
+ .optional()
277
+ .default([])
278
+ .describe('Additional raw CLI flags (e.g. ["--user-story", "US-123"])'),
279
+ },
256
280
  }, ({ target_org, flags }) => {
257
281
  const requestId = makeRequestId();
258
- log('info', 'provar.qualityhub.testcase.retrieve', { requestId, target_org });
282
+ log('info', 'provar_qualityhub_testcase_retrieve', { requestId, target_org });
259
283
  try {
260
284
  const result = runSfCommand([
261
285
  'provar',
@@ -281,7 +305,7 @@ export function registerQualityHubTestcaseRetrieve(server) {
281
305
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
282
306
  }
283
307
  catch (err) {
284
- return handleSpawnError(err, requestId, 'provar.qualityhub.testcase.retrieve');
308
+ return handleSpawnError(err, requestId, 'provar_qualityhub_testcase_retrieve');
285
309
  }
286
310
  });
287
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qualityHubTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qualityHubTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityHubTools.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ const RCA_RULES = [
78
78
  category: 'MISSING_CALLABLE',
79
79
  pattern: /caseCall.*cannot.*resolv|callable.*not.*found/i,
80
80
  summary: 'caseCall references unresolvable callable',
81
- recommendation: 'Use provar.project.validate to diagnose PROJ-CALLABLE violations',
81
+ recommendation: 'Use provar_project_validate to diagnose PROJ-CALLABLE violations',
82
82
  },
83
83
  {
84
84
  category: 'METADATA_CACHE',
@@ -90,7 +90,7 @@ const RCA_RULES = [
90
90
  category: 'PAGE_OBJECT_COMPILE',
91
91
  pattern: /ClassNotFoundException|CompilationException/i,
92
92
  summary: 'Page object class not compiled',
93
- recommendation: 'Run provar.automation.compile before testrun',
93
+ recommendation: 'Run provar_automation_compile before testrun',
94
94
  },
95
95
  {
96
96
  category: 'CONNECTION_REFUSED',
@@ -327,28 +327,32 @@ function resolveResultsLocation(project_path, results_path, run_index) {
327
327
  resolution_source,
328
328
  };
329
329
  }
330
- // ── provar.testrun.report.locate tool ─────────────────────────────────────────
330
+ // ── provar_testrun_report_locate tool ─────────────────────────────────────────
331
331
  export function registerTestRunLocate(server) {
332
- server.tool('provar.testrun.report.locate', [
333
- 'Resolve exactly where Provar test run artifacts were written, without parsing them.',
334
- 'Returns the results directory, paths to JUnit.xml and Index.html if they exist,',
335
- 'paths to per-test HTML reports, and any validation JSON files.',
336
- 'Supports explicit results_path override or auto-detection from sf config, provardx properties file, or ANT build.xml.',
337
- ].join(' '), {
338
- project_path: z.string().describe('Absolute path to the Provar project root'),
339
- results_path: z
340
- .string()
341
- .optional()
342
- .describe('Explicit override for the results base directory; if provided, skip auto-detection'),
343
- run_index: z
344
- .number()
345
- .int()
346
- .positive()
347
- .optional()
348
- .describe('Which Increment run to target (default: latest); must be a positive integer'),
332
+ server.registerTool('provar_testrun_report_locate', {
333
+ title: 'Locate Test Report',
334
+ description: [
335
+ 'Resolve exactly where Provar test run artifacts were written, without parsing them.',
336
+ 'Returns the results directory, paths to JUnit.xml and Index.html if they exist,',
337
+ 'paths to per-test HTML reports, and any validation JSON files.',
338
+ 'Supports explicit results_path override or auto-detection from sf config, provardx properties file, or ANT build.xml.',
339
+ ].join(' '),
340
+ inputSchema: {
341
+ project_path: z.string().describe('Absolute path to the Provar project root'),
342
+ results_path: z
343
+ .string()
344
+ .optional()
345
+ .describe('Explicit override for the results base directory; if provided, skip auto-detection'),
346
+ run_index: z
347
+ .number()
348
+ .int()
349
+ .positive()
350
+ .optional()
351
+ .describe('Which Increment run to target (default: latest); must be a positive integer'),
352
+ },
349
353
  }, (input) => {
350
354
  const requestId = makeRequestId();
351
- log('info', 'provar.testrun.report.locate', { requestId });
355
+ log('info', 'provar_testrun_report_locate', { requestId });
352
356
  try {
353
357
  const resolved = resolveResultsLocation(input.project_path, input.results_path, input.run_index);
354
358
  if ('error' in resolved) {
@@ -401,7 +405,7 @@ export function registerTestRunLocate(server) {
401
405
  catch (err) {
402
406
  const error = err;
403
407
  const errResult = makeError('LOCATE_ERROR', error.message, requestId);
404
- log('error', 'provar.testrun.report.locate failed', { requestId, error: error.message });
408
+ log('error', 'provar_testrun_report_locate failed', { requestId, error: error.message });
405
409
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
406
410
  }
407
411
  });
@@ -565,41 +569,45 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
565
569
  }
566
570
  return reports;
567
571
  }
568
- // ── provar.testrun.rca tool ───────────────────────────────────────────────────
572
+ // ── provar_testrun_rca tool ───────────────────────────────────────────────────
569
573
  export function registerTestRunRca(server, config) {
570
- server.tool('provar.testrun.rca', [
571
- 'Parse a completed Provar test run and produce a structured Root Cause Analysis (RCA) report.',
572
- 'Resolves the results directory, parses JUnit.xml, classifies each failure by category,',
573
- 'and produces recommendations. Use locate_only=true to skip parsing and just resolve artifact locations.',
574
- 'Use mode="failures" to get a lightweight array of failed test cases',
575
- '([{ testItemId, title, errorMessage }]) without the full RCA classification useful when you',
576
- 'need failure names quickly without loading the HTML report.',
577
- ].join(' '), {
578
- project_path: z.string().describe('Absolute path to the Provar project root'),
579
- results_path: z
580
- .string()
581
- .optional()
582
- .describe('Explicit override for the results base directory; must be within --allowed-paths if provided'),
583
- run_index: z
584
- .number()
585
- .int()
586
- .positive()
587
- .optional()
588
- .describe('Which Increment run to target (default: latest); must be a positive integer'),
589
- locate_only: z
590
- .boolean()
591
- .optional()
592
- .default(false)
593
- .describe('If true, skip parsing and return just artifact locations'),
594
- mode: z
595
- .enum(['rca', 'failures'])
596
- .optional()
597
- .default('rca')
598
- .describe('"rca" (default): full root-cause analysis with classification and recommendations. ' +
599
- '"failures": lightweight array of failed test cases [{ testItemId, title, errorMessage }].'),
574
+ server.registerTool('provar_testrun_rca', {
575
+ title: 'Root Cause Analysis',
576
+ description: [
577
+ 'Parse a completed Provar test run and produce a structured Root Cause Analysis (RCA) report.',
578
+ 'Resolves the results directory, parses JUnit.xml, classifies each failure by category,',
579
+ 'and produces recommendations. Use locate_only=true to skip parsing and just resolve artifact locations.',
580
+ 'Use mode="failures" to get a lightweight array of failed test cases',
581
+ '([{ testItemId, title, errorMessage }]) without the full RCA classification — useful when you',
582
+ 'need failure names quickly without loading the HTML report.',
583
+ ].join(' '),
584
+ inputSchema: {
585
+ project_path: z.string().describe('Absolute path to the Provar project root'),
586
+ results_path: z
587
+ .string()
588
+ .optional()
589
+ .describe('Explicit override for the results base directory; must be within --allowed-paths if provided'),
590
+ run_index: z
591
+ .number()
592
+ .int()
593
+ .positive()
594
+ .optional()
595
+ .describe('Which Increment run to target (default: latest); must be a positive integer'),
596
+ locate_only: z
597
+ .boolean()
598
+ .optional()
599
+ .default(false)
600
+ .describe('If true, skip parsing and return just artifact locations'),
601
+ mode: z
602
+ .enum(['rca', 'failures'])
603
+ .optional()
604
+ .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 }].'),
607
+ },
600
608
  }, (input) => {
601
609
  const requestId = makeRequestId();
602
- log('info', 'provar.testrun.rca', { requestId, locate_only: input.locate_only, mode: input.mode });
610
+ log('info', 'provar_testrun_rca', { requestId, locate_only: input.locate_only, mode: input.mode });
603
611
  try {
604
612
  // ── Path policy ──────────────────────────────────────────────────────
605
613
  const pathsToCheck = [path.resolve(input.project_path)];
@@ -732,7 +740,7 @@ export function registerTestRunRca(server, config) {
732
740
  catch (err) {
733
741
  const error = err;
734
742
  const errResult = makeError('RCA_ERROR', error.message, requestId);
735
- log('error', 'provar.testrun.rca failed', { requestId, error: error.message });
743
+ log('error', 'provar_testrun_rca failed', { requestId, error: error.message });
736
744
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
737
745
  }
738
746
  });