@provartesting/provardx-cli 1.4.7 → 1.5.0-beta.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.
Files changed (122) hide show
  1. package/README.md +263 -9
  2. package/lib/commands/provar/automation/config/validate.js.map +1 -1
  3. package/lib/commands/provar/automation/project/validate.d.ts +14 -0
  4. package/lib/commands/provar/automation/project/validate.js +69 -0
  5. package/lib/commands/provar/automation/project/validate.js.map +1 -0
  6. package/lib/commands/provar/mcp/start.d.ts +16 -0
  7. package/lib/commands/provar/mcp/start.js +62 -0
  8. package/lib/commands/provar/mcp/start.js.map +1 -0
  9. package/lib/commands/provar/quality-hub/connect.d.ts +5 -0
  10. package/lib/commands/provar/quality-hub/connect.js +12 -0
  11. package/lib/commands/provar/quality-hub/connect.js.map +1 -0
  12. package/lib/commands/provar/quality-hub/display.d.ts +5 -0
  13. package/lib/commands/provar/quality-hub/display.js +12 -0
  14. package/lib/commands/provar/quality-hub/display.js.map +1 -0
  15. package/lib/commands/provar/quality-hub/open.d.ts +5 -0
  16. package/lib/commands/provar/quality-hub/open.js +12 -0
  17. package/lib/commands/provar/quality-hub/open.js.map +1 -0
  18. package/lib/commands/provar/quality-hub/test/run/abort.d.ts +5 -0
  19. package/lib/commands/provar/quality-hub/test/run/abort.js +12 -0
  20. package/lib/commands/provar/quality-hub/test/run/abort.js.map +1 -0
  21. package/lib/commands/provar/quality-hub/test/run/report.d.ts +5 -0
  22. package/lib/commands/provar/quality-hub/test/run/report.js +12 -0
  23. package/lib/commands/provar/quality-hub/test/run/report.js.map +1 -0
  24. package/lib/commands/provar/quality-hub/test/run.d.ts +5 -0
  25. package/lib/commands/provar/quality-hub/test/run.js +12 -0
  26. package/lib/commands/provar/quality-hub/test/run.js.map +1 -0
  27. package/lib/commands/provar/quality-hub/testcase/retrieve.d.ts +5 -0
  28. package/lib/commands/provar/quality-hub/testcase/retrieve.js +12 -0
  29. package/lib/commands/provar/quality-hub/testcase/retrieve.js.map +1 -0
  30. package/lib/mcp/licensing/algasClient.d.ts +19 -0
  31. package/lib/mcp/licensing/algasClient.js +153 -0
  32. package/lib/mcp/licensing/algasClient.js.map +1 -0
  33. package/lib/mcp/licensing/ideDetection.d.ts +22 -0
  34. package/lib/mcp/licensing/ideDetection.js +107 -0
  35. package/lib/mcp/licensing/ideDetection.js.map +1 -0
  36. package/lib/mcp/licensing/index.d.ts +5 -0
  37. package/lib/mcp/licensing/index.js +10 -0
  38. package/lib/mcp/licensing/index.js.map +1 -0
  39. package/lib/mcp/licensing/licenseCache.d.ts +20 -0
  40. package/lib/mcp/licensing/licenseCache.js +85 -0
  41. package/lib/mcp/licensing/licenseCache.js.map +1 -0
  42. package/lib/mcp/licensing/licenseError.d.ts +4 -0
  43. package/lib/mcp/licensing/licenseError.js +15 -0
  44. package/lib/mcp/licensing/licenseError.js.map +1 -0
  45. package/lib/mcp/licensing/licenseValidator.d.ts +33 -0
  46. package/lib/mcp/licensing/licenseValidator.js +110 -0
  47. package/lib/mcp/licensing/licenseValidator.js.map +1 -0
  48. package/lib/mcp/logging/logger.d.ts +7 -0
  49. package/lib/mcp/logging/logger.js +22 -0
  50. package/lib/mcp/logging/logger.js.map +1 -0
  51. package/lib/mcp/rules/page_object_validation_rules.json +344 -0
  52. package/lib/mcp/rules/provar_best_practices_rules.json +3192 -0
  53. package/lib/mcp/schemas/common.d.ts +20 -0
  54. package/lib/mcp/schemas/common.js +16 -0
  55. package/lib/mcp/schemas/common.js.map +1 -0
  56. package/lib/mcp/security/pathPolicy.d.ts +19 -0
  57. package/lib/mcp/security/pathPolicy.js +66 -0
  58. package/lib/mcp/security/pathPolicy.js.map +1 -0
  59. package/lib/mcp/server.d.ts +5 -0
  60. package/lib/mcp/server.js +62 -0
  61. package/lib/mcp/server.js.map +1 -0
  62. package/lib/mcp/tools/antTools.d.ts +21 -0
  63. package/lib/mcp/tools/antTools.js +614 -0
  64. package/lib/mcp/tools/antTools.js.map +1 -0
  65. package/lib/mcp/tools/automationTools.d.ts +15 -0
  66. package/lib/mcp/tools/automationTools.js +379 -0
  67. package/lib/mcp/tools/automationTools.js.map +1 -0
  68. package/lib/mcp/tools/bestPracticesEngine.d.ts +30 -0
  69. package/lib/mcp/tools/bestPracticesEngine.js +632 -0
  70. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -0
  71. package/lib/mcp/tools/defectTools.d.ts +15 -0
  72. package/lib/mcp/tools/defectTools.js +211 -0
  73. package/lib/mcp/tools/defectTools.js.map +1 -0
  74. package/lib/mcp/tools/hierarchyValidate.d.ts +139 -0
  75. package/lib/mcp/tools/hierarchyValidate.js +540 -0
  76. package/lib/mcp/tools/hierarchyValidate.js.map +1 -0
  77. package/lib/mcp/tools/pageObjectGenerate.d.ts +3 -0
  78. package/lib/mcp/tools/pageObjectGenerate.js +153 -0
  79. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -0
  80. package/lib/mcp/tools/pageObjectValidate.d.ts +18 -0
  81. package/lib/mcp/tools/pageObjectValidate.js +420 -0
  82. package/lib/mcp/tools/pageObjectValidate.js.map +1 -0
  83. package/lib/mcp/tools/projectInspect.d.ts +3 -0
  84. package/lib/mcp/tools/projectInspect.js +694 -0
  85. package/lib/mcp/tools/projectInspect.js.map +1 -0
  86. package/lib/mcp/tools/projectValidateFromPath.d.ts +3 -0
  87. package/lib/mcp/tools/projectValidateFromPath.js +153 -0
  88. package/lib/mcp/tools/projectValidateFromPath.js.map +1 -0
  89. package/lib/mcp/tools/propertiesTools.d.ts +7 -0
  90. package/lib/mcp/tools/propertiesTools.js +314 -0
  91. package/lib/mcp/tools/propertiesTools.js.map +1 -0
  92. package/lib/mcp/tools/qualityHubTools.d.ts +8 -0
  93. package/lib/mcp/tools/qualityHubTools.js +189 -0
  94. package/lib/mcp/tools/qualityHubTools.js.map +1 -0
  95. package/lib/mcp/tools/rcaTools.d.ts +4 -0
  96. package/lib/mcp/tools/rcaTools.js +620 -0
  97. package/lib/mcp/tools/rcaTools.js.map +1 -0
  98. package/lib/mcp/tools/sfSpawn.d.ts +28 -0
  99. package/lib/mcp/tools/sfSpawn.js +56 -0
  100. package/lib/mcp/tools/sfSpawn.js.map +1 -0
  101. package/lib/mcp/tools/testCaseGenerate.d.ts +3 -0
  102. package/lib/mcp/tools/testCaseGenerate.js +221 -0
  103. package/lib/mcp/tools/testCaseGenerate.js.map +1 -0
  104. package/lib/mcp/tools/testCaseValidate.d.ts +20 -0
  105. package/lib/mcp/tools/testCaseValidate.js +232 -0
  106. package/lib/mcp/tools/testCaseValidate.js.map +1 -0
  107. package/lib/mcp/tools/testPlanTools.d.ts +6 -0
  108. package/lib/mcp/tools/testPlanTools.js +311 -0
  109. package/lib/mcp/tools/testPlanTools.js.map +1 -0
  110. package/lib/mcp/tools/testPlanValidate.d.ts +2 -0
  111. package/lib/mcp/tools/testPlanValidate.js +75 -0
  112. package/lib/mcp/tools/testPlanValidate.js.map +1 -0
  113. package/lib/mcp/tools/testSuiteValidate.d.ts +2 -0
  114. package/lib/mcp/tools/testSuiteValidate.js +63 -0
  115. package/lib/mcp/tools/testSuiteValidate.js.map +1 -0
  116. package/lib/services/projectValidation.d.ts +119 -0
  117. package/lib/services/projectValidation.js +678 -0
  118. package/lib/services/projectValidation.js.map +1 -0
  119. package/messages/sf.provar.automation.project.validate.md +52 -0
  120. package/messages/sf.provar.mcp.start.md +74 -0
  121. package/oclif.manifest.json +1370 -1
  122. package/package.json +48 -26
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectInspect.js","sourceRoot":"","sources":["../../../src/mcp/tools/projectInspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerConfig } from '../server.js';
3
+ export declare function registerProjectValidateFromPath(server: McpServer, config: ServerConfig): void;
@@ -0,0 +1,153 @@
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 { z } from 'zod';
9
+ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
10
+ import { makeError, makeRequestId } from '../schemas/common.js';
11
+ import { log } from '../logging/logger.js';
12
+ import { validateProjectFromPath, ProjectValidationError } from '../../services/projectValidation.js';
13
+ function buildPlanSummary(plan) {
14
+ const test_case_count = plan.suites.reduce((n, s) => n + s.test_cases.length, 0)
15
+ + plan.unplanned_test_cases.length;
16
+ return {
17
+ name: plan.name,
18
+ quality_score: plan.quality_score,
19
+ suite_count: plan.suites.length,
20
+ test_case_count,
21
+ violation_count: plan.violations.length,
22
+ };
23
+ }
24
+ function groupViolations(violations) {
25
+ const byRule = new Map();
26
+ for (const v of violations) {
27
+ const existing = byRule.get(v.rule_id);
28
+ if (existing) {
29
+ existing.count += 1;
30
+ }
31
+ else {
32
+ byRule.set(v.rule_id, { rule_id: v.rule_id, count: 1, sample_message: v.message });
33
+ }
34
+ }
35
+ return [...byRule.values()].sort((a, b) => b.count - a.count);
36
+ }
37
+ function shapeResponse(result, includePlanDetails, maxUncovered, maxViolations) {
38
+ const { uncovered_test_cases, ...coverageRest } = result.coverage;
39
+ const uncovered_shown = uncovered_test_cases.slice(0, maxUncovered);
40
+ const uncovered_truncated = uncovered_test_cases.length > maxUncovered;
41
+ const coverage = {
42
+ ...coverageRest,
43
+ uncovered_test_cases: uncovered_shown,
44
+ ...(uncovered_truncated
45
+ ? { uncovered_truncated: true, uncovered_total: uncovered_test_cases.length }
46
+ : {}),
47
+ };
48
+ if (includePlanDetails) {
49
+ const projViolationsShown = result.project_violations.slice(0, maxViolations);
50
+ const projViolationsTruncated = result.project_violations.length > maxViolations;
51
+ return {
52
+ ...result,
53
+ coverage,
54
+ project_violations: projViolationsShown,
55
+ ...(projViolationsTruncated ? { project_violations_total: result.project_violations.length } : {}),
56
+ };
57
+ }
58
+ // Slim default: grouped rule counts only, no per-violation detail
59
+ return {
60
+ project_path: result.project_path,
61
+ project_name: result.project_name,
62
+ quality_score: result.quality_score,
63
+ quality_tier: result.quality_tier,
64
+ quality_grade: result.quality_grade,
65
+ summary: result.summary,
66
+ project_violations_by_rule: groupViolations(result.project_violations),
67
+ project_violations_total: result.project_violations.length,
68
+ plans_summary: result.plans.map(buildPlanSummary),
69
+ coverage,
70
+ saved_to: result.saved_to,
71
+ ...(result.save_error ? { save_error: result.save_error } : {}),
72
+ hint: 'Set include_plan_details:true to get per-suite/test-case violations. project_violations and plan violations are grouped by rule_id in this view.',
73
+ };
74
+ }
75
+ // ── Tool registration ─────────────────────────────────────────────────────────
76
+ export function registerProjectValidateFromPath(server, config) {
77
+ server.tool('provar.project.validate', [
78
+ 'Validate a Provar project directly from its directory on disk.',
79
+ 'Reads the plan/suite/testinstance hierarchy from the plans/ directory,',
80
+ 'resolves test case XML from the tests/ directory, extracts project context',
81
+ '(connections, environments, secrets) from the .testproject file, then runs',
82
+ 'the full validation rule set.',
83
+ 'Returns a compact quality score, violation summary, and per-plan/suite scores.',
84
+ 'By default returns a slim summary response to avoid token explosion.',
85
+ 'Pass include_plan_details:true to get full per-suite and per-test-case data.',
86
+ 'By default saves a QH-compatible JSON report to',
87
+ '{project_path}/provardx/validation/ (created if absent).',
88
+ 'IMPORTANT: Use this tool for whole-project validation —',
89
+ 'DO NOT read individual test case files and pass XML content inline.',
90
+ 'Pass a project_path and let this tool handle all file reading.',
91
+ ].join(' '), {
92
+ project_path: z.string().describe('Absolute path to the Provar project root (the directory containing the .testproject file)'),
93
+ quality_threshold: z.number().min(0).max(100).optional().default(80).describe('Minimum quality score for a test case to be considered valid (default: 80)'),
94
+ save_results: z.boolean().optional().default(true).describe('Write a QH-compatible JSON report to provardx/validation/ (default: true)'),
95
+ results_dir: z.string().optional().describe('Override the output directory for the saved report (default: {project_path}/provardx/validation)'),
96
+ include_plan_details: z
97
+ .boolean()
98
+ .optional()
99
+ .default(false)
100
+ .describe('When true, include full per-suite and per-test-case violation data in the response. ' +
101
+ 'Default false to keep response small. Use only when you need to inspect specific test case failures.'),
102
+ max_uncovered: z
103
+ .number()
104
+ .int()
105
+ .min(0)
106
+ .optional()
107
+ .default(20)
108
+ .describe('Maximum number of uncovered test case paths to include in the response (default: 20). Set to 0 for none, or a large number for all.'),
109
+ max_violations: z
110
+ .number()
111
+ .int()
112
+ .min(0)
113
+ .optional()
114
+ .default(50)
115
+ .describe('When include_plan_details:true, caps project_violations returned (default: 50). Ignored in slim mode where violations are grouped by rule_id instead.'),
116
+ }, ({ project_path, quality_threshold, save_results, results_dir, include_plan_details, max_uncovered, max_violations }) => {
117
+ const requestId = makeRequestId();
118
+ log('info', 'provar.project.validate', { requestId, project_path, include_plan_details });
119
+ try {
120
+ assertPathAllowed(project_path, config.allowedPaths);
121
+ if (results_dir)
122
+ assertPathAllowed(results_dir, config.allowedPaths);
123
+ const result = validateProjectFromPath({
124
+ project_path,
125
+ quality_threshold,
126
+ save_results,
127
+ results_dir,
128
+ });
129
+ if (result.save_error) {
130
+ log('warn', 'provar.project.validate: could not save results', { requestId, error: result.save_error });
131
+ }
132
+ const shaped = shapeResponse(result, include_plan_details, max_uncovered, max_violations);
133
+ const response = { requestId, ...shaped };
134
+ return {
135
+ content: [{ type: 'text', text: JSON.stringify(response) }],
136
+ structuredContent: response,
137
+ };
138
+ }
139
+ catch (err) {
140
+ const error = err;
141
+ const code = error instanceof PathPolicyError
142
+ ? error.code
143
+ : error instanceof ProjectValidationError
144
+ ? error.code
145
+ : (error.code ?? 'VALIDATE_ERROR');
146
+ const isUserError = error instanceof PathPolicyError || error instanceof ProjectValidationError;
147
+ const errResult = makeError(code, error.message, requestId, !isUserError);
148
+ log('error', 'provar.project.validate failed', { requestId, error: error.message });
149
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
150
+ }
151
+ });
152
+ }
153
+ //# sourceMappingURL=projectValidateFromPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectValidateFromPath.js","sourceRoot":"","sources":["../../../src/mcp/tools/projectValidateFromPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerConfig } from '../server.js';
3
+ export declare function registerPropertiesGenerate(server: McpServer, config: ServerConfig): void;
4
+ export declare function registerPropertiesRead(server: McpServer, config: ServerConfig): void;
5
+ export declare function registerPropertiesSet(server: McpServer, config: ServerConfig): void;
6
+ export declare function registerPropertiesValidate(server: McpServer, config: ServerConfig): void;
7
+ export declare function registerAllPropertiesTools(server: McpServer, config: ServerConfig): void;
@@ -0,0 +1,314 @@
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 fs from 'node:fs';
9
+ import path from 'node:path';
10
+ import { z } from 'zod';
11
+ import { propertyFileContent } from '@provartesting/provardx-plugins-utils';
12
+ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
13
+ import { makeError, makeRequestId } from '../schemas/common.js';
14
+ import { log } from '../logging/logger.js';
15
+ const TOP_REQUIRED = ['provarHome', 'projectPath', 'resultsPath', 'metadata', 'environment'];
16
+ const METADATA_REQUIRED = ['metadataLevel', 'cachePath'];
17
+ const ENV_REQUIRED = ['webBrowser', 'webBrowserConfig', 'webBrowserProviderName', 'webBrowserDeviceName'];
18
+ const VALID_RESULTS_DISPOSITION = ['Increment', 'Replace', 'Fail'];
19
+ const VALID_OUTPUT_LEVELS = ['BASIC', 'DETAILED', 'DIAGNOSTIC'];
20
+ const VALID_PLUGIN_LEVELS = ['SEVERE', 'WARNING', 'INFO', 'FINE', 'FINER', 'FINEST'];
21
+ const VALID_BROWSERS = ['Chrome', 'Safari', 'Edge', 'Edge_Legacy', 'Firefox', 'IE', 'Chrome_Headless'];
22
+ const VALID_METADATA_LEVELS = ['Reuse', 'Reload', 'Refresh'];
23
+ // eslint-disable-next-line complexity
24
+ function validateProperties(props) {
25
+ const errors = [];
26
+ // Required top-level fields
27
+ for (const field of TOP_REQUIRED) {
28
+ const val = props[field];
29
+ if (val === undefined || val === null) {
30
+ errors.push({ field, message: `Required field "${field}" is missing`, severity: 'error' });
31
+ }
32
+ else if (typeof val === 'string' && val.trim() === '') {
33
+ errors.push({ field, message: `Required field "${field}" must not be empty`, severity: 'error' });
34
+ }
35
+ }
36
+ // metadata object
37
+ const meta = props['metadata'];
38
+ if (meta && typeof meta === 'object') {
39
+ for (const f of METADATA_REQUIRED) {
40
+ if (!meta[f])
41
+ errors.push({ field: `metadata.${f}`, message: `Required field "metadata.${f}" is missing`, severity: 'error' });
42
+ }
43
+ if (meta['metadataLevel'] && !VALID_METADATA_LEVELS.includes(meta['metadataLevel'])) {
44
+ errors.push({ field: 'metadata.metadataLevel', message: `metadata.metadataLevel must be one of: ${VALID_METADATA_LEVELS.join(', ')}`, severity: 'error' });
45
+ }
46
+ }
47
+ // environment object
48
+ const env = props['environment'];
49
+ if (env && typeof env === 'object') {
50
+ for (const f of ENV_REQUIRED) {
51
+ if (!env[f])
52
+ errors.push({ field: `environment.${f}`, message: `Required field "environment.${f}" is missing`, severity: 'error' });
53
+ }
54
+ if (env['webBrowser'] && !VALID_BROWSERS.includes(env['webBrowser'])) {
55
+ errors.push({ field: 'environment.webBrowser', message: `webBrowser must be one of: ${VALID_BROWSERS.join(', ')}`, severity: 'error' });
56
+ }
57
+ }
58
+ // Optional enum fields
59
+ if (props['resultsPathDisposition'] && !VALID_RESULTS_DISPOSITION.includes(props['resultsPathDisposition'])) {
60
+ errors.push({ field: 'resultsPathDisposition', message: `Must be one of: ${VALID_RESULTS_DISPOSITION.join(', ')}`, severity: 'error' });
61
+ }
62
+ if (props['testOutputLevel'] && !VALID_OUTPUT_LEVELS.includes(props['testOutputLevel'])) {
63
+ errors.push({ field: 'testOutputLevel', message: `Must be one of: ${VALID_OUTPUT_LEVELS.join(', ')}`, severity: 'error' });
64
+ }
65
+ if (props['pluginOutputlevel'] && !VALID_PLUGIN_LEVELS.includes(props['pluginOutputlevel'])) {
66
+ errors.push({ field: 'pluginOutputlevel', message: `Must be one of: ${VALID_PLUGIN_LEVELS.join(', ')}`, severity: 'error' });
67
+ }
68
+ // Warn about placeholder values still in file
69
+ const placeholders = ['${PROVAR_HOME}', '${PROVAR_PROJECT_PATH}', '${PROVAR_RESULTS_PATH}', '${PROVAR_TEST_ENVIRONMENT}', '${PROVAR_TEST_PROJECT_SECRETS}'];
70
+ for (const [key, value] of Object.entries(props)) {
71
+ if (typeof value === 'string' && placeholders.includes(value)) {
72
+ errors.push({ field: key, message: `Field "${key}" still contains placeholder value "${value}" — replace with actual path or use an environment variable`, severity: 'warning' });
73
+ }
74
+ }
75
+ return errors;
76
+ }
77
+ /** Deep merge: source values overwrite target values recursively for objects. */
78
+ function deepMerge(target, source) {
79
+ const result = { ...target };
80
+ for (const [key, val] of Object.entries(source)) {
81
+ if (val !== null && typeof val === 'object' && !Array.isArray(val) &&
82
+ result[key] !== null && typeof result[key] === 'object' && !Array.isArray(result[key])) {
83
+ result[key] = deepMerge(result[key], val);
84
+ }
85
+ else {
86
+ result[key] = val;
87
+ }
88
+ }
89
+ return result;
90
+ }
91
+ // ── provar.properties.generate ────────────────────────────────────────────────
92
+ export function registerPropertiesGenerate(server, config) {
93
+ server.tool('provar.properties.generate', [
94
+ 'Generate a provardx-properties.json file from the standard template.',
95
+ 'Optionally pre-fills projectPath and provarHome if provided.',
96
+ 'The generated file uses ${PLACEHOLDER} values that must be replaced before running tests.',
97
+ 'Use provar.properties.set afterwards to update specific fields.',
98
+ ].join(' '), {
99
+ output_path: z.string().describe('Where to write the file (e.g. /path/to/project/provardx-properties.json)'),
100
+ project_path: z.string().optional().describe('Pre-fill the projectPath field with this value'),
101
+ provar_home: z.string().optional().describe('Pre-fill the provarHome field with this value'),
102
+ results_path: z.string().optional().describe('Pre-fill the resultsPath field with this value'),
103
+ overwrite: z.boolean().optional().default(false).describe('Overwrite the file if it already exists (default: false)'),
104
+ dry_run: z.boolean().optional().default(false).describe('Return the content without writing (default: false)'),
105
+ }, ({ output_path, project_path, provar_home, results_path, overwrite, dry_run }) => {
106
+ const requestId = makeRequestId();
107
+ log('info', 'provar.properties.generate', { requestId, output_path });
108
+ try {
109
+ assertPathAllowed(output_path, config.allowedPaths);
110
+ const resolved = path.resolve(output_path);
111
+ if (!overwrite && fs.existsSync(resolved)) {
112
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('FILE_EXISTS', `File already exists: ${resolved}. Set overwrite: true to replace it.`, requestId)) }] };
113
+ }
114
+ if (!resolved.endsWith('.json')) {
115
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('INVALID_PATH', 'output_path must end with .json', requestId)) }] };
116
+ }
117
+ // Start from the template and apply any provided overrides
118
+ const content = { ...propertyFileContent };
119
+ if (project_path)
120
+ content['projectPath'] = project_path;
121
+ if (provar_home)
122
+ content['provarHome'] = provar_home;
123
+ if (results_path)
124
+ content['resultsPath'] = results_path;
125
+ const json = JSON.stringify(content, null, 2);
126
+ if (!dry_run) {
127
+ fs.mkdirSync(path.dirname(resolved), { recursive: true });
128
+ fs.writeFileSync(resolved, json, 'utf-8');
129
+ }
130
+ const nextSteps = dry_run
131
+ ? 'Review the content, write to disk, then run provar.automation.config.load to register this file before compiling or running tests.'
132
+ : `Run provar.automation.config.load with properties_path "${resolved}" to register this configuration. Required before provar.automation.compile or provar.automation.testrun will work.`;
133
+ const response = { requestId, file_path: resolved, written: !dry_run, dry_run: dry_run ?? false, content, next_steps: nextSteps };
134
+ return {
135
+ content: [{ type: 'text', text: JSON.stringify(response) }],
136
+ structuredContent: response,
137
+ };
138
+ }
139
+ catch (err) {
140
+ const error = err;
141
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'GENERATE_ERROR'), error.message, requestId)) }] };
142
+ }
143
+ });
144
+ }
145
+ // ── provar.properties.read ────────────────────────────────────────────────────
146
+ export function registerPropertiesRead(server, config) {
147
+ server.tool('provar.properties.read', 'Read and parse a provardx-properties.json file. Returns the parsed content so you can inspect current settings before making changes with provar.properties.set.', {
148
+ file_path: z.string().describe('Path to the provardx-properties.json file'),
149
+ }, ({ file_path }) => {
150
+ const requestId = makeRequestId();
151
+ log('info', 'provar.properties.read', { requestId, file_path });
152
+ try {
153
+ assertPathAllowed(file_path, config.allowedPaths);
154
+ const resolved = path.resolve(file_path);
155
+ if (!fs.existsSync(resolved)) {
156
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('FILE_NOT_FOUND', `File not found: ${resolved}`, requestId)) }] };
157
+ }
158
+ const raw = fs.readFileSync(resolved, 'utf-8');
159
+ let parsed;
160
+ try {
161
+ parsed = JSON.parse(raw);
162
+ }
163
+ catch {
164
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('MALFORMED_JSON', 'File is not valid JSON', requestId)) }] };
165
+ }
166
+ const response = { requestId, file_path: resolved, content: parsed };
167
+ return {
168
+ content: [{ type: 'text', text: JSON.stringify(response) }],
169
+ structuredContent: response,
170
+ };
171
+ }
172
+ catch (err) {
173
+ const error = err;
174
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'READ_ERROR'), error.message, requestId)) }] };
175
+ }
176
+ });
177
+ }
178
+ // ── provar.properties.set ─────────────────────────────────────────────────────
179
+ const updatesSchema = z.object({
180
+ provarHome: z.string().optional().describe('Path to Provar installation directory'),
181
+ projectPath: z.string().optional().describe('Path to the Provar test project root'),
182
+ resultsPath: z.string().optional().describe('Path where test results will be written'),
183
+ resultsPathDisposition: z.enum(['Increment', 'Replace', 'Fail']).optional().describe('What to do if results path already exists'),
184
+ testOutputLevel: z.enum(['BASIC', 'DETAILED', 'DIAGNOSTIC']).optional().describe('Amount of test output logged'),
185
+ pluginOutputlevel: z.enum(['SEVERE', 'WARNING', 'INFO', 'FINE', 'FINER', 'FINEST']).optional().describe('Amount of plugin output logged'),
186
+ stopOnError: z.boolean().optional().describe('Abort test run on first failure'),
187
+ excludeCallable: z.boolean().optional().describe('Omit callable test cases from execution'),
188
+ testprojectSecrets: z.string().optional().describe('Test project secrets encryption password'),
189
+ environment: z.object({
190
+ testEnvironment: z.string().optional().describe('Name of the test environment to run against'),
191
+ webBrowser: z.enum(['Chrome', 'Safari', 'Edge', 'Edge_Legacy', 'Firefox', 'IE', 'Chrome_Headless']).optional(),
192
+ webBrowserConfig: z.string().optional(),
193
+ webBrowserProviderName: z.string().optional(),
194
+ webBrowserDeviceName: z.string().optional(),
195
+ }).optional().describe('Test execution environment settings'),
196
+ metadata: z.object({
197
+ metadataLevel: z.enum(['Reuse', 'Reload', 'Refresh']).optional().describe('Salesforce metadata cache strategy'),
198
+ cachePath: z.string().optional().describe('Path for the metadata cache'),
199
+ }).optional().describe('Salesforce metadata settings'),
200
+ testCase: z.array(z.string()).optional().describe('Specific test case file paths to run (relative to projectPath/tests/). NOTE: <dataTable> data-driven iteration does NOT work in this mode — data table variables resolve as null. To run data-driven tests, add the test case to a plan with provar.testplan.add-instance and run via testPlan instead.'),
201
+ testPlan: z.array(z.string()).optional().describe('Test plan names to run (wildcards permitted)'),
202
+ connectionOverride: z.array(z.object({
203
+ connection: z.string().describe('Provar connection name'),
204
+ username: z.string().describe('SFDX username or alias to substitute'),
205
+ })).optional().describe('Override Provar connections with SFDX usernames'),
206
+ }).describe('Fields to update in the properties file — only provided fields are changed');
207
+ export function registerPropertiesSet(server, config) {
208
+ server.tool('provar.properties.set', [
209
+ 'Update one or more fields in a provardx-properties.json file.',
210
+ 'Only the provided fields are changed — all other fields are preserved.',
211
+ 'Object fields (environment, metadata) are deep-merged.',
212
+ 'Array fields (testCase, testPlan, connectionOverride) replace the existing value entirely.',
213
+ 'Use provar.properties.read first to inspect the current state.',
214
+ ].join(' '), {
215
+ file_path: z.string().describe('Path to the provardx-properties.json file to update'),
216
+ updates: updatesSchema,
217
+ }, ({ file_path, updates }) => {
218
+ const requestId = makeRequestId();
219
+ log('info', 'provar.properties.set', { requestId, file_path });
220
+ try {
221
+ assertPathAllowed(file_path, config.allowedPaths);
222
+ const resolved = path.resolve(file_path);
223
+ if (!fs.existsSync(resolved)) {
224
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('FILE_NOT_FOUND', `File not found: ${resolved}. Use provar.properties.generate to create it first.`, requestId)) }] };
225
+ }
226
+ let current;
227
+ try {
228
+ current = JSON.parse(fs.readFileSync(resolved, 'utf-8'));
229
+ }
230
+ catch {
231
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('MALFORMED_JSON', 'Existing file is not valid JSON', requestId)) }] };
232
+ }
233
+ const updatesRecord = updates;
234
+ const merged = deepMerge(current, updatesRecord);
235
+ const updatedFields = Object.keys(updatesRecord);
236
+ fs.writeFileSync(resolved, JSON.stringify(merged, null, 2), 'utf-8');
237
+ const response = { requestId, file_path: resolved, updated_fields: updatedFields, content: merged };
238
+ return {
239
+ content: [{ type: 'text', text: JSON.stringify(response) }],
240
+ structuredContent: response,
241
+ };
242
+ }
243
+ catch (err) {
244
+ const error = err;
245
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'SET_ERROR'), error.message, requestId)) }] };
246
+ }
247
+ });
248
+ }
249
+ // ── provar.properties.validate ────────────────────────────────────────────────
250
+ export function registerPropertiesValidate(server, config) {
251
+ server.tool('provar.properties.validate', [
252
+ 'Validate a provardx-properties.json file against the ProvarDX schema.',
253
+ 'Checks required fields, valid enum values, and warns about unfilled placeholder values.',
254
+ 'Accepts either a file path or inline JSON content.',
255
+ ].join(' '), {
256
+ file_path: z.string().optional().describe('Path to the provardx-properties.json file to validate'),
257
+ content: z.string().optional().describe('Inline JSON string to validate (alternative to file_path)'),
258
+ }, ({ file_path, content }) => {
259
+ const requestId = makeRequestId();
260
+ log('info', 'provar.properties.validate', { requestId, file_path });
261
+ if (!file_path && !content) {
262
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('MISSING_INPUT', 'Provide either file_path or content', requestId)) }] };
263
+ }
264
+ try {
265
+ let rawJson;
266
+ if (file_path) {
267
+ assertPathAllowed(file_path, config.allowedPaths);
268
+ const resolved = path.resolve(file_path);
269
+ if (!fs.existsSync(resolved)) {
270
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('FILE_NOT_FOUND', `File not found: ${resolved}`, requestId)) }] };
271
+ }
272
+ rawJson = fs.readFileSync(resolved, 'utf-8');
273
+ }
274
+ else {
275
+ rawJson = content;
276
+ }
277
+ let parsed;
278
+ try {
279
+ parsed = JSON.parse(rawJson);
280
+ }
281
+ catch {
282
+ const response = { requestId, is_valid: false, error_count: 1, warning_count: 0, errors: [{ field: '(root)', message: 'File is not valid JSON', severity: 'error' }], warnings: [] };
283
+ return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
284
+ }
285
+ const allIssues = validateProperties(parsed);
286
+ const errors = allIssues.filter((e) => e.severity === 'error');
287
+ const warnings = allIssues.filter((e) => e.severity === 'warning');
288
+ const response = {
289
+ requestId,
290
+ is_valid: errors.length === 0,
291
+ error_count: errors.length,
292
+ warning_count: warnings.length,
293
+ errors,
294
+ warnings,
295
+ };
296
+ return {
297
+ content: [{ type: 'text', text: JSON.stringify(response) }],
298
+ structuredContent: response,
299
+ };
300
+ }
301
+ catch (err) {
302
+ const error = err;
303
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'VALIDATE_ERROR'), error.message, requestId)) }] };
304
+ }
305
+ });
306
+ }
307
+ // ── Convenience re-export ─────────────────────────────────────────────────────
308
+ export function registerAllPropertiesTools(server, config) {
309
+ registerPropertiesGenerate(server, config);
310
+ registerPropertiesRead(server, config);
311
+ registerPropertiesSet(server, config);
312
+ registerPropertiesValidate(server, config);
313
+ }
314
+ //# sourceMappingURL=propertiesTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propertiesTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/propertiesTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerQualityHubConnect(server: McpServer): void;
3
+ export declare function registerQualityHubDisplay(server: McpServer): void;
4
+ export declare function registerQualityHubTestRun(server: McpServer): void;
5
+ export declare function registerQualityHubTestRunReport(server: McpServer): void;
6
+ export declare function registerQualityHubTestRunAbort(server: McpServer): void;
7
+ export declare function registerQualityHubTestcaseRetrieve(server: McpServer): void;
8
+ export declare function registerAllQualityHubTools(server: McpServer): void;