@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.
Files changed (147) hide show
  1. package/README.md +163 -12
  2. package/bin/mcp-start.js +74 -0
  3. package/lib/commands/provar/auth/clear.d.ts +7 -0
  4. package/lib/commands/provar/auth/clear.js +36 -0
  5. package/lib/commands/provar/auth/clear.js.map +1 -0
  6. package/lib/commands/provar/auth/login.d.ts +10 -0
  7. package/lib/commands/provar/auth/login.js +90 -0
  8. package/lib/commands/provar/auth/login.js.map +1 -0
  9. package/lib/commands/provar/auth/rotate.d.ts +7 -0
  10. package/lib/commands/provar/auth/rotate.js +42 -0
  11. package/lib/commands/provar/auth/rotate.js.map +1 -0
  12. package/lib/commands/provar/auth/status.d.ts +7 -0
  13. package/lib/commands/provar/auth/status.js +107 -0
  14. package/lib/commands/provar/auth/status.js.map +1 -0
  15. package/lib/commands/provar/mcp/start.d.ts +2 -0
  16. package/lib/commands/provar/mcp/start.js +14 -1
  17. package/lib/commands/provar/mcp/start.js.map +1 -1
  18. package/lib/mcp/docs/NITROX_CATALOG_SOURCE.json +6 -0
  19. package/lib/mcp/docs/NITROX_COMPONENT_CATALOG.md +2001 -0
  20. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
  21. package/lib/mcp/docs/PROVAR_TOOL_GUIDE.md +187 -0
  22. package/lib/mcp/licensing/algasClient.js +14 -5
  23. package/lib/mcp/licensing/algasClient.js.map +1 -1
  24. package/lib/mcp/licensing/ideDetection.d.ts +0 -12
  25. package/lib/mcp/licensing/ideDetection.js +1 -73
  26. package/lib/mcp/licensing/ideDetection.js.map +1 -1
  27. package/lib/mcp/licensing/licenseCache.js +7 -1
  28. package/lib/mcp/licensing/licenseCache.js.map +1 -1
  29. package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
  30. package/lib/mcp/licensing/licenseValidator.js +11 -4
  31. package/lib/mcp/licensing/licenseValidator.js.map +1 -1
  32. package/lib/mcp/prompts/guidePrompts.d.ts +4 -0
  33. package/lib/mcp/prompts/guidePrompts.js +334 -0
  34. package/lib/mcp/prompts/guidePrompts.js.map +1 -0
  35. package/lib/mcp/prompts/index.d.ts +2 -0
  36. package/lib/mcp/prompts/index.js +23 -0
  37. package/lib/mcp/prompts/index.js.map +1 -0
  38. package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
  39. package/lib/mcp/prompts/loopPrompts.js +435 -0
  40. package/lib/mcp/prompts/loopPrompts.js.map +1 -0
  41. package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
  42. package/lib/mcp/prompts/migrationPrompts.js +207 -0
  43. package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
  44. package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
  45. package/lib/mcp/security/pathPolicy.d.ts +5 -0
  46. package/lib/mcp/security/pathPolicy.js +58 -3
  47. package/lib/mcp/security/pathPolicy.js.map +1 -1
  48. package/lib/mcp/server.d.ts +18 -0
  49. package/lib/mcp/server.js +232 -19
  50. package/lib/mcp/server.js.map +1 -1
  51. package/lib/mcp/tools/antTools.d.ts +15 -0
  52. package/lib/mcp/tools/antTools.js +369 -170
  53. package/lib/mcp/tools/antTools.js.map +1 -1
  54. package/lib/mcp/tools/automationTools.d.ts +18 -8
  55. package/lib/mcp/tools/automationTools.js +333 -176
  56. package/lib/mcp/tools/automationTools.js.map +1 -1
  57. package/lib/mcp/tools/bestPracticesEngine.js +161 -23
  58. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
  59. package/lib/mcp/tools/connectionTools.d.ts +4 -0
  60. package/lib/mcp/tools/connectionTools.js +242 -0
  61. package/lib/mcp/tools/connectionTools.js.map +1 -0
  62. package/lib/mcp/tools/defectTools.d.ts +1 -1
  63. package/lib/mcp/tools/defectTools.js +61 -50
  64. package/lib/mcp/tools/defectTools.js.map +1 -1
  65. package/lib/mcp/tools/descHelper.d.ts +5 -0
  66. package/lib/mcp/tools/descHelper.js +14 -0
  67. package/lib/mcp/tools/descHelper.js.map +1 -0
  68. package/lib/mcp/tools/hierarchyValidate.d.ts +1 -1
  69. package/lib/mcp/tools/hierarchyValidate.js +127 -42
  70. package/lib/mcp/tools/hierarchyValidate.js.map +1 -1
  71. package/lib/mcp/tools/nitroXTools.d.ts +23 -0
  72. package/lib/mcp/tools/nitroXTools.js +863 -0
  73. package/lib/mcp/tools/nitroXTools.js.map +1 -0
  74. package/lib/mcp/tools/pageObjectGenerate.js +150 -57
  75. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  76. package/lib/mcp/tools/pageObjectValidate.js +143 -46
  77. package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
  78. package/lib/mcp/tools/projectInspect.js +79 -32
  79. package/lib/mcp/tools/projectInspect.js.map +1 -1
  80. package/lib/mcp/tools/projectValidateFromPath.js +185 -58
  81. package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
  82. package/lib/mcp/tools/propertiesTools.d.ts +2 -0
  83. package/lib/mcp/tools/propertiesTools.js +358 -78
  84. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  85. package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
  86. package/lib/mcp/tools/qualityHubApiTools.js +139 -0
  87. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
  88. package/lib/mcp/tools/qualityHubTools.js +292 -72
  89. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  90. package/lib/mcp/tools/rcaTools.d.ts +3 -2
  91. package/lib/mcp/tools/rcaTools.js +194 -56
  92. package/lib/mcp/tools/rcaTools.js.map +1 -1
  93. package/lib/mcp/tools/sfSpawn.d.ts +25 -3
  94. package/lib/mcp/tools/sfSpawn.js +154 -6
  95. package/lib/mcp/tools/sfSpawn.js.map +1 -1
  96. package/lib/mcp/tools/testCaseGenerate.js +285 -78
  97. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  98. package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
  99. package/lib/mcp/tools/testCaseStepTools.js +244 -0
  100. package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
  101. package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
  102. package/lib/mcp/tools/testCaseValidate.js +381 -46
  103. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  104. package/lib/mcp/tools/testPlanTools.d.ts +1 -0
  105. package/lib/mcp/tools/testPlanTools.js +316 -59
  106. package/lib/mcp/tools/testPlanTools.js.map +1 -1
  107. package/lib/mcp/tools/testPlanValidate.js +114 -23
  108. package/lib/mcp/tools/testPlanValidate.js.map +1 -1
  109. package/lib/mcp/tools/testSuiteValidate.js +130 -15
  110. package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
  111. package/lib/mcp/update/updateChecker.d.ts +14 -0
  112. package/lib/mcp/update/updateChecker.js +228 -0
  113. package/lib/mcp/update/updateChecker.js.map +1 -0
  114. package/lib/mcp/utils/detailLevel.d.ts +9 -0
  115. package/lib/mcp/utils/detailLevel.js +20 -0
  116. package/lib/mcp/utils/detailLevel.js.map +1 -0
  117. package/lib/mcp/utils/fieldMask.d.ts +17 -0
  118. package/lib/mcp/utils/fieldMask.js +75 -0
  119. package/lib/mcp/utils/fieldMask.js.map +1 -0
  120. package/lib/mcp/utils/tokenMeta.d.ts +40 -0
  121. package/lib/mcp/utils/tokenMeta.js +90 -0
  122. package/lib/mcp/utils/tokenMeta.js.map +1 -0
  123. package/lib/mcp/utils/validationDiff.d.ts +57 -0
  124. package/lib/mcp/utils/validationDiff.js +191 -0
  125. package/lib/mcp/utils/validationDiff.js.map +1 -0
  126. package/lib/mcp/utils/validationScore.d.ts +15 -0
  127. package/lib/mcp/utils/validationScore.js +31 -0
  128. package/lib/mcp/utils/validationScore.js.map +1 -0
  129. package/lib/services/auth/credentials.d.ts +21 -0
  130. package/lib/services/auth/credentials.js +75 -0
  131. package/lib/services/auth/credentials.js.map +1 -0
  132. package/lib/services/auth/loginFlow.d.ts +68 -0
  133. package/lib/services/auth/loginFlow.js +216 -0
  134. package/lib/services/auth/loginFlow.js.map +1 -0
  135. package/lib/services/projectValidation.d.ts +5 -2
  136. package/lib/services/projectValidation.js +83 -31
  137. package/lib/services/projectValidation.js.map +1 -1
  138. package/lib/services/qualityHub/client.d.ts +161 -0
  139. package/lib/services/qualityHub/client.js +226 -0
  140. package/lib/services/qualityHub/client.js.map +1 -0
  141. package/messages/sf.provar.auth.clear.md +16 -0
  142. package/messages/sf.provar.auth.login.md +31 -0
  143. package/messages/sf.provar.auth.rotate.md +23 -0
  144. package/messages/sf.provar.auth.status.md +16 -0
  145. package/messages/sf.provar.mcp.start.md +83 -48
  146. package/oclif.manifest.json +325 -28
  147. package/package.json +35 -12
