@provartesting/provardx-cli 1.5.0-dev.2 → 1.5.1
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/README.md +163 -12
- package/bin/mcp-start.js +74 -0
- package/lib/commands/provar/auth/clear.d.ts +7 -0
- package/lib/commands/provar/auth/clear.js +36 -0
- package/lib/commands/provar/auth/clear.js.map +1 -0
- package/lib/commands/provar/auth/login.d.ts +10 -0
- package/lib/commands/provar/auth/login.js +90 -0
- package/lib/commands/provar/auth/login.js.map +1 -0
- package/lib/commands/provar/auth/rotate.d.ts +7 -0
- package/lib/commands/provar/auth/rotate.js +42 -0
- package/lib/commands/provar/auth/rotate.js.map +1 -0
- package/lib/commands/provar/auth/status.d.ts +7 -0
- package/lib/commands/provar/auth/status.js +107 -0
- package/lib/commands/provar/auth/status.js.map +1 -0
- package/lib/commands/provar/mcp/start.d.ts +2 -0
- package/lib/commands/provar/mcp/start.js +14 -1
- package/lib/commands/provar/mcp/start.js.map +1 -1
- package/lib/mcp/docs/NITROX_CATALOG_SOURCE.json +6 -0
- package/lib/mcp/docs/NITROX_COMPONENT_CATALOG.md +2001 -0
- package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
- package/lib/mcp/docs/PROVAR_TOOL_GUIDE.md +187 -0
- package/lib/mcp/licensing/algasClient.js +14 -5
- package/lib/mcp/licensing/algasClient.js.map +1 -1
- package/lib/mcp/licensing/ideDetection.d.ts +0 -12
- package/lib/mcp/licensing/ideDetection.js +1 -73
- package/lib/mcp/licensing/ideDetection.js.map +1 -1
- package/lib/mcp/licensing/licenseCache.js +7 -1
- package/lib/mcp/licensing/licenseCache.js.map +1 -1
- package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
- package/lib/mcp/licensing/licenseValidator.js +11 -4
- package/lib/mcp/licensing/licenseValidator.js.map +1 -1
- package/lib/mcp/prompts/guidePrompts.d.ts +4 -0
- package/lib/mcp/prompts/guidePrompts.js +334 -0
- package/lib/mcp/prompts/guidePrompts.js.map +1 -0
- package/lib/mcp/prompts/index.d.ts +2 -0
- package/lib/mcp/prompts/index.js +23 -0
- package/lib/mcp/prompts/index.js.map +1 -0
- package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
- package/lib/mcp/prompts/loopPrompts.js +435 -0
- package/lib/mcp/prompts/loopPrompts.js.map +1 -0
- package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
- package/lib/mcp/prompts/migrationPrompts.js +207 -0
- package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
- package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
- package/lib/mcp/security/pathPolicy.d.ts +5 -0
- package/lib/mcp/security/pathPolicy.js +58 -3
- package/lib/mcp/security/pathPolicy.js.map +1 -1
- package/lib/mcp/server.d.ts +18 -0
- package/lib/mcp/server.js +232 -19
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/tools/antTools.d.ts +15 -0
- package/lib/mcp/tools/antTools.js +369 -170
- package/lib/mcp/tools/antTools.js.map +1 -1
- package/lib/mcp/tools/automationTools.d.ts +18 -8
- package/lib/mcp/tools/automationTools.js +333 -176
- package/lib/mcp/tools/automationTools.js.map +1 -1
- package/lib/mcp/tools/bestPracticesEngine.js +161 -23
- package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
- package/lib/mcp/tools/connectionTools.d.ts +4 -0
- package/lib/mcp/tools/connectionTools.js +242 -0
- package/lib/mcp/tools/connectionTools.js.map +1 -0
- package/lib/mcp/tools/defectTools.d.ts +1 -1
- package/lib/mcp/tools/defectTools.js +61 -50
- package/lib/mcp/tools/defectTools.js.map +1 -1
- package/lib/mcp/tools/descHelper.d.ts +5 -0
- package/lib/mcp/tools/descHelper.js +14 -0
- package/lib/mcp/tools/descHelper.js.map +1 -0
- package/lib/mcp/tools/hierarchyValidate.d.ts +1 -1
- package/lib/mcp/tools/hierarchyValidate.js +127 -42
- package/lib/mcp/tools/hierarchyValidate.js.map +1 -1
- package/lib/mcp/tools/nitroXTools.d.ts +23 -0
- package/lib/mcp/tools/nitroXTools.js +863 -0
- package/lib/mcp/tools/nitroXTools.js.map +1 -0
- package/lib/mcp/tools/pageObjectGenerate.js +150 -57
- package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
- package/lib/mcp/tools/pageObjectValidate.js +143 -46
- package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
- package/lib/mcp/tools/projectInspect.js +79 -32
- package/lib/mcp/tools/projectInspect.js.map +1 -1
- package/lib/mcp/tools/projectValidateFromPath.js +185 -58
- package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
- package/lib/mcp/tools/propertiesTools.d.ts +2 -0
- package/lib/mcp/tools/propertiesTools.js +358 -78
- package/lib/mcp/tools/propertiesTools.js.map +1 -1
- package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
- package/lib/mcp/tools/qualityHubApiTools.js +139 -0
- package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
- package/lib/mcp/tools/qualityHubTools.js +292 -72
- package/lib/mcp/tools/qualityHubTools.js.map +1 -1
- package/lib/mcp/tools/rcaTools.d.ts +3 -2
- package/lib/mcp/tools/rcaTools.js +194 -56
- package/lib/mcp/tools/rcaTools.js.map +1 -1
- package/lib/mcp/tools/sfSpawn.d.ts +25 -3
- package/lib/mcp/tools/sfSpawn.js +154 -6
- package/lib/mcp/tools/sfSpawn.js.map +1 -1
- package/lib/mcp/tools/testCaseGenerate.js +285 -78
- package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
- package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
- package/lib/mcp/tools/testCaseStepTools.js +244 -0
- package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
- package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
- package/lib/mcp/tools/testCaseValidate.js +381 -46
- package/lib/mcp/tools/testCaseValidate.js.map +1 -1
- package/lib/mcp/tools/testPlanTools.d.ts +1 -0
- package/lib/mcp/tools/testPlanTools.js +316 -59
- package/lib/mcp/tools/testPlanTools.js.map +1 -1
- package/lib/mcp/tools/testPlanValidate.js +114 -23
- package/lib/mcp/tools/testPlanValidate.js.map +1 -1
- package/lib/mcp/tools/testSuiteValidate.js +130 -15
- package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
- package/lib/mcp/update/updateChecker.d.ts +14 -0
- package/lib/mcp/update/updateChecker.js +228 -0
- package/lib/mcp/update/updateChecker.js.map +1 -0
- package/lib/mcp/utils/detailLevel.d.ts +9 -0
- package/lib/mcp/utils/detailLevel.js +20 -0
- package/lib/mcp/utils/detailLevel.js.map +1 -0
- package/lib/mcp/utils/fieldMask.d.ts +17 -0
- package/lib/mcp/utils/fieldMask.js +75 -0
- package/lib/mcp/utils/fieldMask.js.map +1 -0
- package/lib/mcp/utils/tokenMeta.d.ts +40 -0
- package/lib/mcp/utils/tokenMeta.js +90 -0
- package/lib/mcp/utils/tokenMeta.js.map +1 -0
- package/lib/mcp/utils/validationDiff.d.ts +57 -0
- package/lib/mcp/utils/validationDiff.js +191 -0
- package/lib/mcp/utils/validationDiff.js.map +1 -0
- package/lib/mcp/utils/validationScore.d.ts +15 -0
- package/lib/mcp/utils/validationScore.js +31 -0
- package/lib/mcp/utils/validationScore.js.map +1 -0
- package/lib/services/auth/credentials.d.ts +21 -0
- package/lib/services/auth/credentials.js +75 -0
- package/lib/services/auth/credentials.js.map +1 -0
- package/lib/services/auth/loginFlow.d.ts +68 -0
- package/lib/services/auth/loginFlow.js +216 -0
- package/lib/services/auth/loginFlow.js.map +1 -0
- package/lib/services/projectValidation.d.ts +5 -2
- package/lib/services/projectValidation.js +83 -31
- package/lib/services/projectValidation.js.map +1 -1
- package/lib/services/qualityHub/client.d.ts +161 -0
- package/lib/services/qualityHub/client.js +226 -0
- package/lib/services/qualityHub/client.js.map +1 -0
- package/messages/sf.provar.auth.clear.md +16 -0
- package/messages/sf.provar.auth.login.md +31 -0
- package/messages/sf.provar.auth.rotate.md +23 -0
- package/messages/sf.provar.auth.status.md +16 -0
- package/messages/sf.provar.mcp.start.md +83 -48
- package/oclif.manifest.json +325 -28
- package/package.json +35 -12
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Provar Limited.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
/* eslint-disable camelcase */
|
|
8
|
+
import https from 'node:https';
|
|
9
|
+
import { URL as NodeURL } from 'node:url';
|
|
10
|
+
/**
|
|
11
|
+
* Map the raw API response to our internal validation result shape.
|
|
12
|
+
* Exported for unit testing; called by validateTestCaseViaApi once the stub is replaced.
|
|
13
|
+
*
|
|
14
|
+
* Mapping rules (from AWS memo 2026-04-10):
|
|
15
|
+
* raw.valid → is_valid
|
|
16
|
+
* raw.errors[].severity "critical" → issues[].severity "ERROR"
|
|
17
|
+
* raw.warnings[].severity * → issues[].severity "WARNING"
|
|
18
|
+
* raw.quality_metrics.quality_score → quality_score
|
|
19
|
+
* validity_score: 100 when valid, else max(0, 100 - errors.length * 20)
|
|
20
|
+
*/
|
|
21
|
+
export function normaliseApiResponse(raw) {
|
|
22
|
+
const issues = [
|
|
23
|
+
...raw.errors.map((v) => ({
|
|
24
|
+
rule_id: v.rule_id,
|
|
25
|
+
severity: 'ERROR',
|
|
26
|
+
message: v.message,
|
|
27
|
+
applies_to: v.applies_to?.[0],
|
|
28
|
+
suggestion: v.recommendation,
|
|
29
|
+
})),
|
|
30
|
+
...raw.warnings.map((v) => ({
|
|
31
|
+
rule_id: v.rule_id,
|
|
32
|
+
severity: 'WARNING',
|
|
33
|
+
message: v.message,
|
|
34
|
+
applies_to: v.applies_to?.[0],
|
|
35
|
+
suggestion: v.recommendation,
|
|
36
|
+
})),
|
|
37
|
+
];
|
|
38
|
+
return {
|
|
39
|
+
is_valid: raw.valid,
|
|
40
|
+
validity_score: raw.valid ? 100 : Math.max(0, 100 - raw.errors.length * 20),
|
|
41
|
+
quality_score: raw.quality_metrics.quality_score,
|
|
42
|
+
issues,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Typed errors returned when the API call fails in a known way.
|
|
47
|
+
* The MCP tool maps these to appropriate fallback behaviour.
|
|
48
|
+
*/
|
|
49
|
+
export class QualityHubAuthError extends Error {
|
|
50
|
+
code = 'AUTH_ERROR';
|
|
51
|
+
}
|
|
52
|
+
export class QualityHubRateLimitError extends Error {
|
|
53
|
+
code = 'RATE_LIMITED';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* POST /validate — submit XML to the Quality Hub validation API.
|
|
57
|
+
*
|
|
58
|
+
* Request:
|
|
59
|
+
* POST <baseUrl>/validate
|
|
60
|
+
* x-provar-key: pv_k_... (user auth — no x-api-key infra gate on this endpoint)
|
|
61
|
+
* Content-Type: application/json
|
|
62
|
+
* { "test_case_xml": "<full XML string>" }
|
|
63
|
+
*
|
|
64
|
+
* On failure the MCP tool catches and falls back to local validation
|
|
65
|
+
* (validation_source: "local_fallback"). No user-visible crash.
|
|
66
|
+
*/
|
|
67
|
+
export async function validateTestCaseViaApi(xml, apiKey, baseUrl) {
|
|
68
|
+
const body = JSON.stringify({ test_case_xml: xml });
|
|
69
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/validate`, 'POST', { 'Content-Type': 'application/json', 'x-provar-key': apiKey }, body);
|
|
70
|
+
if (status === 401) {
|
|
71
|
+
throw new QualityHubAuthError('API key is invalid, expired, or revoked. Run `sf provar auth login` to get a new key.');
|
|
72
|
+
}
|
|
73
|
+
if (status === 429) {
|
|
74
|
+
throw new QualityHubRateLimitError('Quality Hub validation rate limit exceeded. Try again later.');
|
|
75
|
+
}
|
|
76
|
+
if (!isOk(status)) {
|
|
77
|
+
throw new Error(`Quality Hub validate failed (${status}): ${responseBody}`);
|
|
78
|
+
}
|
|
79
|
+
return normaliseApiResponse(JSON.parse(responseBody));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns the Quality Hub base URL to use for API calls.
|
|
83
|
+
* Defaults to the dev environment URL; override via PROVAR_QUALITY_HUB_URL for production.
|
|
84
|
+
* Update DEFAULT_QUALITY_HUB_URL when the production URL is confirmed.
|
|
85
|
+
*/
|
|
86
|
+
const DEFAULT_QUALITY_HUB_URL = 'https://aqqlrlhga7.execute-api.us-east-1.amazonaws.com/dev';
|
|
87
|
+
/**
|
|
88
|
+
* Self-service access request page for users who do not yet have a Provar MCP account.
|
|
89
|
+
* Public HTML — no API key or Cognito token required.
|
|
90
|
+
* Update when staging/prod stages are deployed.
|
|
91
|
+
*/
|
|
92
|
+
export const REQUEST_ACCESS_URL = `${DEFAULT_QUALITY_HUB_URL}/auth/request-access`;
|
|
93
|
+
export function getQualityHubBaseUrl() {
|
|
94
|
+
return process.env.PROVAR_QUALITY_HUB_URL ?? DEFAULT_QUALITY_HUB_URL;
|
|
95
|
+
}
|
|
96
|
+
// ── Auth endpoint functions ───────────────────────────────────────────────────
|
|
97
|
+
/**
|
|
98
|
+
* POST /auth/exchange — exchange a Cognito access token for a pv_k_ key.
|
|
99
|
+
* Called immediately after PKCE callback; Cognito tokens are discarded after this call.
|
|
100
|
+
*/
|
|
101
|
+
export async function exchangeTokenForKey(cognitoAccessToken, baseUrl) {
|
|
102
|
+
const body = JSON.stringify({ access_token: cognitoAccessToken });
|
|
103
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/auth/exchange`, 'POST', { 'Content-Type': 'application/json' }, body);
|
|
104
|
+
if (status === 401)
|
|
105
|
+
throw new QualityHubAuthError(`Account not found or no active subscription.\nRequest access at: ${REQUEST_ACCESS_URL}`);
|
|
106
|
+
if (!isOk(status))
|
|
107
|
+
throw new Error(`Auth exchange failed (${status}): ${responseBody}`);
|
|
108
|
+
return JSON.parse(responseBody);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* GET /auth/status — verify a stored pv_k_ key is still valid server-side.
|
|
112
|
+
* Best-effort: callers should catch and fall back to locally cached values on failure.
|
|
113
|
+
*/
|
|
114
|
+
export async function fetchKeyStatus(apiKey, baseUrl) {
|
|
115
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/auth/status`, 'GET', {
|
|
116
|
+
'x-provar-key': apiKey,
|
|
117
|
+
});
|
|
118
|
+
if (!isOk(status))
|
|
119
|
+
throw new Error(`Auth status check failed (${status})`);
|
|
120
|
+
return JSON.parse(responseBody);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* POST /auth/revoke — invalidate a pv_k_ key on the server.
|
|
124
|
+
* Best-effort: callers should catch, log a note, then delete the local file regardless.
|
|
125
|
+
*/
|
|
126
|
+
export async function revokeKey(apiKey, baseUrl) {
|
|
127
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/auth/revoke`, 'POST', {
|
|
128
|
+
'x-provar-key': apiKey,
|
|
129
|
+
'Content-Length': '0',
|
|
130
|
+
});
|
|
131
|
+
if (!isOk(status))
|
|
132
|
+
throw new Error(`Key revocation failed (${status}): ${responseBody}`);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* POST /auth/rotate — atomically replace the current pv_k_ key with a new one.
|
|
136
|
+
* The old key is invalidated immediately. Returns the same shape as /auth/exchange.
|
|
137
|
+
* On 401: key is invalid/expired — caller should direct user to sf provar auth login.
|
|
138
|
+
*/
|
|
139
|
+
export async function rotateKey(apiKey, baseUrl) {
|
|
140
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/auth/rotate`, 'POST', {
|
|
141
|
+
'x-provar-key': apiKey,
|
|
142
|
+
'Content-Length': '0',
|
|
143
|
+
});
|
|
144
|
+
if (status === 401)
|
|
145
|
+
throw new QualityHubAuthError('API key is invalid or expired. Run `sf provar auth login` to get a new key.');
|
|
146
|
+
if (!isOk(status))
|
|
147
|
+
throw new Error(`Key rotation failed (${status}): ${responseBody}`);
|
|
148
|
+
return JSON.parse(responseBody);
|
|
149
|
+
}
|
|
150
|
+
// ── Corpus retrieval function ─────────────────────────────────────────────────
|
|
151
|
+
/**
|
|
152
|
+
* POST /corpus/retrieve — fetch N similar Provar test examples from the Bedrock KB corpus.
|
|
153
|
+
* Used by provar.qualityhub.examples.retrieve as the few-shot grounding step before
|
|
154
|
+
* the client LLM synthesises a new test case.
|
|
155
|
+
*
|
|
156
|
+
* Throws QualityHubAuthError on 401, QualityHubRateLimitError on 429.
|
|
157
|
+
* All other non-2xx responses throw a generic Error with status + body.
|
|
158
|
+
*/
|
|
159
|
+
export async function retrieveCorpusExamples(query, apiKey, baseUrl, options = {}) {
|
|
160
|
+
const n = Math.min(Math.max(options.n ?? 5, 1), 10);
|
|
161
|
+
const body = JSON.stringify({
|
|
162
|
+
query,
|
|
163
|
+
n,
|
|
164
|
+
...(options.app_filter !== undefined ? { app_filter: options.app_filter } : {}),
|
|
165
|
+
prefer_high_quality: options.prefer_high_quality ?? true,
|
|
166
|
+
});
|
|
167
|
+
const { status, responseBody } = await httpsRequest(`${baseUrl}/corpus/retrieve`, 'POST', { 'Content-Type': 'application/json', 'x-provar-key': apiKey }, body);
|
|
168
|
+
if (status === 401) {
|
|
169
|
+
throw new QualityHubAuthError('API key is invalid, expired, or revoked. Run `sf provar auth login` to get a new key.');
|
|
170
|
+
}
|
|
171
|
+
if (status === 429) {
|
|
172
|
+
throw new QualityHubRateLimitError('Quality Hub corpus retrieval rate limit exceeded. Try again later.');
|
|
173
|
+
}
|
|
174
|
+
if (!isOk(status)) {
|
|
175
|
+
throw new Error(`Corpus retrieval failed (${status}): ${responseBody}`);
|
|
176
|
+
}
|
|
177
|
+
return JSON.parse(responseBody);
|
|
178
|
+
}
|
|
179
|
+
// ── Internal HTTPS helper ─────────────────────────────────────────────────────
|
|
180
|
+
function isOk(status) {
|
|
181
|
+
return status >= 200 && status < 300;
|
|
182
|
+
}
|
|
183
|
+
const REQUEST_TIMEOUT_MS = 30000;
|
|
184
|
+
function httpsRequest(url, method, headers, body) {
|
|
185
|
+
return new Promise((resolve, reject) => {
|
|
186
|
+
const parsed = new NodeURL(url);
|
|
187
|
+
const opts = {
|
|
188
|
+
hostname: parsed.hostname,
|
|
189
|
+
port: parsed.port || undefined,
|
|
190
|
+
path: parsed.pathname + parsed.search,
|
|
191
|
+
method,
|
|
192
|
+
headers: {
|
|
193
|
+
...headers,
|
|
194
|
+
...(body ? { 'Content-Length': Buffer.byteLength(body).toString() } : {}),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
const req = https.request(opts, (res) => {
|
|
198
|
+
let data = '';
|
|
199
|
+
res.on('data', (chunk) => {
|
|
200
|
+
data += chunk.toString('utf-8');
|
|
201
|
+
});
|
|
202
|
+
res.on('end', () => resolve({ status: res.statusCode ?? 0, responseBody: data }));
|
|
203
|
+
});
|
|
204
|
+
req.setTimeout(REQUEST_TIMEOUT_MS, () => {
|
|
205
|
+
req.destroy(new Error(`Quality Hub API request timed out after ${REQUEST_TIMEOUT_MS / 1000}s`));
|
|
206
|
+
});
|
|
207
|
+
req.on('error', reject);
|
|
208
|
+
if (body)
|
|
209
|
+
req.write(body);
|
|
210
|
+
req.end();
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
// ── Indirection object used by MCP tools and testable via sinon ───────────────
|
|
214
|
+
/**
|
|
215
|
+
* MCP tools and auth commands call qualityHubClient.X() so tests can replace
|
|
216
|
+
* properties with stubs without ESM re-export issues.
|
|
217
|
+
*/
|
|
218
|
+
export const qualityHubClient = {
|
|
219
|
+
validateTestCaseViaApi,
|
|
220
|
+
exchangeTokenForKey,
|
|
221
|
+
fetchKeyStatus,
|
|
222
|
+
revokeKey,
|
|
223
|
+
rotateKey,
|
|
224
|
+
retrieveCorpusExamples,
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/qualityHub/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Remove the stored Provar API key.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Deletes the API key stored at ~/.provar/credentials.json. After clearing, the
|
|
8
|
+
provar_testcase_validate MCP tool falls back to local validation (structural rules only,
|
|
9
|
+
no Quality Hub quality scoring).
|
|
10
|
+
|
|
11
|
+
The PROVAR_API_KEY environment variable is not affected by this command.
|
|
12
|
+
|
|
13
|
+
# examples
|
|
14
|
+
|
|
15
|
+
- Clear the stored API key:
|
|
16
|
+
<%= config.bin %> <%= command.id %>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Log in to Provar Quality Hub and store your API key.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Opens a browser to the Provar login page. After you authenticate, your API key
|
|
8
|
+
is stored at ~/.provar/credentials.json and used automatically by the Provar MCP
|
|
9
|
+
tools and CI/CD integrations.
|
|
10
|
+
|
|
11
|
+
The Cognito session tokens are held in memory only for the duration of the key
|
|
12
|
+
exchange and are then discarded — only the pv*k* API key is written to disk.
|
|
13
|
+
|
|
14
|
+
Run 'sf provar auth status' after login to confirm the key is configured correctly.
|
|
15
|
+
|
|
16
|
+
Don't have an account? Request access at:
|
|
17
|
+
https://aqqlrlhga7.execute-api.us-east-1.amazonaws.com/dev/auth/request-access
|
|
18
|
+
|
|
19
|
+
# flags.url.summary
|
|
20
|
+
|
|
21
|
+
Override the Quality Hub API base URL (for testing against a non-production environment).
|
|
22
|
+
|
|
23
|
+
# examples
|
|
24
|
+
|
|
25
|
+
- Log in interactively (opens browser):
|
|
26
|
+
|
|
27
|
+
<%= config.bin %> <%= command.id %>
|
|
28
|
+
|
|
29
|
+
- Log in against a staging environment:
|
|
30
|
+
|
|
31
|
+
<%= config.bin %> <%= command.id %> --url https://dev.api.example.com
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Rotate your stored Provar Quality Hub API key.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Exchanges your current pv*k* key for a new one in a single atomic operation.
|
|
8
|
+
The old key is invalidated the moment the new key is issued — there is no window
|
|
9
|
+
where both are valid.
|
|
10
|
+
|
|
11
|
+
The new key is written to ~/.provar/credentials.json automatically.
|
|
12
|
+
|
|
13
|
+
Use this command to rotate your key on a regular schedule (every ~90 days) without
|
|
14
|
+
going through the browser login flow again.
|
|
15
|
+
|
|
16
|
+
If the current key is already expired or revoked, rotation is not possible — run
|
|
17
|
+
sf provar auth login instead to authenticate via browser and get a fresh key.
|
|
18
|
+
|
|
19
|
+
# examples
|
|
20
|
+
|
|
21
|
+
- Rotate the stored API key:
|
|
22
|
+
|
|
23
|
+
<%= config.bin %> <%= command.id %>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Show the current Provar API key configuration status.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Reports where the active API key comes from (environment variable or stored file),
|
|
8
|
+
shows the key prefix and when it was set, and states whether validation will use the
|
|
9
|
+
Quality Hub API or local rules only. The full key is never printed.
|
|
10
|
+
|
|
11
|
+
If no key is configured, guidance is shown for logging in or requesting access.
|
|
12
|
+
|
|
13
|
+
# examples
|
|
14
|
+
|
|
15
|
+
- Check auth status:
|
|
16
|
+
<%= config.bin %> <%= command.id %>
|
|
@@ -1,71 +1,106 @@
|
|
|
1
1
|
# summary
|
|
2
|
+
|
|
2
3
|
Start a local MCP server for Provar tools over stdio transport.
|
|
3
4
|
|
|
4
5
|
# description
|
|
6
|
+
|
|
5
7
|
Launches a stateless MCP (Model Context Protocol) server that exposes Provar tools to
|
|
6
8
|
AI assistants (Claude Desktop, Claude Code, Cursor) via stdio transport. All MCP
|
|
7
9
|
JSON-RPC communication happens over stdout; all internal logging goes to stderr.
|
|
8
10
|
|
|
9
11
|
Available tools:
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
13
|
+
Project & inspection:
|
|
14
|
+
|
|
15
|
+
- provardx_ping — ping the MCP server (health check)
|
|
16
|
+
- provar_project_inspect — inspect project folder inventory
|
|
17
|
+
- provar_project_validate — validate full project from disk: coverage, quality scores
|
|
18
|
+
- provar_connection_list — list connections and named environments from the project
|
|
19
|
+
|
|
20
|
+
Page Object:
|
|
21
|
+
|
|
22
|
+
- provar_pageobject_generate — generate a Java Page Object skeleton
|
|
23
|
+
- provar_pageobject_validate — validate Page Object quality and naming
|
|
24
|
+
|
|
25
|
+
Test Case:
|
|
26
|
+
|
|
27
|
+
- provar_testcase_generate — generate an XML test case skeleton
|
|
28
|
+
- provar_testcase_validate — validate test case XML (validity + best-practices scores)
|
|
29
|
+
- provar_testcase_step_edit — atomically add or remove a single step in a test case
|
|
30
|
+
|
|
31
|
+
Test Suite / Plan:
|
|
32
|
+
|
|
33
|
+
- provar_testsuite_validate — validate test suite hierarchy
|
|
34
|
+
- provar_testplan_validate — validate test plan metadata completeness
|
|
35
|
+
- provar_testplan_create — create a new test plan
|
|
36
|
+
- provar_testplan_create-suite — create a test suite under a plan
|
|
37
|
+
- provar_testplan_add-instance — add a test instance to a plan
|
|
38
|
+
- provar_testplan_remove-instance — remove a test instance from a plan
|
|
39
|
+
|
|
40
|
+
Properties files:
|
|
41
|
+
|
|
42
|
+
- provar_properties_read — read a Provar properties file
|
|
43
|
+
- provar_properties_set — set a key in a Provar properties file
|
|
44
|
+
- provar_properties_validate — validate a properties file structure
|
|
45
|
+
- provar_properties_generate — generate a properties file skeleton
|
|
46
|
+
|
|
47
|
+
Quality Hub (sf provar quality-hub wrappers):
|
|
48
|
+
|
|
49
|
+
- provar_qualityhub_connect — connect to a Quality Hub org
|
|
50
|
+
- provar_qualityhub_display — display connected org info
|
|
51
|
+
- provar_qualityhub_testrun — trigger a Quality Hub test run
|
|
52
|
+
- provar_qualityhub_testrun_report — poll test run status
|
|
53
|
+
- provar_qualityhub_testrun_abort — abort a running test run
|
|
54
|
+
- provar_qualityhub_testcase_retrieve — retrieve test case results
|
|
55
|
+
- provar_qualityhub_defect_create — create defects for failed test executions
|
|
56
|
+
- provar_qualityhub_examples_retrieve — retrieve corpus examples for test generation grounding
|
|
57
|
+
|
|
58
|
+
Automation (sf provar automation wrappers):
|
|
59
|
+
|
|
60
|
+
- provar_automation_setup — set up the Provar Automation runtime
|
|
61
|
+
- provar_automation_metadata_download — download Salesforce metadata
|
|
62
|
+
- provar_automation_compile — compile Provar test assets
|
|
63
|
+
- provar_automation_testrun — run Provar tests
|
|
64
|
+
- provar_automation_config_load — load a Provar configuration
|
|
65
|
+
|
|
66
|
+
ANT build:
|
|
67
|
+
|
|
68
|
+
- provar_ant_generate — generate an ANT build.xml
|
|
69
|
+
- provar_ant_validate — validate an ANT build.xml
|
|
70
|
+
|
|
71
|
+
Test result analysis:
|
|
72
|
+
|
|
73
|
+
- provar_testrun_rca — root cause analysis on a test result
|
|
74
|
+
- provar_testrun_report_locate — locate a test result report
|
|
75
|
+
|
|
76
|
+
NitroX (Provar NitroX component tools):
|
|
77
|
+
|
|
78
|
+
- provar_nitrox_discover — discover NitroX component metadata
|
|
79
|
+
- provar_nitrox_generate — generate a NitroX component
|
|
80
|
+
- provar_nitrox_patch — patch a NitroX component definition
|
|
81
|
+
- provar_nitrox_read — read a NitroX component definition
|
|
82
|
+
- provar_nitrox_validate — validate a NitroX component
|
|
59
83
|
|
|
60
84
|
For full tool documentation see docs/mcp.md in this repository.
|
|
61
85
|
|
|
62
86
|
# flags.allowed-paths.summary
|
|
87
|
+
|
|
63
88
|
Allowed base directory paths for file operations. Defaults to current directory.
|
|
64
89
|
|
|
65
90
|
# flags.auto-defects.summary
|
|
91
|
+
|
|
66
92
|
When enabled, testrun.report suggestions will prompt defect creation on failures.
|
|
67
93
|
|
|
94
|
+
# flags.auto-update.summary
|
|
95
|
+
|
|
96
|
+
When enabled, automatically installs the latest version at startup and exits. The MCP client must reconnect to load the new version.
|
|
97
|
+
|
|
98
|
+
# flags.no-update-check.summary
|
|
99
|
+
|
|
100
|
+
Skip the update check at startup. Also controlled by the PROVAR_NO_UPDATE_CHECK environment variable.
|
|
101
|
+
|
|
68
102
|
# examples
|
|
103
|
+
|
|
69
104
|
- Start MCP server (accepts stdio connections from Claude Desktop / Cursor):
|
|
70
105
|
<%= config.bin %> <%= command.id %>
|
|
71
106
|
- Start with explicit allowed paths:
|