qa360 2.1.2 → 2.1.4
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/.BETA_TESTING_FEEDBACK.md +256 -0
- package/.claude/settings.local.json +151 -0
- package/.editorconfig +21 -0
- package/.github/CODEOWNERS +23 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +108 -0
- package/.github/ISSUE_TEMPLATE/feedback_dx.yml +121 -0
- package/.github/dependabot.yml +35 -0
- package/.github/workflows/mcp-dx.yml +106 -0
- package/.github/workflows/release.yml +26 -0
- package/.github/workflows/test.yml +93 -0
- package/.nvmrc +1 -0
- package/.qa360-artifacts/.gitkeep +0 -0
- package/.qa360-artifacts/baselines/.gitkeep +0 -0
- package/.qa360-artifacts/cache/.gitkeep +0 -0
- package/.qa360-artifacts/reports/.gitkeep +0 -0
- package/.qa360-artifacts/screenshots/.gitkeep +0 -0
- package/.qa360-baselines/www_xyqo_ai.baseline.json +33 -0
- package/CHANGELOG.md +234 -0
- package/CODEOWNERS +43 -0
- package/CONTRIBUTING.md +273 -0
- package/NOVICE_USER_GUIDE.md +272 -0
- package/QUICK_START.md +191 -0
- package/README.md +191 -163
- package/adapters/README.md +62 -0
- package/check-branches.sh +32 -0
- package/cli/CHANGELOG.md +84 -0
- package/cli/LICENSE +24 -0
- package/cli/README.md +222 -0
- package/cli/examples/README.md +160 -0
- package/cli/package.json +76 -0
- package/cli/scripts/bundle-for-npm.sh +51 -0
- package/cli/scripts/validate-package.js +116 -0
- package/cli/src/__tests__/commands/doctor.test.ts +97 -0
- package/cli/src/__tests__/index.test.ts +15 -0
- package/cli/src/cli-minimal.ts +44 -0
- package/cli/src/commands/__tests__/crawl.test.ts +412 -0
- package/cli/src/commands/__tests__/doctor-qa360-home.test.ts +156 -0
- package/cli/src/commands/__tests__/e2e-ui-tests.test.ts +494 -0
- package/cli/src/commands/__tests__/e2e.test.ts +187 -0
- package/cli/src/commands/__tests__/flakiness.test.ts +528 -0
- package/cli/src/commands/__tests__/generate.test.ts +507 -0
- package/cli/src/commands/__tests__/history.integration.test.ts +358 -0
- package/cli/src/commands/__tests__/history.test.ts +433 -0
- package/cli/src/commands/__tests__/monitor-realworld.test.ts +199 -0
- package/cli/src/commands/__tests__/monitor.test.ts +81 -0
- package/cli/src/commands/__tests__/ollama.test.ts +529 -0
- package/cli/src/commands/__tests__/repair.test.ts +225 -0
- package/cli/src/commands/__tests__/report.integration.test.ts +167 -0
- package/cli/src/commands/__tests__/report.test.ts +294 -0
- package/cli/src/commands/__tests__/report.vitest.ts +288 -0
- package/cli/src/commands/__tests__/retry.test.ts +78 -0
- package/cli/src/commands/__tests__/run.integration.test.ts +240 -0
- package/cli/src/commands/__tests__/run.test.ts +346 -0
- package/cli/src/commands/__tests__/run.vitest.ts +301 -0
- package/cli/src/commands/__tests__/secrets.test.ts +114 -0
- package/cli/src/commands/__tests__/serve.test.ts +80 -0
- package/cli/src/commands/__tests__/verify.test.ts +103 -0
- package/cli/src/commands/ai.ts +579 -0
- package/cli/src/commands/ask.ts +678 -0
- package/cli/src/commands/coverage.ts +305 -0
- package/cli/src/commands/crawl.ts +155 -0
- package/cli/src/commands/doctor.ts +610 -0
- package/cli/src/commands/examples.ts +248 -0
- package/cli/src/commands/explain.ts +710 -0
- package/cli/src/commands/flakiness.ts +560 -0
- package/cli/src/commands/generate.ts +566 -0
- package/cli/src/commands/history.ts +914 -0
- package/cli/src/commands/init.ts +763 -0
- package/cli/src/commands/monitor.ts +270 -0
- package/cli/src/commands/ollama.ts +337 -0
- package/cli/src/commands/pack.ts +497 -0
- package/cli/src/commands/regression.ts +400 -0
- package/cli/src/commands/repair.ts +356 -0
- package/cli/src/commands/report.ts +463 -0
- package/cli/src/commands/retry.ts +380 -0
- package/cli/src/commands/run.ts +218 -0
- package/cli/src/commands/scan.ts +177 -0
- package/cli/src/commands/secrets.ts +340 -0
- package/cli/src/commands/serve.ts +194 -0
- package/cli/src/commands/slo.ts +387 -0
- package/cli/src/commands/verify-temp-note.md +11 -0
- package/cli/src/commands/verify.ts +322 -0
- package/cli/src/generators/index.ts +6 -0
- package/cli/src/generators/json-reporter.ts +15 -0
- package/cli/src/generators/test-generator.ts +90 -0
- package/cli/src/index.ts +289 -0
- package/cli/src/scanners/dom-scanner.ts +360 -0
- package/cli/src/scanners/index.ts +5 -0
- package/cli/src/types/scan.ts +84 -0
- package/cli/src/utils/config.ts +145 -0
- package/cli/tsconfig.bundle.json +12 -0
- package/cli/tsconfig.json +23 -0
- package/cli/vitest.config.ts +57 -0
- package/core/LICENSE +24 -0
- package/core/README.md +64 -0
- package/core/package.json +81 -0
- package/core/src/__tests__/adapters-contract/adapters-contract.test.md +156 -0
- package/core/src/__tests__/index.test.ts +31 -0
- package/core/src/__tests__/integration/phase3.test.ts +405 -0
- package/core/src/__tests__/pack/validator.test.ts +312 -0
- package/core/src/__tests__/secrets/crypto.test.ts +190 -0
- package/core/src/__tests__/secrets/manager.test.ts +316 -0
- package/core/src/__tests__/security/redactor-phase3.test.ts +233 -0
- package/core/src/__tests__/serve/health-checker.test.ts +155 -0
- package/core/src/__tests__/serve/process-manager.test.ts +213 -0
- package/core/src/__tests__/serve/server.test.ts +103 -0
- package/core/src/__tests__/vault/cas.test.ts +178 -0
- package/core/src/__tests__/vault/vault.test.ts +296 -0
- package/core/src/adapters/__tests__/gitleaks-secrets.test.ts +452 -0
- package/core/src/adapters/__tests__/k6-perf.test.ts +538 -0
- package/core/src/adapters/__tests__/osv-deps.test.ts +471 -0
- package/core/src/adapters/__tests__/playwright-native-api.test.ts +792 -0
- package/core/src/adapters/__tests__/playwright-ui-e2e.test.ts +431 -0
- package/core/src/adapters/__tests__/playwright-ui.test.ts +1073 -0
- package/core/src/adapters/__tests__/semgrep-sast.test.ts +436 -0
- package/core/src/adapters/__tests__/zap-dast.test.ts +453 -0
- package/core/src/adapters/gitleaks-secrets.ts +521 -0
- package/core/src/adapters/k6-perf.ts +479 -0
- package/core/src/adapters/osv-deps.ts +467 -0
- package/core/src/adapters/playwright-native-adapter.ts +472 -0
- package/core/src/adapters/playwright-native-api.ts +619 -0
- package/core/src/adapters/playwright-ui.ts +1088 -0
- package/core/src/adapters/semgrep-sast.ts +410 -0
- package/core/src/adapters/zap-dast.ts +551 -0
- package/core/src/ai/__tests__/deepseek-provider.test.ts +586 -0
- package/core/src/ai/__tests__/ollama-provider.test.ts +641 -0
- package/core/src/ai/anthropic-provider.ts +248 -0
- package/core/src/ai/deepseek-provider.ts +301 -0
- package/core/src/ai/index.ts +87 -0
- package/core/src/ai/llm-client.ts +52 -0
- package/core/src/ai/mock-provider.ts +146 -0
- package/core/src/ai/ollama-provider.ts +255 -0
- package/core/src/ai/openai-provider.ts +226 -0
- package/core/src/ai/provider-factory.ts +408 -0
- package/core/src/artifacts/README.md +78 -0
- package/core/src/artifacts/index.ts +16 -0
- package/core/src/artifacts/ui-artifacts.ts +412 -0
- package/core/src/assertions/__tests__/engine.test.ts +360 -0
- package/core/src/assertions/engine.ts +577 -0
- package/core/src/assertions/index.ts +13 -0
- package/core/src/assertions/types.ts +229 -0
- package/core/src/auth/__tests__/api-key-provider.test.ts +282 -0
- package/core/src/auth/__tests__/auth-manager.test.ts +430 -0
- package/core/src/auth/__tests__/basic-auth-provider.test.ts +364 -0
- package/core/src/auth/__tests__/cloud-providers.test.ts +751 -0
- package/core/src/auth/__tests__/jwt-provider.test.ts +400 -0
- package/core/src/auth/__tests__/oauth2-provider.test.ts +383 -0
- package/core/src/auth/__tests__/totp-provider.test.ts +294 -0
- package/core/src/auth/__tests__/ui-login-provider.test.ts +323 -0
- package/core/src/auth/api-key-provider.ts +75 -0
- package/core/src/auth/aws-iam-provider.ts +212 -0
- package/core/src/auth/azure-ad-provider.ts +126 -0
- package/core/src/auth/basic-auth-provider.ts +133 -0
- package/core/src/auth/gcp-adc-provider.ts +146 -0
- package/core/src/auth/index.ts +342 -0
- package/core/src/auth/jwt-provider.ts +193 -0
- package/core/src/auth/manager.ts +281 -0
- package/core/src/auth/oauth2-provider.ts +141 -0
- package/core/src/auth/totp-provider.ts +163 -0
- package/core/src/auth/ui-login-provider.ts +242 -0
- package/core/src/cache/__tests__/lru-cache.test.ts +564 -0
- package/core/src/cache/index.ts +13 -0
- package/core/src/cache/lru-cache.ts +536 -0
- package/core/src/crawler/__tests__/journey-generator.test.ts +344 -0
- package/core/src/crawler/__tests__/selector-generator.test.ts +211 -0
- package/core/src/crawler/index.ts +335 -0
- package/core/src/crawler/journey-generator.ts +471 -0
- package/core/src/crawler/page-analyzer.ts +857 -0
- package/core/src/crawler/selector-generator.ts +280 -0
- package/core/src/crawler/types.ts +475 -0
- package/core/src/dashboard/__tests__/real-world.test.ts +430 -0
- package/core/src/dashboard/__tests__/server.test.ts +283 -0
- package/core/src/dashboard/__tests__/types.test.ts +208 -0
- package/core/src/dashboard/assets.ts +692 -0
- package/core/src/dashboard/index.ts +17 -0
- package/core/src/dashboard/server.ts +401 -0
- package/core/src/dashboard/types.ts +78 -0
- package/core/src/discoverer/__tests__/test-discoverer.test.ts +444 -0
- package/core/src/discoverer/index.ts +374 -0
- package/core/src/flakiness/__tests__/flakiness.test.ts +554 -0
- package/core/src/flakiness/index.ts +536 -0
- package/core/src/generation/__tests__/code-formatter.test.ts +170 -0
- package/core/src/generation/__tests__/code-generator-contract.test.ts +207 -0
- package/core/src/generation/__tests__/code-generator.test.ts +586 -0
- package/core/src/generation/__tests__/crawler-pack-generator.test.ts +479 -0
- package/core/src/generation/__tests__/generation-e2e-b2bshop.test.ts +718 -0
- package/core/src/generation/__tests__/generation-integration.test.ts +655 -0
- package/core/src/generation/__tests__/pack-generator.test.ts +408 -0
- package/core/src/generation/__tests__/prompt-builder.test.ts +200 -0
- package/core/src/generation/__tests__/real-provider-integration.test.ts +414 -0
- package/core/src/generation/__tests__/source-analyzer.test.ts +774 -0
- package/core/src/generation/__tests__/test-optimizer.test.ts +255 -0
- package/core/src/generation/code-formatter.ts +408 -0
- package/core/src/generation/code-generator.ts +470 -0
- package/core/src/generation/crawler-pack-generator.ts +289 -0
- package/core/src/generation/generator.ts +113 -0
- package/core/src/generation/index.ts +59 -0
- package/core/src/generation/pack-generator.ts +527 -0
- package/core/src/generation/prompt-builder.ts +772 -0
- package/core/src/generation/source-analyzer.ts +830 -0
- package/core/src/generation/test-optimizer.ts +474 -0
- package/core/src/generation/types.ts +217 -0
- package/core/src/hooks/__tests__/compose.test.ts +636 -0
- package/core/src/hooks/__tests__/runner.test.ts +478 -0
- package/core/src/hooks/compose.ts +268 -0
- package/core/src/hooks/runner.ts +364 -0
- package/core/src/index.ts +237 -0
- package/core/src/pack/__tests__/migrator.test.ts +594 -0
- package/core/src/pack/__tests__/validator.test.ts +759 -0
- package/core/src/pack/migrator.ts +353 -0
- package/core/src/pack/validator.ts +359 -0
- package/core/src/pack-v2/__tests__/loader.test.ts +533 -0
- package/core/src/pack-v2/__tests__/migrator.test.ts +455 -0
- package/core/src/pack-v2/__tests__/validator.test.ts +549 -0
- package/core/src/pack-v2/index.ts +41 -0
- package/core/src/pack-v2/loader.ts +321 -0
- package/core/src/pack-v2/migrator.ts +540 -0
- package/core/src/pack-v2/validator.ts +673 -0
- package/core/src/parallel/README.md +143 -0
- package/core/src/parallel/index.ts +16 -0
- package/core/src/parallel/parallel-runner.ts +282 -0
- package/core/src/proof/__tests__/proof-roundtrip.test.ts +149 -0
- package/core/src/proof/__tests__/schema-validation-manual.mjs +211 -0
- package/core/src/proof/__tests__/schema-validation.test.ts +336 -0
- package/core/src/proof/__tests__/signer.test.ts +486 -0
- package/core/src/proof/__tests__/temporal-regression.test.ts +537 -0
- package/core/src/proof/__tests__/verifier-advanced.test.ts +588 -0
- package/core/src/proof/__tests__/verifier.test.ts +413 -0
- package/core/src/proof/bundle.ts +290 -0
- package/core/src/proof/canonicalize.ts +116 -0
- package/core/src/proof/index.ts +74 -0
- package/core/src/proof/schema.ts +285 -0
- package/core/src/proof/signer.ts +293 -0
- package/core/src/proof/verifier.ts +380 -0
- package/core/src/regression/__tests__/detector.test.ts +396 -0
- package/core/src/regression/__tests__/trend-analyzer.test.ts +300 -0
- package/core/src/regression/detector.ts +629 -0
- package/core/src/regression/index.ts +34 -0
- package/core/src/regression/trend-analyzer.ts +468 -0
- package/core/src/regression/types.ts +295 -0
- package/core/src/regression/vault.ts +419 -0
- package/core/src/repair/__tests__/repairer.test.ts +572 -0
- package/core/src/repair/__tests__/types.test.ts +302 -0
- package/core/src/repair/engine/__tests__/fixer.test.ts +482 -0
- package/core/src/repair/engine/__tests__/suggestion-engine.test.ts +395 -0
- package/core/src/repair/engine/fixer.ts +271 -0
- package/core/src/repair/engine/suggestion-engine.ts +234 -0
- package/core/src/repair/index.ts +53 -0
- package/core/src/repair/repairer.ts +376 -0
- package/core/src/repair/types.ts +119 -0
- package/core/src/repair/utils/__tests__/error-analyzer.test.ts +454 -0
- package/core/src/repair/utils/error-analyzer.ts +308 -0
- package/core/src/reporting/README.md +144 -0
- package/core/src/reporting/html-reporter.ts +835 -0
- package/core/src/reporting/index.ts +16 -0
- package/core/src/retry/README.md +192 -0
- package/core/src/retry/__tests__/flakiness-integration.test.ts +475 -0
- package/core/src/retry/__tests__/retry-engine.test.ts +424 -0
- package/core/src/retry/flakiness-integration.ts +267 -0
- package/core/src/retry/index.ts +48 -0
- package/core/src/retry/retry-engine.ts +368 -0
- package/core/src/retry/types.ts +208 -0
- package/core/src/retry/vault.ts +413 -0
- package/core/src/runner/__tests__/flakiness-integration.test.ts +566 -0
- package/core/src/runner/__tests__/phase3-e2e-b2bshop.test.ts +218 -0
- package/core/src/runner/__tests__/phase3-e2e-reqres.test.ts +199 -0
- package/core/src/runner/__tests__/phase3-runner.test.ts +1118 -0
- package/core/src/runner/e2e-helpers.ts +216 -0
- package/core/src/runner/phase3-runner.ts +1236 -0
- package/core/src/schemas/gherkin-report.json +122 -0
- package/core/src/secrets/__tests__/crypto.test.ts +180 -0
- package/core/src/secrets/crypto.ts +289 -0
- package/core/src/secrets/manager.ts +272 -0
- package/core/src/security/__tests__/hardening.test.ts +480 -0
- package/core/src/security/redaction-patterns-extended.ts +278 -0
- package/core/src/security/redactor.ts +326 -0
- package/core/src/self-healing/assertion-healer.ts +485 -0
- package/core/src/self-healing/engine.ts +626 -0
- package/core/src/self-healing/index.ts +33 -0
- package/core/src/self-healing/selector-healer.ts +488 -0
- package/core/src/self-healing/types.ts +193 -0
- package/core/src/serve/diagnostics-collector.ts +201 -0
- package/core/src/serve/health-checker.ts +274 -0
- package/core/src/serve/index.ts +9 -0
- package/core/src/serve/metrics-collector.ts +386 -0
- package/core/src/serve/process-manager.ts +265 -0
- package/core/src/serve/server.ts +230 -0
- package/core/src/slo/config.ts +408 -0
- package/core/src/slo/index.ts +68 -0
- package/core/src/slo/sli-calculator.ts +474 -0
- package/core/src/slo/slo-tracker.ts +481 -0
- package/core/src/slo/types.ts +408 -0
- package/core/src/slo/vault.ts +600 -0
- package/core/src/tui/__tests__/monitor.test.ts +336 -0
- package/core/src/tui/__tests__/real-world.test.ts +376 -0
- package/core/src/tui/__tests__/renderer.test.ts +201 -0
- package/core/src/tui/__tests__/types.test.ts +295 -0
- package/core/src/tui/index.ts +19 -0
- package/core/src/tui/monitor.ts +331 -0
- package/core/src/tui/renderer.ts +269 -0
- package/core/src/tui/types.ts +68 -0
- package/core/src/types/pack-v1.ts +305 -0
- package/core/src/types/pack-v2.ts +491 -0
- package/core/src/types/trust-score.ts +258 -0
- package/core/src/vault/__tests__/flakiness-vault.test.ts +562 -0
- package/core/src/vault/__tests__/vault.test.ts +259 -0
- package/core/src/vault/cas.ts +323 -0
- package/core/src/vault/index.ts +1361 -0
- package/core/src/vault/schema.sql +168 -0
- package/core/src/visual/README.md +185 -0
- package/core/src/visual/index.ts +14 -0
- package/core/src/visual/visual-regression.ts +347 -0
- package/core/src/watch/__tests__/watch-mode.test.ts +192 -0
- package/core/src/watch/index.ts +14 -0
- package/core/src/watch/watch-mode.ts +565 -0
- package/core/tsconfig.json +12 -0
- package/core/vitest.config.ts +52 -0
- package/docs/ARCHITECTURE.md +901 -0
- package/docs/AUDIT-GLOBAL-DEC2025.md +271 -0
- package/docs/BETA_TESTING.md +257 -0
- package/docs/BETA_TESTING_PLAN.md +727 -0
- package/docs/CERTIFICATION-REPORT.md +142 -0
- package/docs/COMPLETE_AUDIT_REFACTORING.md +965 -0
- package/docs/DEVELOPMENT.md +331 -0
- package/docs/DEVELOPMENT_HISTORY.md +345 -0
- package/docs/LIMITATIONS.md +176 -0
- package/docs/MIGRATION.md +303 -0
- package/docs/OPTION_3_4_EXPLORATION.md +1257 -0
- package/docs/PHASE1_PERFORMANCE.md +144 -0
- package/docs/QA360_Cloud.postman_collection.json +89 -0
- package/docs/README.md +50 -0
- package/docs/STATUS.md +179 -0
- package/docs/STRATEGIC_STUDY_GOOSE_INTEGRATION.md +615 -0
- package/docs/USER_GUIDE.md +687 -0
- package/docs/WORK-DONE-ADAPTER-TESTS.md +136 -0
- package/docs/adapters-security.md +485 -0
- package/docs/architecture-diagram.mmd +168 -0
- package/docs/archive/ARCH-01-DAY6-BUILD-FIXES.md +396 -0
- package/docs/archive/ARCH-01-DAY6-FINAL-STATUS.md +324 -0
- package/docs/archive/ARCH-01_MCP_MERGE_ANALYSIS.md +644 -0
- package/docs/archive/ARCH-01_NEXT_STEPS.md +60 -0
- package/docs/archive/BRANCH_PROTECTION.md +183 -0
- package/docs/archive/CI_LOCKDOWN_CHECKLIST.md +222 -0
- package/docs/archive/HANDOFF_TEST-01.md +669 -0
- package/docs/archive/LEGAL_READY_PLACEHOLDERS.md +372 -0
- package/docs/archive/NODE_UPGRADE_GUIDE.md +188 -0
- package/docs/archive/PHASE1_COMPLETION.md +386 -0
- package/docs/archive/PHASE2_COMPLETION.md +404 -0
- package/docs/archive/PHASE3_AND_4_FINAL.md +360 -0
- package/docs/archive/PHASE3_COMPLETE.md +301 -0
- package/docs/archive/PHASE3_STATUS.md +255 -0
- package/docs/archive/PRE-WEEK2-AUDIT.md +364 -0
- package/docs/archive/README.md +33 -0
- package/docs/archive/SCHEMA_AJV_2020_FIX.md +245 -0
- package/docs/archive/TEST-01_AUDIT_REPORT.md +240 -0
- package/docs/archive/TEST-01_COVERAGE_PLAN.md +423 -0
- package/docs/budgets-advanced.md +308 -0
- package/docs/examples/history-export-gc.md +285 -0
- package/docs/examples/pack-v2-complete.yaml +158 -0
- package/docs/examples/pack-v2-quickstart.yaml +24 -0
- package/docs/examples/pack-v2-ui-login.yaml +81 -0
- package/docs/examples/qa360-report.json +50 -0
- package/docs/history.md +565 -0
- package/docs/hooks.md +304 -0
- package/docs/llm-providers.md +419 -0
- package/docs/mcp-server.md +651 -0
- package/docs/mcp-tools.md +1131 -0
- package/docs/pack-v1.md +383 -0
- package/docs/pack-v2.md +558 -0
- package/docs/proofs.md +670 -0
- package/docs/quickstart-5min.md +257 -0
- package/docs/readiness-ci.md +654 -0
- package/docs/rfc/README.md +20 -0
- package/docs/rfc/proof-bundle-v1.md +787 -0
- package/docs/secrets.md +392 -0
- package/docs/serve.md +494 -0
- package/docs/vault.md +491 -0
- package/e2e/qa360-e2e.test.ts +696 -0
- package/e2e/vitest.config.ts +18 -0
- package/examples/README.md +30 -140
- package/examples/ci/docker-compose-serve.yml +375 -0
- package/examples/ci/github-actions-serve.yml +345 -0
- package/examples/ci/gitlab-ci-serve.yml +407 -0
- package/examples/datasets/README.md +101 -0
- package/examples/datasets/b2bshop.ts +155 -0
- package/examples/datasets/index.ts +57 -0
- package/examples/datasets/reqres.ts +195 -0
- package/examples/future-api/README.md +16 -0
- package/examples/future-api/diag.js +7 -0
- package/examples/future-api/health.js +4 -0
- package/examples/future-api/packs.js +13 -0
- package/examples/future-api/runpack.js +10 -0
- package/examples/generation/README.md +148 -0
- package/examples/generation/pack-generator-example.js +115 -0
- package/examples/generation/source-analyzer-example.js +115 -0
- package/examples/httpbin/pack.yml +59 -0
- package/examples/load-testing/mcp-load.yml +115 -0
- package/examples/load-testing/mcp-stdio.yml +95 -0
- package/examples/mcp/claude-desktop-config.json +33 -0
- package/examples/mcp/claude-desktop.json +16 -0
- package/examples/mcp/conversation-sample.md +131 -0
- package/examples/mcp/demo-60s.md +330 -0
- package/examples/mcp/sample-conversation.jsonl +21 -0
- package/examples/mcp/vscode-settings.json +22 -0
- package/examples/pack-v2-complete.yml +242 -0
- package/examples/pack-v2-examples.md +244 -0
- package/examples/pack-v2-quickstart.yml +55 -0
- package/examples/packs-business/ecommerce-api.yml +121 -0
- package/examples/packs-business/saas-dashboard-ui.yml +133 -0
- package/examples/packs-conformance/compose-multi.yml +174 -0
- package/examples/packs-conformance/full.yml +152 -0
- package/examples/packs-conformance/heavy-artifacts.yml +152 -0
- package/examples/packs-conformance/minimal.yml +71 -0
- package/examples/packs-conformance/secrets-missing.yml +97 -0
- package/examples/packs-conformance/timeouts.yml +77 -0
- package/examples/proofs/e2e-playwright-proof.json +75 -0
- package/examples/proofs/httpbin-proof.json +69 -0
- package/examples/proofs/multi-adapter-proof.json +117 -0
- package/examples/proofs/test-proof.json +26 -0
- package/examples/restful-api-dev/README.md +102 -0
- package/examples/restful-api-dev/restful-api-advanced.yml +29 -0
- package/examples/restful-api-dev/restful-api-basic.yml +29 -0
- package/examples/web-lite/.github/workflows/qa360-phase3.yml +73 -0
- package/examples/web-lite/api-mock/server.js +258 -0
- package/examples/web-lite/pack.yml +71 -0
- package/examples/web-lite/services.yml +43 -0
- package/examples/web-lite/web-content/healthz +1 -0
- package/examples/web-lite/web-content/index.html +259 -0
- package/package.json +55 -45
- package/packages/mcp/CHANGELOG.md +109 -0
- package/packages/mcp/IMPLEMENTATION_SUMMARY.md +350 -0
- package/packages/mcp/LICENSE +21 -0
- package/packages/mcp/QUICK_START.md +291 -0
- package/packages/mcp/README.md +294 -0
- package/packages/mcp/TELEMETRY.md +220 -0
- package/packages/mcp/package.json +92 -0
- package/packages/mcp/scripts/generate-sbom-fallback.cjs +84 -0
- package/packages/mcp/scripts/safe-postinstall.cjs +32 -0
- package/packages/mcp/src/__tests__/contract.test.ts +902 -0
- package/packages/mcp/src/cli/cli.ts +137 -0
- package/packages/mcp/src/cli/doctor.ts +286 -0
- package/packages/mcp/src/cli/fix.ts +99 -0
- package/packages/mcp/src/cli/init.ts +233 -0
- package/packages/mcp/src/cli/postinstall.ts +14 -0
- package/packages/mcp/src/cli/reset.ts +44 -0
- package/packages/mcp/src/cli/telemetry.ts +166 -0
- package/packages/mcp/src/cli/test-dx.ts +94 -0
- package/packages/mcp/src/cli/uninstall.ts +80 -0
- package/packages/mcp/src/cli/up.ts +178 -0
- package/packages/mcp/src/index.ts +12 -0
- package/packages/mcp/src/scripts/e2e-local.ts +337 -0
- package/packages/mcp/src/scripts/verify-settings.ts +242 -0
- package/packages/mcp/src/security/audit.ts +244 -0
- package/packages/mcp/src/security/manager.ts +242 -0
- package/packages/mcp/src/server/full-server.ts +212 -0
- package/packages/mcp/src/server/minimal-server.ts +134 -0
- package/packages/mcp/src/tools/history.ts +388 -0
- package/packages/mcp/src/tools/pack.ts +449 -0
- package/packages/mcp/src/tools/registry.ts +638 -0
- package/packages/mcp/src/tools/report.ts +100 -0
- package/packages/mcp/src/tools/run.ts +268 -0
- package/packages/mcp/src/tools/secrets.ts +198 -0
- package/packages/mcp/src/tools/serve.ts +221 -0
- package/packages/mcp/src/tools/triage.ts +532 -0
- package/packages/mcp/src/tools/types.ts +26 -0
- package/packages/mcp/src/tools/vault.ts +164 -0
- package/packages/mcp/src/tools/verify.ts +166 -0
- package/packages/mcp/src/types/index.ts +311 -0
- package/packages/mcp/src/types/mcp-stubs.ts +83 -0
- package/packages/mcp/tsconfig.json +16 -0
- package/playwright.config.ts +20 -0
- package/pnpm-workspace.yaml +4 -0
- package/run-test-and-push.sh +20 -0
- package/scripts/build-proof-cli.sh +110 -0
- package/scripts/ci/check-windows-paths.js +92 -0
- package/scripts/ci/invariants.sh +124 -0
- package/scripts/ci/make-final-bundle.js +106 -0
- package/scripts/ci/mcp-run-multipack.js +305 -0
- package/scripts/ci/run-pack-suite.sh +103 -0
- package/scripts/ci/run-phase7-final.sh +190 -0
- package/scripts/ci/slo-assert.js +158 -0
- package/scripts/ci/test-fault-tolerance.sh +301 -0
- package/scripts/install-mcp.sh +66 -0
- package/scripts/mcp-smoke.mjs +27 -0
- package/scripts/smoke.sh +26 -0
- package/scripts/stress-test.js +288 -0
- package/scripts/validate-examples.mjs +404 -0
- package/scripts/validation/simple-pack-check.sh +51 -0
- package/scripts/validation/validate-universal-pack.mjs +77 -0
- package/scripts/verify-persistence.js +127 -0
- package/test-pack.yaml +43 -0
- package/test-results/.last-run.json +4 -0
- package/test-runner.mjs +87 -0
- package/tests/artifacts.spec.js +147 -0
- package/tests/contracts.spec.js +239 -0
- package/tests/e2e/assertions.test.mjs +370 -0
- package/tests/e2e/crawler.test.mjs +451 -0
- package/tests/e2e/playwright-plus-plus.test.mjs +604 -0
- package/tests/e2e/proof-bundle.test.mjs +258 -0
- package/tests/e2e/real-world/saucedemo.test.mjs +714 -0
- package/tests/e2e/real-world/the-internet-herokuapp.test.mjs +760 -0
- package/tests/e2e/ui-actions.test.mjs +546 -0
- package/tests/gherkin.e2e.spec.ts +310 -0
- package/tests/no-console-errors.spec.js +136 -0
- package/tests/pdf.spec.ts +252 -0
- package/tests/run-pack.spec.ts +58 -0
- package/tsconfig.base.json +15 -0
- package/tsconfig.build.json +8 -0
- package/tsconfig.json +37 -0
- package/tsconfig.test.json +18 -0
- package/typedoc.json +37 -0
- package/ui/README.md +51 -0
- package/verify-proof.mjs +60 -0
- package/dist/cli-minimal.d.ts +0 -6
- package/dist/cli-minimal.js +0 -36
- package/dist/commands/ai.d.ts +0 -41
- package/dist/commands/ai.js +0 -511
- package/dist/commands/ask.d.ts +0 -94
- package/dist/commands/ask.js +0 -582
- package/dist/commands/coverage.d.ts +0 -8
- package/dist/commands/coverage.js +0 -252
- package/dist/commands/crawl.d.ts +0 -24
- package/dist/commands/crawl.js +0 -121
- package/dist/commands/doctor.d.ts +0 -54
- package/dist/commands/doctor.js +0 -513
- package/dist/commands/examples.d.ts +0 -33
- package/dist/commands/examples.js +0 -193
- package/dist/commands/explain.d.ts +0 -27
- package/dist/commands/explain.js +0 -630
- package/dist/commands/flakiness.d.ts +0 -73
- package/dist/commands/flakiness.js +0 -435
- package/dist/commands/generate.d.ts +0 -66
- package/dist/commands/generate.js +0 -438
- package/dist/commands/history.d.ts +0 -76
- package/dist/commands/history.js +0 -757
- package/dist/commands/init.d.ts +0 -106
- package/dist/commands/init.js +0 -599
- package/dist/commands/monitor.d.ts +0 -27
- package/dist/commands/monitor.js +0 -225
- package/dist/commands/ollama.d.ts +0 -40
- package/dist/commands/ollama.js +0 -301
- package/dist/commands/pack.d.ts +0 -70
- package/dist/commands/pack.js +0 -413
- package/dist/commands/regression.d.ts +0 -8
- package/dist/commands/regression.js +0 -340
- package/dist/commands/repair.d.ts +0 -26
- package/dist/commands/repair.js +0 -307
- package/dist/commands/report.d.ts +0 -62
- package/dist/commands/report.js +0 -378
- package/dist/commands/retry.d.ts +0 -43
- package/dist/commands/retry.js +0 -275
- package/dist/commands/run.d.ts +0 -41
- package/dist/commands/run.js +0 -169
- package/dist/commands/scan.d.ts +0 -5
- package/dist/commands/scan.js +0 -155
- package/dist/commands/secrets.d.ts +0 -58
- package/dist/commands/secrets.js +0 -289
- package/dist/commands/serve.d.ts +0 -13
- package/dist/commands/serve.js +0 -156
- package/dist/commands/slo.d.ts +0 -8
- package/dist/commands/slo.js +0 -327
- package/dist/commands/verify.d.ts +0 -32
- package/dist/commands/verify.js +0 -278
- package/dist/core/adapters/gitleaks-secrets.d.ts +0 -114
- package/dist/core/adapters/gitleaks-secrets.js +0 -410
- package/dist/core/adapters/k6-perf.d.ts +0 -85
- package/dist/core/adapters/k6-perf.js +0 -398
- package/dist/core/adapters/osv-deps.d.ts +0 -123
- package/dist/core/adapters/osv-deps.js +0 -372
- package/dist/core/adapters/playwright-native-adapter.d.ts +0 -121
- package/dist/core/adapters/playwright-native-adapter.js +0 -339
- package/dist/core/adapters/playwright-native-api.d.ts +0 -183
- package/dist/core/adapters/playwright-native-api.js +0 -461
- package/dist/core/adapters/playwright-ui.d.ts +0 -197
- package/dist/core/adapters/playwright-ui.js +0 -840
- package/dist/core/adapters/semgrep-sast.d.ts +0 -99
- package/dist/core/adapters/semgrep-sast.js +0 -322
- package/dist/core/adapters/zap-dast.d.ts +0 -133
- package/dist/core/adapters/zap-dast.js +0 -424
- package/dist/core/ai/anthropic-provider.d.ts +0 -50
- package/dist/core/ai/anthropic-provider.js +0 -211
- package/dist/core/ai/deepseek-provider.d.ts +0 -81
- package/dist/core/ai/deepseek-provider.js +0 -254
- package/dist/core/ai/index.d.ts +0 -60
- package/dist/core/ai/index.js +0 -18
- package/dist/core/ai/llm-client.d.ts +0 -45
- package/dist/core/ai/llm-client.js +0 -7
- package/dist/core/ai/mock-provider.d.ts +0 -49
- package/dist/core/ai/mock-provider.js +0 -121
- package/dist/core/ai/ollama-provider.d.ts +0 -78
- package/dist/core/ai/ollama-provider.js +0 -192
- package/dist/core/ai/openai-provider.d.ts +0 -48
- package/dist/core/ai/openai-provider.js +0 -188
- package/dist/core/ai/provider-factory.d.ts +0 -160
- package/dist/core/ai/provider-factory.js +0 -269
- package/dist/core/artifacts/index.d.ts +0 -6
- package/dist/core/artifacts/index.js +0 -6
- package/dist/core/artifacts/ui-artifacts.d.ts +0 -133
- package/dist/core/artifacts/ui-artifacts.js +0 -304
- package/dist/core/assertions/engine.d.ts +0 -51
- package/dist/core/assertions/engine.js +0 -530
- package/dist/core/assertions/index.d.ts +0 -11
- package/dist/core/assertions/index.js +0 -11
- package/dist/core/assertions/types.d.ts +0 -121
- package/dist/core/assertions/types.js +0 -37
- package/dist/core/auth/api-key-provider.d.ts +0 -16
- package/dist/core/auth/api-key-provider.js +0 -63
- package/dist/core/auth/aws-iam-provider.d.ts +0 -35
- package/dist/core/auth/aws-iam-provider.js +0 -177
- package/dist/core/auth/azure-ad-provider.d.ts +0 -15
- package/dist/core/auth/azure-ad-provider.js +0 -99
- package/dist/core/auth/basic-auth-provider.d.ts +0 -26
- package/dist/core/auth/basic-auth-provider.js +0 -111
- package/dist/core/auth/gcp-adc-provider.d.ts +0 -27
- package/dist/core/auth/gcp-adc-provider.js +0 -126
- package/dist/core/auth/index.d.ts +0 -238
- package/dist/core/auth/index.js +0 -82
- package/dist/core/auth/jwt-provider.d.ts +0 -19
- package/dist/core/auth/jwt-provider.js +0 -160
- package/dist/core/auth/manager.d.ts +0 -84
- package/dist/core/auth/manager.js +0 -230
- package/dist/core/auth/oauth2-provider.d.ts +0 -17
- package/dist/core/auth/oauth2-provider.js +0 -114
- package/dist/core/auth/totp-provider.d.ts +0 -31
- package/dist/core/auth/totp-provider.js +0 -134
- package/dist/core/auth/ui-login-provider.d.ts +0 -26
- package/dist/core/auth/ui-login-provider.js +0 -198
- package/dist/core/cache/index.d.ts +0 -7
- package/dist/core/cache/index.js +0 -6
- package/dist/core/cache/lru-cache.d.ts +0 -203
- package/dist/core/cache/lru-cache.js +0 -397
- package/dist/core/core/coverage/analyzer.d.ts +0 -101
- package/dist/core/core/coverage/analyzer.js +0 -415
- package/dist/core/core/coverage/collector.d.ts +0 -74
- package/dist/core/core/coverage/collector.js +0 -459
- package/dist/core/core/coverage/config.d.ts +0 -37
- package/dist/core/core/coverage/config.js +0 -156
- package/dist/core/core/coverage/index.d.ts +0 -11
- package/dist/core/core/coverage/index.js +0 -15
- package/dist/core/core/coverage/types.d.ts +0 -267
- package/dist/core/core/coverage/types.js +0 -6
- package/dist/core/core/coverage/vault.d.ts +0 -95
- package/dist/core/core/coverage/vault.js +0 -405
- package/dist/core/coverage/analyzer.d.ts +0 -101
- package/dist/core/coverage/analyzer.js +0 -415
- package/dist/core/coverage/collector.d.ts +0 -74
- package/dist/core/coverage/collector.js +0 -459
- package/dist/core/coverage/config.d.ts +0 -37
- package/dist/core/coverage/config.js +0 -156
- package/dist/core/coverage/index.d.ts +0 -11
- package/dist/core/coverage/index.js +0 -15
- package/dist/core/coverage/types.d.ts +0 -267
- package/dist/core/coverage/types.js +0 -6
- package/dist/core/coverage/vault.d.ts +0 -95
- package/dist/core/coverage/vault.js +0 -405
- package/dist/core/crawler/index.d.ts +0 -57
- package/dist/core/crawler/index.js +0 -281
- package/dist/core/crawler/journey-generator.d.ts +0 -49
- package/dist/core/crawler/journey-generator.js +0 -412
- package/dist/core/crawler/page-analyzer.d.ts +0 -88
- package/dist/core/crawler/page-analyzer.js +0 -709
- package/dist/core/crawler/selector-generator.d.ts +0 -34
- package/dist/core/crawler/selector-generator.js +0 -240
- package/dist/core/crawler/types.d.ts +0 -353
- package/dist/core/crawler/types.js +0 -6
- package/dist/core/dashboard/assets.d.ts +0 -6
- package/dist/core/dashboard/assets.js +0 -690
- package/dist/core/dashboard/index.d.ts +0 -6
- package/dist/core/dashboard/index.js +0 -5
- package/dist/core/dashboard/server.d.ts +0 -72
- package/dist/core/dashboard/server.js +0 -354
- package/dist/core/dashboard/types.d.ts +0 -70
- package/dist/core/dashboard/types.js +0 -5
- package/dist/core/discoverer/index.d.ts +0 -115
- package/dist/core/discoverer/index.js +0 -250
- package/dist/core/flakiness/index.d.ts +0 -228
- package/dist/core/flakiness/index.js +0 -384
- package/dist/core/generation/code-formatter.d.ts +0 -111
- package/dist/core/generation/code-formatter.js +0 -307
- package/dist/core/generation/code-generator.d.ts +0 -144
- package/dist/core/generation/code-generator.js +0 -293
- package/dist/core/generation/crawler-pack-generator.d.ts +0 -44
- package/dist/core/generation/crawler-pack-generator.js +0 -231
- package/dist/core/generation/generator.d.ts +0 -40
- package/dist/core/generation/generator.js +0 -76
- package/dist/core/generation/index.d.ts +0 -32
- package/dist/core/generation/index.js +0 -30
- package/dist/core/generation/pack-generator.d.ts +0 -107
- package/dist/core/generation/pack-generator.js +0 -416
- package/dist/core/generation/prompt-builder.d.ts +0 -132
- package/dist/core/generation/prompt-builder.js +0 -672
- package/dist/core/generation/source-analyzer.d.ts +0 -213
- package/dist/core/generation/source-analyzer.js +0 -657
- package/dist/core/generation/test-optimizer.d.ts +0 -117
- package/dist/core/generation/test-optimizer.js +0 -328
- package/dist/core/generation/types.d.ts +0 -214
- package/dist/core/generation/types.js +0 -4
- package/dist/core/hooks/compose.d.ts +0 -61
- package/dist/core/hooks/compose.js +0 -225
- package/dist/core/hooks/runner.d.ts +0 -68
- package/dist/core/hooks/runner.js +0 -303
- package/dist/core/index.d.ts +0 -104
- package/dist/core/index.js +0 -91
- package/dist/core/pack/migrator.d.ts +0 -51
- package/dist/core/pack/migrator.js +0 -304
- package/dist/core/pack/validator.d.ts +0 -42
- package/dist/core/pack/validator.js +0 -322
- package/dist/core/pack-v2/index.d.ts +0 -9
- package/dist/core/pack-v2/index.js +0 -8
- package/dist/core/pack-v2/loader.d.ts +0 -62
- package/dist/core/pack-v2/loader.js +0 -259
- package/dist/core/pack-v2/migrator.d.ts +0 -61
- package/dist/core/pack-v2/migrator.js +0 -480
- package/dist/core/pack-v2/validator.d.ts +0 -61
- package/dist/core/pack-v2/validator.js +0 -577
- package/dist/core/parallel/index.d.ts +0 -6
- package/dist/core/parallel/index.js +0 -6
- package/dist/core/parallel/parallel-runner.d.ts +0 -107
- package/dist/core/parallel/parallel-runner.js +0 -192
- package/dist/core/proof/bundle.d.ts +0 -137
- package/dist/core/proof/bundle.js +0 -160
- package/dist/core/proof/canonicalize.d.ts +0 -47
- package/dist/core/proof/canonicalize.js +0 -105
- package/dist/core/proof/index.d.ts +0 -13
- package/dist/core/proof/index.js +0 -18
- package/dist/core/proof/schema.d.ts +0 -217
- package/dist/core/proof/schema.js +0 -263
- package/dist/core/proof/signer.d.ts +0 -111
- package/dist/core/proof/signer.js +0 -226
- package/dist/core/proof/verifier.d.ts +0 -97
- package/dist/core/proof/verifier.js +0 -308
- package/dist/core/regression/detector.d.ts +0 -107
- package/dist/core/regression/detector.js +0 -497
- package/dist/core/regression/index.d.ts +0 -9
- package/dist/core/regression/index.js +0 -11
- package/dist/core/regression/trend-analyzer.d.ts +0 -102
- package/dist/core/regression/trend-analyzer.js +0 -345
- package/dist/core/regression/types.d.ts +0 -222
- package/dist/core/regression/types.js +0 -7
- package/dist/core/regression/vault.d.ts +0 -87
- package/dist/core/regression/vault.js +0 -289
- package/dist/core/repair/engine/fixer.d.ts +0 -24
- package/dist/core/repair/engine/fixer.js +0 -226
- package/dist/core/repair/engine/suggestion-engine.d.ts +0 -18
- package/dist/core/repair/engine/suggestion-engine.js +0 -187
- package/dist/core/repair/index.d.ts +0 -10
- package/dist/core/repair/index.js +0 -13
- package/dist/core/repair/repairer.d.ts +0 -90
- package/dist/core/repair/repairer.js +0 -284
- package/dist/core/repair/types.d.ts +0 -91
- package/dist/core/repair/types.js +0 -6
- package/dist/core/repair/utils/error-analyzer.d.ts +0 -28
- package/dist/core/repair/utils/error-analyzer.js +0 -264
- package/dist/core/reporting/html-reporter.d.ts +0 -119
- package/dist/core/reporting/html-reporter.js +0 -737
- package/dist/core/reporting/index.d.ts +0 -6
- package/dist/core/reporting/index.js +0 -6
- package/dist/core/retry/flakiness-integration.d.ts +0 -60
- package/dist/core/retry/flakiness-integration.js +0 -228
- package/dist/core/retry/index.d.ts +0 -14
- package/dist/core/retry/index.js +0 -16
- package/dist/core/retry/retry-engine.d.ts +0 -80
- package/dist/core/retry/retry-engine.js +0 -296
- package/dist/core/retry/types.d.ts +0 -178
- package/dist/core/retry/types.js +0 -52
- package/dist/core/retry/vault.d.ts +0 -77
- package/dist/core/retry/vault.js +0 -304
- package/dist/core/runner/e2e-helpers.d.ts +0 -102
- package/dist/core/runner/e2e-helpers.js +0 -153
- package/dist/core/runner/phase3-runner.d.ts +0 -200
- package/dist/core/runner/phase3-runner.js +0 -1039
- package/dist/core/secrets/crypto.d.ts +0 -75
- package/dist/core/secrets/crypto.js +0 -223
- package/dist/core/secrets/manager.d.ts +0 -76
- package/dist/core/secrets/manager.js +0 -219
- package/dist/core/security/redaction-patterns-extended.d.ts +0 -27
- package/dist/core/security/redaction-patterns-extended.js +0 -247
- package/dist/core/security/redactor.d.ts +0 -71
- package/dist/core/security/redactor.js +0 -279
- package/dist/core/self-healing/assertion-healer.d.ts +0 -97
- package/dist/core/self-healing/assertion-healer.js +0 -371
- package/dist/core/self-healing/engine.d.ts +0 -122
- package/dist/core/self-healing/engine.js +0 -538
- package/dist/core/self-healing/index.d.ts +0 -10
- package/dist/core/self-healing/index.js +0 -11
- package/dist/core/self-healing/selector-healer.d.ts +0 -103
- package/dist/core/self-healing/selector-healer.js +0 -372
- package/dist/core/self-healing/types.d.ts +0 -152
- package/dist/core/self-healing/types.js +0 -6
- package/dist/core/serve/diagnostics-collector.d.ts +0 -32
- package/dist/core/serve/diagnostics-collector.js +0 -149
- package/dist/core/serve/health-checker.d.ts +0 -44
- package/dist/core/serve/health-checker.js +0 -219
- package/dist/core/serve/index.d.ts +0 -8
- package/dist/core/serve/index.js +0 -8
- package/dist/core/serve/metrics-collector.d.ts +0 -24
- package/dist/core/serve/metrics-collector.js +0 -322
- package/dist/core/serve/process-manager.d.ts +0 -36
- package/dist/core/serve/process-manager.js +0 -213
- package/dist/core/serve/server.d.ts +0 -36
- package/dist/core/serve/server.js +0 -191
- package/dist/core/slo/config.d.ts +0 -107
- package/dist/core/slo/config.js +0 -360
- package/dist/core/slo/index.d.ts +0 -11
- package/dist/core/slo/index.js +0 -15
- package/dist/core/slo/sli-calculator.d.ts +0 -92
- package/dist/core/slo/sli-calculator.js +0 -364
- package/dist/core/slo/slo-tracker.d.ts +0 -148
- package/dist/core/slo/slo-tracker.js +0 -379
- package/dist/core/slo/types.d.ts +0 -281
- package/dist/core/slo/types.js +0 -7
- package/dist/core/slo/vault.d.ts +0 -102
- package/dist/core/slo/vault.js +0 -427
- package/dist/core/tui/index.d.ts +0 -7
- package/dist/core/tui/index.js +0 -6
- package/dist/core/tui/monitor.d.ts +0 -92
- package/dist/core/tui/monitor.js +0 -271
- package/dist/core/tui/renderer.d.ts +0 -33
- package/dist/core/tui/renderer.js +0 -218
- package/dist/core/tui/types.d.ts +0 -63
- package/dist/core/tui/types.js +0 -5
- package/dist/core/types/pack-v1.d.ts +0 -251
- package/dist/core/types/pack-v1.js +0 -5
- package/dist/core/types/pack-v2.d.ts +0 -425
- package/dist/core/types/pack-v2.js +0 -8
- package/dist/core/types/trust-score.d.ts +0 -69
- package/dist/core/types/trust-score.js +0 -191
- package/dist/core/vault/cas.d.ts +0 -90
- package/dist/core/vault/cas.js +0 -261
- package/dist/core/vault/index.d.ts +0 -326
- package/dist/core/vault/index.js +0 -1042
- package/dist/core/visual/index.d.ts +0 -6
- package/dist/core/visual/index.js +0 -6
- package/dist/core/visual/visual-regression.d.ts +0 -113
- package/dist/core/visual/visual-regression.js +0 -236
- package/dist/core/watch/index.d.ts +0 -7
- package/dist/core/watch/index.js +0 -6
- package/dist/core/watch/watch-mode.d.ts +0 -213
- package/dist/core/watch/watch-mode.js +0 -389
- package/dist/generators/index.d.ts +0 -5
- package/dist/generators/index.js +0 -5
- package/dist/generators/json-reporter.d.ts +0 -10
- package/dist/generators/json-reporter.js +0 -12
- package/dist/generators/test-generator.d.ts +0 -18
- package/dist/generators/test-generator.js +0 -78
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -246
- package/dist/scanners/dom-scanner.d.ts +0 -52
- package/dist/scanners/dom-scanner.js +0 -296
- package/dist/scanners/index.d.ts +0 -4
- package/dist/scanners/index.js +0 -4
- package/dist/schemas/pack.schema.json +0 -236
- package/dist/types/scan.d.ts +0 -68
- package/dist/types/scan.js +0 -4
- package/dist/utils/config.d.ts +0 -5
- package/dist/utils/config.js +0 -136
- /package/{bin → cli/bin}/qa360.js +0 -0
- /package/{examples → cli/examples}/accessibility.yml +0 -0
- /package/{examples → cli/examples}/api-basic.yml +0 -0
- /package/{examples → cli/examples}/complete.yml +0 -0
- /package/{examples → cli/examples}/crawler.yml +0 -0
- /package/{examples → cli/examples}/fullstack.yml +0 -0
- /package/{examples → cli/examples}/security.yml +0 -0
- /package/{examples → cli/examples}/ui-advanced.yml +0 -0
- /package/{examples → cli/examples}/ui-basic.yml +0 -0
- /package/{dist/core → core}/schemas/pack.schema.json +0 -0
|
@@ -0,0 +1,651 @@
|
|
|
1
|
+
# QA360 MCP Server
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The QA360 MCP (Model Context Protocol) Server enables seamless integration between QA360 and LLMs/IDEs. It exposes QA360's testing capabilities through a standardized protocol that can be consumed by Claude, VSCode, and other MCP-compatible clients.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
### Prerequisites
|
|
10
|
+
|
|
11
|
+
- Node.js 18+
|
|
12
|
+
- QA360 Core installed and configured
|
|
13
|
+
- MCP-compatible client (Claude Desktop, VSCode with MCP extension, etc.)
|
|
14
|
+
|
|
15
|
+
### Install from NPM
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @qa360/mcp-server
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Build from Source
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/qa360/qa360-core
|
|
25
|
+
cd qa360-core/packages/mcp-server-qa360
|
|
26
|
+
npm install
|
|
27
|
+
npm run build
|
|
28
|
+
npm link
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
### 1. Start the MCP Server
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Basic usage (read-only tools)
|
|
37
|
+
qa360-mcp
|
|
38
|
+
|
|
39
|
+
# Enable all tools (requires explicit opt-in)
|
|
40
|
+
qa360-mcp --allow-run --allow-secrets
|
|
41
|
+
|
|
42
|
+
# Custom configuration
|
|
43
|
+
qa360-mcp --allow-run --max-concurrency 5 --rate-limit 10
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Configure Your MCP Client
|
|
47
|
+
|
|
48
|
+
#### Claude Desktop
|
|
49
|
+
|
|
50
|
+
Add to `~/.config/claude-desktop/claude_desktop_config.json`:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"mcpServers": {
|
|
55
|
+
"qa360": {
|
|
56
|
+
"command": "qa360-mcp",
|
|
57
|
+
"args": ["--allow-run"],
|
|
58
|
+
"env": {
|
|
59
|
+
"QA360_LOG_LEVEL": "info"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### VSCode with MCP Extension
|
|
67
|
+
|
|
68
|
+
Add to VSCode settings:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"mcp.servers": [
|
|
73
|
+
{
|
|
74
|
+
"name": "qa360",
|
|
75
|
+
"command": "qa360-mcp",
|
|
76
|
+
"args": ["--allow-run", "--allow-secrets"],
|
|
77
|
+
"cwd": "${workspaceFolder}"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 3. Test the Connection
|
|
84
|
+
|
|
85
|
+
In your MCP client, try:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
List my recent QA360 test runs
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
or
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Generate a QA360 pack to test my web application for security issues
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Available Tools
|
|
98
|
+
|
|
99
|
+
### Core Execution Tools
|
|
100
|
+
|
|
101
|
+
#### `qa360.run`
|
|
102
|
+
Execute a QA360 pack and return results.
|
|
103
|
+
|
|
104
|
+
**Arguments:**
|
|
105
|
+
- `packPath` (required): Path to pack file
|
|
106
|
+
- `runKey` (optional): Unique key for idempotent runs
|
|
107
|
+
- `strict` (optional): Enable strict validation (default: true)
|
|
108
|
+
- `weights` (optional): Custom trust score weights
|
|
109
|
+
|
|
110
|
+
**Example:**
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"packPath": "./my-pack.yml",
|
|
114
|
+
"runKey": "ci-build-123",
|
|
115
|
+
"strict": true
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Requires:** `--allow-run` flag
|
|
120
|
+
|
|
121
|
+
#### `qa360.report.sign`
|
|
122
|
+
Sign a test report with Ed25519 signature.
|
|
123
|
+
|
|
124
|
+
**Arguments:**
|
|
125
|
+
- `runId` (required): Run ID to sign
|
|
126
|
+
|
|
127
|
+
#### `qa360.verify`
|
|
128
|
+
Verify proof integrity and signature.
|
|
129
|
+
|
|
130
|
+
**Arguments:**
|
|
131
|
+
- `runId` OR `proofPath` (required): Run ID or proof file path
|
|
132
|
+
|
|
133
|
+
### History & Analytics Tools
|
|
134
|
+
|
|
135
|
+
#### `qa360.history.list`
|
|
136
|
+
List test runs with optional filters.
|
|
137
|
+
|
|
138
|
+
**Arguments:**
|
|
139
|
+
- `limit` (optional): Max runs to return (default: 20)
|
|
140
|
+
- `status` (optional): Filter by status (passed|failed|error|cancelled|any)
|
|
141
|
+
- `gate` (optional): Filter by gate name
|
|
142
|
+
- `since` (optional): Show runs since date (ISO format)
|
|
143
|
+
|
|
144
|
+
#### `qa360.history.get`
|
|
145
|
+
Get detailed information about a specific run.
|
|
146
|
+
|
|
147
|
+
**Arguments:**
|
|
148
|
+
- `runId` (required): Run ID to retrieve
|
|
149
|
+
|
|
150
|
+
#### `qa360.history.diff`
|
|
151
|
+
Compare two test runs to identify changes.
|
|
152
|
+
|
|
153
|
+
**Arguments:**
|
|
154
|
+
- `runA` (required): First run ID
|
|
155
|
+
- `runB` (required): Second run ID
|
|
156
|
+
|
|
157
|
+
#### `qa360.history.trend`
|
|
158
|
+
Analyze trends over time for performance and quality metrics.
|
|
159
|
+
|
|
160
|
+
**Arguments:**
|
|
161
|
+
- `gate` (optional): Focus on specific gate (perf|ui|api|a11y|sast|dast|deps|secrets)
|
|
162
|
+
- `window` (optional): Number of runs to analyze (default: 20)
|
|
163
|
+
|
|
164
|
+
#### `qa360.history.export`
|
|
165
|
+
Export a complete run bundle with all artifacts.
|
|
166
|
+
|
|
167
|
+
**Arguments:**
|
|
168
|
+
- `runId` (required): Run ID to export
|
|
169
|
+
- `bundlePath` (required): Output bundle path (.zip)
|
|
170
|
+
|
|
171
|
+
#### `qa360.history.gc`
|
|
172
|
+
Garbage collection to manage vault size.
|
|
173
|
+
|
|
174
|
+
**Arguments:**
|
|
175
|
+
- `keepLast` (optional): Number of recent runs to keep (default: 50)
|
|
176
|
+
- `maxBytes` (optional): Maximum vault size (e.g., "5GB")
|
|
177
|
+
- `dryRun` (optional): Show what would be deleted (default: false)
|
|
178
|
+
|
|
179
|
+
#### `qa360.history.pin` / `qa360.history.unpin`
|
|
180
|
+
Pin/unpin runs to protect from garbage collection.
|
|
181
|
+
|
|
182
|
+
**Arguments:**
|
|
183
|
+
- `runId` (required): Run ID to pin/unpin
|
|
184
|
+
|
|
185
|
+
### Pack Management Tools
|
|
186
|
+
|
|
187
|
+
#### `qa360.pack.ask`
|
|
188
|
+
Generate a QA360 pack from natural language query.
|
|
189
|
+
|
|
190
|
+
**Arguments:**
|
|
191
|
+
- `query` (required): Natural language description
|
|
192
|
+
- `context` (optional): Additional context
|
|
193
|
+
|
|
194
|
+
**Example:**
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"query": "Test my web login form and check for security vulnerabilities",
|
|
198
|
+
"context": {
|
|
199
|
+
"targets": {
|
|
200
|
+
"url": "https://myapp.com/login"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### `qa360.pack.validate`
|
|
207
|
+
Validate a QA360 pack configuration.
|
|
208
|
+
|
|
209
|
+
**Arguments:**
|
|
210
|
+
- `pack` OR `path` (required): YAML content or file path
|
|
211
|
+
|
|
212
|
+
#### `qa360.pack.lint`
|
|
213
|
+
Lint a QA360 pack and suggest improvements.
|
|
214
|
+
|
|
215
|
+
**Arguments:**
|
|
216
|
+
- `pack` OR `path` (required): YAML content or file path
|
|
217
|
+
|
|
218
|
+
#### `qa360.pack.migrate`
|
|
219
|
+
Migrate a QA360 pack to latest version.
|
|
220
|
+
|
|
221
|
+
**Arguments:**
|
|
222
|
+
- `pack` OR `path` (required): YAML content or file path
|
|
223
|
+
|
|
224
|
+
### Secrets Management Tools
|
|
225
|
+
|
|
226
|
+
#### `qa360.secrets.add`
|
|
227
|
+
Add a secret to the secure vault.
|
|
228
|
+
|
|
229
|
+
**Arguments:**
|
|
230
|
+
- `name` (required): Secret name
|
|
231
|
+
- `value` (required): Secret value
|
|
232
|
+
- `description` (optional): Description
|
|
233
|
+
|
|
234
|
+
**Requires:** `--allow-secrets` flag
|
|
235
|
+
|
|
236
|
+
#### `qa360.secrets.list`
|
|
237
|
+
List all secrets (names only, values redacted).
|
|
238
|
+
|
|
239
|
+
**Requires:** `--allow-secrets` flag
|
|
240
|
+
|
|
241
|
+
#### `qa360.secrets.remove`
|
|
242
|
+
Remove a secret from the vault.
|
|
243
|
+
|
|
244
|
+
**Arguments:**
|
|
245
|
+
- `name` (required): Secret name to remove
|
|
246
|
+
|
|
247
|
+
**Requires:** `--allow-secrets` flag
|
|
248
|
+
|
|
249
|
+
#### `qa360.secrets.doctor`
|
|
250
|
+
Check secrets vault health and integrity.
|
|
251
|
+
|
|
252
|
+
**Requires:** `--allow-secrets` flag
|
|
253
|
+
|
|
254
|
+
### Server & Vault Tools
|
|
255
|
+
|
|
256
|
+
#### `qa360.serve.health`
|
|
257
|
+
Check QA360 server health status.
|
|
258
|
+
|
|
259
|
+
#### `qa360.serve.diag`
|
|
260
|
+
Get detailed server diagnostics.
|
|
261
|
+
|
|
262
|
+
#### `qa360.serve.metrics`
|
|
263
|
+
Get server metrics and performance data.
|
|
264
|
+
|
|
265
|
+
#### `qa360.vault.get_run`
|
|
266
|
+
Get run data from the evidence vault.
|
|
267
|
+
|
|
268
|
+
**Arguments:**
|
|
269
|
+
- `runId` (required): Run ID to retrieve
|
|
270
|
+
|
|
271
|
+
#### `qa360.vault.get_artifacts`
|
|
272
|
+
Get artifacts for a run from the vault.
|
|
273
|
+
|
|
274
|
+
**Arguments:**
|
|
275
|
+
- `runId` (required): Run ID to get artifacts for
|
|
276
|
+
|
|
277
|
+
### Triage & Support Tools
|
|
278
|
+
|
|
279
|
+
#### `qa360.triage.explain_code`
|
|
280
|
+
Explain error codes and suggest remediation actions.
|
|
281
|
+
|
|
282
|
+
**Arguments:**
|
|
283
|
+
- `code` (required): Error code (e.g., SG001, ZAP002, GL003)
|
|
284
|
+
- `context` (optional): Additional context
|
|
285
|
+
|
|
286
|
+
**Example:**
|
|
287
|
+
```json
|
|
288
|
+
{
|
|
289
|
+
"code": "SG001",
|
|
290
|
+
"context": {
|
|
291
|
+
"file": "/src/config.js",
|
|
292
|
+
"line": 42
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Security & Configuration
|
|
298
|
+
|
|
299
|
+
### Security Flags
|
|
300
|
+
|
|
301
|
+
The MCP server implements multiple security layers:
|
|
302
|
+
|
|
303
|
+
#### `--allow-run`
|
|
304
|
+
Enables the `qa360.run` tool. **Required explicit opt-in** due to potential system impact.
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
qa360-mcp --allow-run
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### `--allow-secrets`
|
|
311
|
+
Enables all `qa360.secrets.*` tools. **Required explicit opt-in** for security.
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
qa360-mcp --allow-secrets
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Rate Limiting
|
|
318
|
+
|
|
319
|
+
Control request rate to prevent abuse:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
qa360-mcp --rate-limit 10 # 10 requests per second
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Concurrency Control
|
|
326
|
+
|
|
327
|
+
Limit concurrent heavy operations:
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
qa360-mcp --max-concurrency 3 # Max 3 concurrent runs
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Audit Logging
|
|
334
|
+
|
|
335
|
+
All tool calls are logged for security and compliance:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
qa360-mcp --audit-path ~/.qa360/mcp-audit.log
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Disable audit logging:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
qa360-mcp --no-audit
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Path Sandboxing
|
|
348
|
+
|
|
349
|
+
The server restricts file access to allowed paths:
|
|
350
|
+
|
|
351
|
+
- Default: Current working directory
|
|
352
|
+
- Prevents path traversal attacks
|
|
353
|
+
- Validates all file operations
|
|
354
|
+
|
|
355
|
+
### Data Redaction
|
|
356
|
+
|
|
357
|
+
Sensitive information is automatically redacted from:
|
|
358
|
+
- Audit logs
|
|
359
|
+
- Tool responses
|
|
360
|
+
- Error messages
|
|
361
|
+
|
|
362
|
+
Patterns redacted:
|
|
363
|
+
- Bearer tokens
|
|
364
|
+
- API keys
|
|
365
|
+
- Passwords
|
|
366
|
+
- Secrets
|
|
367
|
+
|
|
368
|
+
## Configuration File
|
|
369
|
+
|
|
370
|
+
Create `~/.qa360/mcp-config.json` for persistent settings:
|
|
371
|
+
|
|
372
|
+
```json
|
|
373
|
+
{
|
|
374
|
+
"allowRun": true,
|
|
375
|
+
"allowSecrets": false,
|
|
376
|
+
"maxConcurrency": 2,
|
|
377
|
+
"rateLimit": {
|
|
378
|
+
"requests": 5,
|
|
379
|
+
"window": 1
|
|
380
|
+
},
|
|
381
|
+
"sandbox": {
|
|
382
|
+
"allowedPaths": [
|
|
383
|
+
"/home/user/projects",
|
|
384
|
+
"/opt/qa360-packs"
|
|
385
|
+
],
|
|
386
|
+
"requireQA360Dir": true
|
|
387
|
+
},
|
|
388
|
+
"audit": {
|
|
389
|
+
"enabled": true,
|
|
390
|
+
"logPath": "~/.qa360/mcp-audit.log"
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## Error Handling
|
|
396
|
+
|
|
397
|
+
### Common Error Codes
|
|
398
|
+
|
|
399
|
+
- `QA360_PERMISSION_DENIED`: Tool requires explicit permission flag
|
|
400
|
+
- `QA360_RATE_LIMIT_EXCEEDED`: Too many requests
|
|
401
|
+
- `QA360_CONCURRENCY_LIMIT`: Too many concurrent operations
|
|
402
|
+
- `QA360_PATH_ACCESS_DENIED`: File path not allowed
|
|
403
|
+
- `QA360_VAULT_NOT_FOUND`: No QA360 vault initialized
|
|
404
|
+
- `QA360_RUN_NOT_FOUND`: Specified run ID doesn't exist
|
|
405
|
+
- `QA360_INVALID_ARGUMENTS`: Tool arguments validation failed
|
|
406
|
+
|
|
407
|
+
### Error Response Format
|
|
408
|
+
|
|
409
|
+
```json
|
|
410
|
+
{
|
|
411
|
+
"error": {
|
|
412
|
+
"code": "QA360_PERMISSION_DENIED",
|
|
413
|
+
"message": "qa360.run tool requires --allow-run flag",
|
|
414
|
+
"hint": "Restart the MCP server with --allow-run flag"
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
## Integration Examples
|
|
420
|
+
|
|
421
|
+
### CI/CD Pipeline Integration
|
|
422
|
+
|
|
423
|
+
```yaml
|
|
424
|
+
# GitHub Actions
|
|
425
|
+
name: QA360 MCP Integration
|
|
426
|
+
on: [push]
|
|
427
|
+
|
|
428
|
+
jobs:
|
|
429
|
+
qa360-test:
|
|
430
|
+
runs-on: ubuntu-latest
|
|
431
|
+
steps:
|
|
432
|
+
- uses: actions/checkout@v3
|
|
433
|
+
|
|
434
|
+
- name: Setup QA360 MCP
|
|
435
|
+
run: |
|
|
436
|
+
npm install -g @qa360/mcp-server
|
|
437
|
+
qa360-mcp --allow-run &
|
|
438
|
+
sleep 2
|
|
439
|
+
|
|
440
|
+
- name: Run Tests via MCP
|
|
441
|
+
run: |
|
|
442
|
+
# Use MCP client to trigger tests
|
|
443
|
+
mcp-call qa360.run '{"packPath": "./qa360-pack.yml", "runKey": "ci-${{ github.run_id }}"}'
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Claude Desktop Workflow
|
|
447
|
+
|
|
448
|
+
1. **Generate Pack:**
|
|
449
|
+
```
|
|
450
|
+
Create a QA360 pack to test my e-commerce checkout flow for security and performance issues
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
2. **Execute Tests:**
|
|
454
|
+
```
|
|
455
|
+
Run the pack I just created and show me the results
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
3. **Analyze Results:**
|
|
459
|
+
```
|
|
460
|
+
Compare my last two test runs and show me what changed
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
4. **Triage Issues:**
|
|
464
|
+
```
|
|
465
|
+
Explain error code SG001 and tell me how to fix it
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### VSCode Integration
|
|
469
|
+
|
|
470
|
+
With the MCP extension installed:
|
|
471
|
+
|
|
472
|
+
1. Open Command Palette (`Cmd+Shift+P`)
|
|
473
|
+
2. Type "MCP: QA360"
|
|
474
|
+
3. Select desired action
|
|
475
|
+
4. Follow prompts for arguments
|
|
476
|
+
|
|
477
|
+
## Troubleshooting
|
|
478
|
+
|
|
479
|
+
### Server Won't Start
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
# Check if port is available
|
|
483
|
+
lsof -i :stdio
|
|
484
|
+
|
|
485
|
+
# Verify QA360 Core installation
|
|
486
|
+
qa360 --version
|
|
487
|
+
|
|
488
|
+
# Check permissions
|
|
489
|
+
ls -la ~/.qa360/
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Tool Permission Errors
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
# Enable required permissions
|
|
496
|
+
qa360-mcp --allow-run --allow-secrets
|
|
497
|
+
|
|
498
|
+
# Check current configuration
|
|
499
|
+
qa360-mcp --dry-run
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Connection Issues
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
# Test MCP server directly
|
|
506
|
+
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | qa360-mcp
|
|
507
|
+
|
|
508
|
+
# Verify client configuration
|
|
509
|
+
cat ~/.config/claude-desktop/claude_desktop_config.json
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
### Performance Issues
|
|
513
|
+
|
|
514
|
+
```bash
|
|
515
|
+
# Increase rate limits
|
|
516
|
+
qa360-mcp --rate-limit 20 --max-concurrency 5
|
|
517
|
+
|
|
518
|
+
# Check audit log size
|
|
519
|
+
ls -lh ~/.qa360/mcp-audit.log
|
|
520
|
+
|
|
521
|
+
# Rotate logs
|
|
522
|
+
qa360-mcp --rotate-logs
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### Vault Issues
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
# Initialize vault if missing
|
|
529
|
+
qa360 run --url https://example.com --pack ./basic-pack.yml
|
|
530
|
+
|
|
531
|
+
# Check vault health
|
|
532
|
+
qa360-mcp --vault-doctor
|
|
533
|
+
|
|
534
|
+
# Repair vault
|
|
535
|
+
qa360 doctor --fix
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
## Best Practices
|
|
539
|
+
|
|
540
|
+
### Security
|
|
541
|
+
|
|
542
|
+
1. **Principle of Least Privilege:** Only enable required tools
|
|
543
|
+
2. **Regular Auditing:** Monitor audit logs for suspicious activity
|
|
544
|
+
3. **Path Restrictions:** Use specific allowed paths, not broad directories
|
|
545
|
+
4. **Secrets Management:** Use `qa360.secrets.*` tools instead of environment variables
|
|
546
|
+
5. **Rate Limiting:** Set appropriate limits for your use case
|
|
547
|
+
|
|
548
|
+
### Performance
|
|
549
|
+
|
|
550
|
+
1. **Concurrency Limits:** Balance performance vs resource usage
|
|
551
|
+
2. **Vault Maintenance:** Regular garbage collection with `qa360.history.gc`
|
|
552
|
+
3. **Pack Optimization:** Use `qa360.pack.lint` to optimize pack configurations
|
|
553
|
+
4. **Monitoring:** Use `qa360.serve.metrics` to track performance
|
|
554
|
+
|
|
555
|
+
### Reliability
|
|
556
|
+
|
|
557
|
+
1. **Error Handling:** Always check tool responses for errors
|
|
558
|
+
2. **Idempotent Operations:** Use `runKey` for repeatable test execution
|
|
559
|
+
3. **Backup Strategy:** Pin important runs with `qa360.history.pin`
|
|
560
|
+
4. **Health Checks:** Regular `qa360.serve.health` monitoring
|
|
561
|
+
|
|
562
|
+
### Development Workflow
|
|
563
|
+
|
|
564
|
+
1. **Pack Development:** Use `qa360.pack.ask` for initial generation, then `qa360.pack.validate` and `qa360.pack.lint`
|
|
565
|
+
2. **Testing:** Use `runKey` for consistent test execution during development
|
|
566
|
+
3. **Debugging:** Use `qa360.triage.explain_code` for error resolution
|
|
567
|
+
4. **Analysis:** Use `qa360.history.trend` for performance tracking
|
|
568
|
+
|
|
569
|
+
## API Reference
|
|
570
|
+
|
|
571
|
+
### Tool Schema Validation
|
|
572
|
+
|
|
573
|
+
All tools use JSON Schema validation. Invalid arguments will be rejected with detailed error messages.
|
|
574
|
+
|
|
575
|
+
### Response Format
|
|
576
|
+
|
|
577
|
+
All tools return responses in this format:
|
|
578
|
+
|
|
579
|
+
```json
|
|
580
|
+
{
|
|
581
|
+
"success": true,
|
|
582
|
+
"data": {
|
|
583
|
+
// Tool-specific response data
|
|
584
|
+
},
|
|
585
|
+
"metadata": {
|
|
586
|
+
"timestamp": 1640995200000,
|
|
587
|
+
"duration_ms": 1500,
|
|
588
|
+
"tool": "qa360.run"
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
### Error Format
|
|
594
|
+
|
|
595
|
+
```json
|
|
596
|
+
{
|
|
597
|
+
"success": false,
|
|
598
|
+
"error": {
|
|
599
|
+
"code": "QA360_ERROR_CODE",
|
|
600
|
+
"message": "Human readable error message",
|
|
601
|
+
"hint": "Suggestion for resolution"
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
## Contributing
|
|
607
|
+
|
|
608
|
+
### Development Setup
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
git clone https://github.com/qa360/qa360-core
|
|
612
|
+
cd qa360-core/packages/mcp-server-qa360
|
|
613
|
+
npm install
|
|
614
|
+
npm run dev
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Testing
|
|
618
|
+
|
|
619
|
+
```bash
|
|
620
|
+
npm test # Unit tests
|
|
621
|
+
npm run test:integration # Integration tests
|
|
622
|
+
npm run test:coverage # Coverage report
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### Adding New Tools
|
|
626
|
+
|
|
627
|
+
1. Create tool implementation in `src/tools/`
|
|
628
|
+
2. Add to `ToolRegistry`
|
|
629
|
+
3. Add JSON schema validation
|
|
630
|
+
4. Write tests
|
|
631
|
+
5. Update documentation
|
|
632
|
+
|
|
633
|
+
## Changelog
|
|
634
|
+
|
|
635
|
+
### v0.9.0-mcp
|
|
636
|
+
- Initial MCP server implementation
|
|
637
|
+
- 24 tools covering run, history, pack, secrets, serve, vault, and triage
|
|
638
|
+
- Security features: rate limiting, sandboxing, audit logging
|
|
639
|
+
- Comprehensive test suite
|
|
640
|
+
- Full documentation
|
|
641
|
+
|
|
642
|
+
## License
|
|
643
|
+
|
|
644
|
+
MIT License - see LICENSE file for details.
|
|
645
|
+
|
|
646
|
+
## Support
|
|
647
|
+
|
|
648
|
+
- Documentation: https://qa360.ai/docs/mcp
|
|
649
|
+
- Issues: https://github.com/qa360/qa360-core/issues
|
|
650
|
+
- Discord: https://discord.gg/qa360
|
|
651
|
+
- Email: support@qa360.ai
|