@@ -11,25 +11,45 @@ import { z } from 'zod';
11
11
  import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
12
12
  import { makeError, makeRequestId } from '../schemas/common.js';
13
13
  import { log } from '../logging/logger.js';
14
+ import { applyDetailLevel } from '../utils/detailLevel.js';
15
+ import { maskFields, parseFieldsParam } from '../utils/fieldMask.js';
16
+ import { desc } from './descHelper.js';
17
+ const INSPECT_SUMMARY_FIELDS = ['requestId', 'project_path', 'provar_home', 'summary'];
14
18
  export function registerProjectInspect(server, config) {
15
- server.tool('provar.project.inspect', [
16
- 'Inspect a Provar project folder and return a structured inventory.',
17
- 'Returns: provardx-properties.json config files (for ProvarDX CLI runs),',
18
- 'ANT build files (build.xml etc in ANT/ dirs, for CLI/pipeline runs),',
19
- 'source page object directories with Java file counts (src/pageobjects compiled bin/ dirs excluded),',
20
- '.testcase files found recursively under tests/,',
21
- 'count of custom test step files in src/customapis/,',
22
- 'count of data source files (CSV/XLSX/JSON) in data/ and templates/ dirs,',
23
- 'test plan coverage showing which test cases are covered vs uncovered,',
24
- 'and connection + environment overview parsed from the .testproject file',
25
- '(Salesforce, UI Testing, Web Services, Quality Hub, Database, and other connection types).',
26
- ].join(' '), {
27
- project_path: z
28
- .string()
29
- .describe('Absolute or relative path to the Provar project root directory'),
30
- }, ({ project_path }) => {
19
+ server.registerTool('provar_project_inspect', {
20
+ title: 'Inspect Project',
21
+ description: desc([
22
+ 'Inspect a Provar project folder and return a structured inventory.',
23
+ 'Returns: provardx-properties.json config files (for ProvarDX CLI runs),',
24
+ 'ANT build files (build.xml etc in ANT/ dirs, for CLI/pipeline runs),',
25
+ 'source page object directories with Java file counts (src/pageobjects — compiled bin/ dirs excluded),',
26
+ '.testcase files found recursively under tests/,',
27
+ 'count of custom test step files in src/customapis/,',
28
+ 'count of data source files (CSV/XLSX/JSON) in data/ and templates/ dirs,',
29
+ 'test plan coverage showing which test cases are covered vs uncovered,',
30
+ 'and connection + environment overview parsed from the .testproject file',
31
+ '(Salesforce, UI Testing, Web Services, Quality Hub, Database, and other connection types).',
32
+ ].join(' '), 'Inspect a Provar project and return inventory of files, plans, and connections.'),
33
+ inputSchema: {
34
+ project_path: z
35
+ .string()
36
+ .describe(desc('Absolute or relative path to the Provar project root directory', 'string, absolute path to project root')),
37
+ detail: z
38
+ .enum(['summary', 'standard', 'full'])
39
+ .optional()
40
+ .default('standard')
41
+ .describe(desc('Response verbosity: "summary" returns only requestId, project_path, provar_home, and the summary object; ' +
42
+ '"standard" (default) returns the full inventory; "full" is identical to standard for this tool.', 'enum summary|standard|full, optional; default standard')),
43
+ fields: z
44
+ .string()
45
+ .optional()
46
+ .describe(desc('Comma-separated list of top-level keys to retain (e.g. "test_case_files,summary"). ' +
47
+ 'Supports dot notation for nested filtering (e.g. "test_project.connections"). ' +
48
+ 'Unknown field names are silently ignored. Applied after the detail filter.', 'string, optional; comma-separated keys to keep (supports dot notation)')),
49
+ },
50
+ }, ({ project_path, detail, fields }) => {
31
51
  const requestId = makeRequestId();
32
- log('info', 'provar.project.inspect', { requestId, project_path });
52
+ log('info', 'provar_project_inspect', { requestId, project_path });
33
53
  try {
34
54
  assertPathAllowed(project_path, config.allowedPaths);
35
55
  const resolved = path.resolve(project_path);
@@ -37,7 +57,15 @@ export function registerProjectInspect(server, config) {
37
57
  const err = makeError('PATH_NOT_FOUND', `Project path does not exist: ${resolved}`, requestId);
38
58
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(err) }] };
39
59
  }
40
- const result = buildProjectInventory(resolved, requestId);
60
+ let result = buildProjectInventory(resolved, requestId);
61
+ const detailLevel = (detail ?? 'standard');
62
+ if (detailLevel !== 'standard') {
63
+ result = applyDetailLevel(result, detailLevel, INSPECT_SUMMARY_FIELDS);
64
+ }
65
+ const fieldList = parseFieldsParam(fields);
66
+ if (fieldList) {
67
+ result = maskFields(result, fieldList);
68
+ }
41
69
  return {
42
70
  content: [{ type: 'text', text: JSON.stringify(result) }],
43
71
  structuredContent: result,
@@ -45,8 +73,8 @@ export function registerProjectInspect(server, config) {
45
73
  }
46
74
  catch (err) {
47
75
  const error = err;
48
- const errResult = makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'INSPECT_ERROR'), error.message, requestId, false);
49
- log('error', 'provar.project.inspect failed', { requestId, error: error.message });
76
+ const errResult = makeError(error instanceof PathPolicyError ? error.code : error.code ?? 'INSPECT_ERROR', error.message, requestId, false);
77
+ log('error', 'provar_project_inspect failed', { requestId, error: error.message });
50
78
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
51
79
  }
52
80
  });
@@ -216,7 +244,9 @@ function validateSecretsFile(projectPath, testProject) {
216
244
  if (match?.[1])
217
245
  secretsRelPath = match[1].trim();
218
246
  }
219
- catch { /* use default */ }
247
+ catch {
248
+ /* use default */
249
+ }
220
250
  }
221
251
  const notFound = {
222
252
  secrets_file: secretsRelPath,
@@ -386,10 +416,13 @@ function categoriseConnection(result, className, name, urls) {
386
416
  // ── SF environment (org type) ─────────────────────────────────────────
387
417
  const envMatch = primaryUrl.match(/(?:^|;)environment=([^;]+)/);
388
418
  const envValue = envMatch?.[1]?.toUpperCase();
389
- const sfEnvironment = envValue === 'SANDBOX' ? 'sandbox' :
390
- envValue === 'PROD_DEV' ? 'production-developer' :
391
- envValue ? 'other' :
392
- null;
419
+ const sfEnvironment = envValue === 'SANDBOX'
420
+ ? 'sandbox'
421
+ : envValue === 'PROD_DEV'
422
+ ? 'production-developer'
423
+ : envValue
424
+ ? 'other'
425
+ : null;
393
426
  result.salesforce.push({
394
427
  name,
395
428
  sub_type: subType,
@@ -483,11 +516,15 @@ function buildProjectTestCaseIdMap(projectPath) {
483
516
  idMap.set(m[1], rel);
484
517
  }
485
518
  }
486
- catch { /* skip */ }
519
+ catch {
520
+ /* skip */
521
+ }
487
522
  }
488
523
  }
489
524
  }
490
- catch { /* skip */ }
525
+ catch {
526
+ /* skip */
527
+ }
491
528
  }
492
529
  walk(testsDir);
493
530
  return idMap;
@@ -551,7 +588,9 @@ function buildPlanCoverage(projectPath, allTestCasePaths) {
551
588
  referencedPaths.add(resolvedPath);
552
589
  }
553
590
  }
554
- catch { /* skip */ }
591
+ catch {
592
+ /* skip */
593
+ }
555
594
  return true;
556
595
  }
557
596
  return true;
@@ -584,7 +623,9 @@ function detectProvarHome(projectPath, provardxFiles, antFiles) {
584
623
  return { provarHome: props['provarHome'], provarHomeSource: `provardx-properties.json (${rel})` };
585
624
  }
586
625
  }
587
- catch { /* skip */ }
626
+ catch {
627
+ /* skip */
628
+ }
588
629
  }
589
630
  // 3. ANT build.xml — <property name="provarHome" value="..." />
590
631
  for (const rel of antFiles) {
@@ -597,7 +638,9 @@ function detectProvarHome(projectPath, provardxFiles, antFiles) {
597
638
  if (match?.[1])
598
639
  return { provarHome: match[1], provarHomeSource: `ANT build file (${rel})` };
599
640
  }
600
- catch { /* skip */ }
641
+ catch {
642
+ /* skip */
643
+ }
601
644
  }
602
645
  return { provarHome: null, provarHomeSource: null };
603
646
  }
@@ -615,7 +658,9 @@ function getTopLevelTestSuites(projectPath) {
615
658
  suites.push(`${candidate}/${entry.name}`);
616
659
  }
617
660
  }
618
- catch { /* skip */ }
661
+ catch {
662
+ /* skip */
663
+ }
619
664
  break;
620
665
  }
621
666
  return suites;
@@ -643,7 +688,9 @@ function countFilesRecursive(dir, filter) {
643
688
  }
644
689
  }
645
690
  }
646
- catch { /* skip */ }
691
+ catch {
692
+ /* skip */
693
+ }
647
694
  return count;
648
695
  }
649
696
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"projectInspect.js","sourceRoot":"","sources":["../../../src/mcp/tools/projectInspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectInspect.js","sourceRoot":"","sources":["../../../src/mcp/tools/projectInspect.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,41 @@
5
5
  * For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
6
  */
7
7
  /* eslint-disable camelcase */
8
+ import path from 'node:path';
8
9
  import { z } from 'zod';
9
10
  import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
10
11
  import { makeError, makeRequestId } from '../schemas/common.js';
11
12
  import { log } from '../logging/logger.js';
12
13
  import { validateProjectFromPath, ProjectValidationError } from '../../services/projectValidation.js';
14
+ import { applyDetailLevel } from '../utils/detailLevel.js';
15
+ import { calcCompletenessScore, calcNextAction } from '../utils/validationScore.js';
16
+ import { generateRunId, saveRun, hasAnyRun, loadBaselineViolations, computeDiff, computeContextHash, } from '../utils/validationDiff.js';
17
+ import { desc } from './descHelper.js';
18
+ function countAllProjectViolations(result) {
19
+ // Note: ValidatedTestCase does not carry best_practices_violations at the project
20
+ // layer (intentional — bp surfaces via the testcase tool). The count here covers
21
+ // every violation visible at project/plan/suite/child_suite level plus per-tc
22
+ // structural issues, which is what the stop-decision safety hedge needs.
23
+ let total = result.project_violations.length;
24
+ for (const plan of result.plans) {
25
+ total += plan.violations.length;
26
+ for (const suite of plan.suites) {
27
+ total += suite.violations.length;
28
+ for (const tc of suite.test_cases) {
29
+ total += tc.issues.length;
30
+ }
31
+ for (const cs of suite.child_suites) {
32
+ total += cs.violations.length;
33
+ }
34
+ }
35
+ for (const utc of plan.unplanned_test_cases) {
36
+ total += utc.issues.length;
37
+ }
38
+ }
39
+ return total;
40
+ }
13
41
  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;
42
+ const test_case_count = plan.suites.reduce((n, s) => n + s.test_cases.length, 0) + plan.unplanned_test_cases.length;
16
43
  return {
17
44
  name: plan.name,
18
45
  quality_score: plan.quality_score,
@@ -41,9 +68,7 @@ function shapeResponse(result, includePlanDetails, maxUncovered, maxViolations)
41
68
  const coverage = {
42
69
  ...coverageRest,
43
70
  uncovered_test_cases: uncovered_shown,
44
- ...(uncovered_truncated
45
- ? { uncovered_truncated: true, uncovered_total: uncovered_test_cases.length }
46
- : {}),
71
+ ...(uncovered_truncated ? { uncovered_truncated: true, uncovered_total: uncovered_test_cases.length } : {}),
47
72
  };
48
73
  if (includePlanDetails) {
49
74
  const projViolationsShown = result.project_violations.slice(0, maxViolations);
@@ -69,57 +94,112 @@ function shapeResponse(result, includePlanDetails, maxUncovered, maxViolations)
69
94
  coverage,
70
95
  saved_to: result.saved_to,
71
96
  ...(result.save_error ? { save_error: result.save_error } : {}),
97
+ ...(result.plan_integrity_warnings && result.plan_integrity_warnings.length > 0
98
+ ? { plan_integrity_warnings: result.plan_integrity_warnings }
99
+ : {}),
72
100
  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
101
  };
74
102
  }
103
+ // ── Helpers ───────────────────────────────────────────────────────────────────
104
+ function classifyError(err) {
105
+ if (err instanceof PathPolicyError || err instanceof ProjectValidationError) {
106
+ return { code: err.code, isUserError: true };
107
+ }
108
+ return { code: err.code ?? 'VALIDATE_ERROR', isUserError: false };
109
+ }
75
110
  // ── Tool registration ─────────────────────────────────────────────────────────
111
+ const PROJECT_VALIDATE_SUMMARY_FIELDS = [
112
+ 'requestId',
113
+ 'project_path',
114
+ 'project_name',
115
+ 'quality_score',
116
+ 'quality_tier',
117
+ 'saved_to',
118
+ 'run_id',
119
+ 'completeness_score',
120
+ 'recommended_next_action',
121
+ ];
76
122
  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 }) => {
123
+ server.registerTool('provar_project_validate', {
124
+ title: 'Validate Project',
125
+ description: desc([
126
+ 'Validate a Provar project directly from its directory on disk.',
127
+ 'Reads the plan/suite/testinstance hierarchy from the plans/ directory,',
128
+ 'resolves test case XML from the tests/ directory, extracts project context',
129
+ '(connections, environments, secrets) from the .testproject file, then runs',
130
+ 'the full validation rule set.',
131
+ 'Returns a compact quality score, violation summary, and per-plan/suite scores.',
132
+ 'By default returns a slim summary response to avoid token explosion.',
133
+ 'Pass include_plan_details:true or detail:full to get full per-suite and per-test-case data.',
134
+ 'By default saves a QH-compatible JSON report to',
135
+ '{project_path}/provardx/validation/ (created if absent).',
136
+ 'Plan integrity: if any plan or suite directory is missing a .planitem file, the response includes a plan_integrity_warnings array.',
137
+ 'Test instances in those directories are silently ignored by the Provar runner — fix these before running tests.',
138
+ 'Every response includes run_id pass it as baseline_run_id in the next call to receive only new/resolved violations.',
139
+ 'IMPORTANT: Use this tool for whole-project validation ',
140
+ 'DO NOT read individual test case files and pass XML content inline.',
141
+ 'Pass a project_path and let this tool handle all file reading.',
142
+ ].join(' '), 'Validate a Provar project from disk; quality score, violation summary, run_id for diff.'),
143
+ inputSchema: {
144
+ project_path: z
145
+ .string()
146
+ .describe(desc('Absolute path to the Provar project root (the directory containing the .testproject file)', 'string, absolute path to project root')),
147
+ quality_threshold: z
148
+ .number()
149
+ .min(0)
150
+ .max(100)
151
+ .optional()
152
+ .default(80)
153
+ .describe(desc('Minimum quality score for a test case to be considered valid (default: 80)', 'number 0–100, optional; minimum quality score threshold')),
154
+ save_results: z
155
+ .boolean()
156
+ .optional()
157
+ .default(true)
158
+ .describe(desc('Write a QH-compatible JSON report to provardx/validation/ (default: true)', 'bool, optional; default true, write report to disk')),
159
+ results_dir: z
160
+ .string()
161
+ .optional()
162
+ .describe(desc('Override the output directory for the saved report (default: {project_path}/provardx/validation)', 'string, optional; override report output dir')),
163
+ include_plan_details: z
164
+ .boolean()
165
+ .optional()
166
+ .default(false)
167
+ .describe(desc('@deprecated — use detail="full" instead. When true, include full per-suite and per-test-case violation data in the response. ' +
168
+ 'Default false to keep response small.', 'bool, optional, @deprecated; use detail="full" instead')),
169
+ max_uncovered: z
170
+ .number()
171
+ .int()
172
+ .min(0)
173
+ .optional()
174
+ .default(20)
175
+ .describe(desc('@deprecated — no replacement; response is automatically scoped by detail level. Maximum number of uncovered test case paths to include in the response (default: 20).', 'int ≥0, optional, @deprecated; auto-scoped by detail')),
176
+ max_violations: z
177
+ .number()
178
+ .int()
179
+ .min(0)
180
+ .optional()
181
+ .default(50)
182
+ .describe(desc('@deprecated — no replacement; response is automatically scoped by detail level. When include_plan_details:true, caps project_violations returned (default: 50).', 'int ≥0, optional, @deprecated; auto-scoped by detail')),
183
+ detail: z
184
+ .enum(['summary', 'standard', 'full'])
185
+ .optional()
186
+ .default('standard')
187
+ .describe('Response verbosity. "summary": key scores and stop signal only. "standard": slim violation summary (default). "full": full per-suite and per-test-case data (implies include_plan_details:true).'),
188
+ baseline_run_id: z
189
+ .string()
190
+ .optional()
191
+ .describe('run_id from a previous call. When provided, returns only project-level violations that are new or resolved since that run: { added, resolved, unchanged_count, run_id }. If not found, returns error BASELINE_NOT_FOUND.'),
192
+ },
193
+ }, ({ project_path, quality_threshold, save_results, results_dir, include_plan_details, max_uncovered, max_violations, detail, baseline_run_id, }) => {
117
194
  const requestId = makeRequestId();
118
- log('info', 'provar.project.validate', { requestId, project_path, include_plan_details });
195
+ log('info', 'provar_project_validate', { requestId, project_path, include_plan_details });
119
196
  try {
120
197
  assertPathAllowed(project_path, config.allowedPaths);
121
198
  if (results_dir)
122
199
  assertPathAllowed(results_dir, config.allowedPaths);
200
+ const storageDir = results_dir ?? path.join(project_path, 'provardx', 'validation');
201
+ const contextHash = computeContextHash('project', project_path);
202
+ const runId = generateRunId(project_path);
123
203
  const result = validateProjectFromPath({
124
204
  project_path,
125
205
  quality_threshold,
@@ -127,25 +207,72 @@ export function registerProjectValidateFromPath(server, config) {
127
207
  results_dir,
128
208
  });
129
209
  if (result.save_error) {
130
- log('warn', 'provar.project.validate: could not save results', { requestId, error: result.save_error });
210
+ log('warn', 'provar_project_validate: could not save results', { requestId, error: result.save_error });
131
211
  }
132
- const shaped = shapeResponse(result, include_plan_details, max_uncovered, max_violations);
133
- const response = { requestId, ...shaped };
212
+ const currentViolations = result.project_violations;
213
+ const allLevelViolationCount = countAllProjectViolations(result);
214
+ // Read baseline and history regardless of save_results — save_results controls
215
+ // whether the CURRENT run is persisted, not whether existing runs can be read.
216
+ // Load baseline BEFORE saving to prevent eviction of the requested baseline.
217
+ const baseline = baseline_run_id !== undefined && baseline_run_id !== ''
218
+ ? loadBaselineViolations(storageDir, baseline_run_id, contextHash)
219
+ : null;
220
+ const hasBaseline = hasAnyRun(storageDir);
221
+ if (save_results !== false) {
222
+ try {
223
+ saveRun(storageDir, runId, currentViolations, contextHash);
224
+ }
225
+ catch (saveErr) {
226
+ log('warn', 'provar_project_validate: could not save run for diff', {
227
+ requestId,
228
+ error: saveErr.message,
229
+ });
230
+ }
231
+ }
232
+ // Diff mode
233
+ if (baseline_run_id !== undefined && baseline_run_id !== '') {
234
+ if (!baseline) {
235
+ const errResult = makeError('BASELINE_NOT_FOUND', 'Baseline run not found. Run validation without baseline_run_id first to establish a baseline.', requestId, false, { suggestion: 'Run provar_project_validate without baseline_run_id first to establish a baseline.' });
236
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
237
+ }
238
+ const diff = computeDiff(baseline, currentViolations);
239
+ const completeness_score = calcCompletenessScore(result.summary.test_cases_valid, result.summary.total_test_cases);
240
+ const recommended_next_action = calcNextAction(completeness_score, true, allLevelViolationCount);
241
+ const diffResponse = {
242
+ requestId,
243
+ ...(save_results !== false ? { run_id: runId } : {}),
244
+ ...diff,
245
+ completeness_score,
246
+ recommended_next_action,
247
+ };
248
+ return {
249
+ content: [{ type: 'text', text: JSON.stringify(diffResponse) }],
250
+ structuredContent: diffResponse,
251
+ };
252
+ }
253
+ const completeness_score = calcCompletenessScore(result.summary.test_cases_valid, result.summary.total_test_cases);
254
+ const recommended_next_action = calcNextAction(completeness_score, hasBaseline, allLevelViolationCount);
255
+ const usePlanDetails = include_plan_details || detail === 'full';
256
+ const shaped = shapeResponse(result, usePlanDetails, max_uncovered, max_violations);
257
+ const response = {
258
+ requestId,
259
+ ...(save_results !== false ? { run_id: runId } : {}),
260
+ completeness_score,
261
+ recommended_next_action,
262
+ ...shaped,
263
+ };
264
+ const detailLevel = (detail ?? 'standard');
265
+ const finalResponse = applyDetailLevel(response, detailLevel, PROJECT_VALIDATE_SUMMARY_FIELDS);
134
266
  return {
135
- content: [{ type: 'text', text: JSON.stringify(response) }],
136
- structuredContent: response,
267
+ content: [{ type: 'text', text: JSON.stringify(finalResponse) }],
268
+ structuredContent: finalResponse,
137
269
  };
138
270
  }
139
271
  catch (err) {
140
272
  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;
273
+ const { code, isUserError } = classifyError(error);
147
274
  const errResult = makeError(code, error.message, requestId, !isUserError);
148
- log('error', 'provar.project.validate failed', { requestId, error: error.message });
275
+ log('error', 'provar_project_validate failed', { requestId, error: error.message });
149
276
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
150
277
  }
151
278
  });