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,294 @@
|
|
|
1
|
+
# QA360 MCP CLI – Zero-Friction Developer Experience
|
|
2
|
+
|
|
3
|
+
> From zero to usable QA360 tools inside in < 3 minutes
|
|
4
|
+
|
|
5
|
+
## 🚀 Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install globally
|
|
9
|
+
npm i -g @qa360/mcp
|
|
10
|
+
|
|
11
|
+
# Configure VS Code +
|
|
12
|
+
qa360-mcp init
|
|
13
|
+
|
|
14
|
+
# Start MCP server
|
|
15
|
+
qa360-mcp up
|
|
16
|
+
|
|
17
|
+
# Open and try:
|
|
18
|
+
/qa360.health
|
|
19
|
+
|
|
20
|
+
# Diagnostic (JSON output for CI)
|
|
21
|
+
qa360-mcp doctor --json
|
|
22
|
+
|
|
23
|
+
# Telemetry (opt-in, privacy-first)
|
|
24
|
+
qa360-mcp telemetry on|off|status
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 📋 Commands
|
|
28
|
+
|
|
29
|
+
| Command | Description | Options |
|
|
30
|
+
|---------|-------------|---------|
|
|
31
|
+
| `qa360-mcp init` | Configure VS Code & | `--non-interactive`, `--force` |
|
|
32
|
+
| `qa360-mcp up` | Start MCP Server (stdio mode) | `--debug`, `--allow-run`, `--allow-secrets` |
|
|
33
|
+
| `qa360-mcp serve` | Alias for `up` command | Same as `up` |
|
|
34
|
+
| `qa360-mcp doctor` | Check setup health | `--json`, `--verbose` |
|
|
35
|
+
| `qa360-mcp fix` | Repair issues automatically | `--force` |
|
|
36
|
+
| `qa360-mcp reset` | Clean all configurations | `--yes` |
|
|
37
|
+
| `qa360-mcp uninstall` | Remove QA360 MCP completely | `--force` |
|
|
38
|
+
| `qa360-mcp telemetry` | Manage opt-in telemetry | `on\|off\|status` |
|
|
39
|
+
| `qa360-mcp test:dx` | Run DX compliance tests | `--ci` |
|
|
40
|
+
|
|
41
|
+
## 🎯 Features
|
|
42
|
+
|
|
43
|
+
### ✅ Zero Manual Configuration
|
|
44
|
+
- Auto-detects VS Code installation
|
|
45
|
+
- Auto-writes `settings.json` with backup
|
|
46
|
+
- Auto-discovers extension
|
|
47
|
+
|
|
48
|
+
### ✅ Multi-Platform Support
|
|
49
|
+
- **macOS**: Full support (Intel + Apple Silicon)
|
|
50
|
+
- **Linux**: Ubuntu, Debian, Fedora, Arch
|
|
51
|
+
- **Windows**: PowerShell + WSL
|
|
52
|
+
|
|
53
|
+
### ✅ Auto-Recovery
|
|
54
|
+
- Server crashes → Auto-restart (max 3 attempts)
|
|
55
|
+
- Corrupted config → Auto-backup + repair
|
|
56
|
+
- Missing dependencies → Clear error messages
|
|
57
|
+
|
|
58
|
+
### ✅ Intelligent Feedback
|
|
59
|
+
- Human-readable messages
|
|
60
|
+
- No raw stacktraces
|
|
61
|
+
- Actionable fix suggestions
|
|
62
|
+
|
|
63
|
+
## 🔧 Configuration
|
|
64
|
+
|
|
65
|
+
### Automatic (Recommended)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
qa360-mcp init
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
This will:
|
|
72
|
+
1. Detect VS Code `settings.json`
|
|
73
|
+
2. Create backup (`.qa360.backup.json`)
|
|
74
|
+
3. Add MCP server configuration
|
|
75
|
+
4. Verify extension
|
|
76
|
+
|
|
77
|
+
### Manual
|
|
78
|
+
|
|
79
|
+
Add to VS Code `settings.json`:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"claude.mcpServers": {
|
|
84
|
+
"qa360": {
|
|
85
|
+
"command": "qa360-mcp",
|
|
86
|
+
"args": ["serve", "--stdio", "--allow-run"],
|
|
87
|
+
"env": {
|
|
88
|
+
"QA360_HOME": "~/.qa360"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 🧪 DX Testing
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Run DX compliance tests
|
|
99
|
+
qa360-mcp test:dx
|
|
100
|
+
|
|
101
|
+
# CI mode (exit with code on failure)
|
|
102
|
+
qa360-mcp test:dx --ci
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Target**: 100% DX Compliance
|
|
106
|
+
|
|
107
|
+
## 🛠️ Troubleshooting
|
|
108
|
+
|
|
109
|
+
### Server won't start
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
qa360-mcp doctor
|
|
113
|
+
qa360-mcp fix
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### not detecting tools
|
|
117
|
+
|
|
118
|
+
1. Restart VS Code
|
|
119
|
+
2. Check server logs: `qa360-mcp up --verbose`
|
|
120
|
+
3. Verify configuration: `qa360-mcp doctor`
|
|
121
|
+
|
|
122
|
+
### Permission errors
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# macOS/Linux
|
|
126
|
+
chmod +x $(which qa360-mcp)
|
|
127
|
+
|
|
128
|
+
# Windows (PowerShell as Admin)
|
|
129
|
+
Set-ExecutionPolicy RemoteSigned
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Port already in use
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Use different port
|
|
136
|
+
qa360-mcp up --port 3001
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## 📊 System Requirements
|
|
140
|
+
|
|
141
|
+
- **Node.js**: ≥ 18.0.0
|
|
142
|
+
- **VS Code**: Latest stable
|
|
143
|
+
- ****: v2.0.0+
|
|
144
|
+
- **Disk Space**: ~50MB
|
|
145
|
+
|
|
146
|
+
## 🎯 From Zero to Running (< 3 min)
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Step 1: Install (30s)
|
|
150
|
+
npm i -g @qa360/mcp
|
|
151
|
+
|
|
152
|
+
# Step 2: Configure (30s)
|
|
153
|
+
qa360-mcp init
|
|
154
|
+
|
|
155
|
+
# Step 3: Start (30s)
|
|
156
|
+
qa360-mcp up
|
|
157
|
+
|
|
158
|
+
# Step 4: Verify (30s)
|
|
159
|
+
# Open → Type: /qa360.health
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Total**: ~2 minutes ✅
|
|
163
|
+
|
|
164
|
+
## 🔐 Security & Permissions
|
|
165
|
+
|
|
166
|
+
### Default (Read-Only)
|
|
167
|
+
- ✅ `qa360.health` - Health check
|
|
168
|
+
- ✅ `qa360.history.list` - List runs
|
|
169
|
+
- ✅ `qa360.pack.validate` - Validate packs
|
|
170
|
+
|
|
171
|
+
### Opt-In (Explicit)
|
|
172
|
+
- 🔒 `qa360.run` - Requires `--allow-run`
|
|
173
|
+
- 🔒 `qa360.secrets.*` - Requires `--allow-secrets`
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Enable all permissions
|
|
177
|
+
qa360-mcp up --allow-run --allow-secrets
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Supply Chain Security
|
|
181
|
+
|
|
182
|
+
**SBOM (Software Bill of Materials)**: Automatically generated CycloneDX 1.5 SBOM with every build, including all 19 dependencies (9 production + 10 development) with cryptographic verification.
|
|
183
|
+
|
|
184
|
+
**Note**: During SBOM generation, you may see `npm error missing: ...` messages. These are **harmless warnings** from upstream peer/dev dependencies (ESLint, Vitest, etc.) not required at runtime. The SBOM pipeline uses `package-lock.json` with automatic fallback and verification (> 500 bytes). CI fails only if SBOM is absent or invalid.
|
|
185
|
+
|
|
186
|
+
## 🔄 CI/CD Integration
|
|
187
|
+
|
|
188
|
+
### JSON Output for Automation
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Get structured health check results
|
|
192
|
+
qa360-mcp doctor --json
|
|
193
|
+
|
|
194
|
+
# Example output:
|
|
195
|
+
{
|
|
196
|
+
"timestamp": "2025-10-25T14:30:00.000Z",
|
|
197
|
+
"summary": {
|
|
198
|
+
"total": 7,
|
|
199
|
+
"passed": 7,
|
|
200
|
+
"warnings": 0,
|
|
201
|
+
"errors": 0,
|
|
202
|
+
"status": "ok"
|
|
203
|
+
},
|
|
204
|
+
"checks": [...]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
# Exit codes: 0 = PASS, 1 = FAIL
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Non-Interactive Mode
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# CI/CD pipeline
|
|
214
|
+
qa360-mcp init --non-interactive --force
|
|
215
|
+
qa360-mcp doctor --json
|
|
216
|
+
qa360-mcp uninstall --force
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### GitHub Actions Example
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
- name: Install QA360 MCP
|
|
223
|
+
run: npm i -g @qa360/mcp
|
|
224
|
+
|
|
225
|
+
- name: Configure
|
|
226
|
+
run: qa360-mcp init --non-interactive --force
|
|
227
|
+
|
|
228
|
+
- name: Health Check
|
|
229
|
+
run: qa360-mcp doctor --json
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## 📊 Telemetry (Opt-In, Privacy-First)
|
|
233
|
+
|
|
234
|
+
### Privacy Policy
|
|
235
|
+
|
|
236
|
+
**Default**: Telemetry is **DISABLED** until you explicitly enable it.
|
|
237
|
+
|
|
238
|
+
**What we collect** (when enabled):
|
|
239
|
+
- CLI version
|
|
240
|
+
- Operating system (platform/arch)
|
|
241
|
+
- Command execution times
|
|
242
|
+
- Anonymous error codes
|
|
243
|
+
|
|
244
|
+
**What we DO NOT collect**:
|
|
245
|
+
- Personal information
|
|
246
|
+
- File paths or content
|
|
247
|
+
- VS Code settings
|
|
248
|
+
- Project names or URLs
|
|
249
|
+
|
|
250
|
+
### Commands
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
# Enable telemetry
|
|
254
|
+
qa360-mcp telemetry on
|
|
255
|
+
|
|
256
|
+
# Disable telemetry
|
|
257
|
+
qa360-mcp telemetry off
|
|
258
|
+
|
|
259
|
+
# Check status
|
|
260
|
+
qa360-mcp telemetry status
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
All telemetry data is stored **locally only** in `~/.qa360/telemetry-logs/` and never sent without explicit consent.
|
|
264
|
+
|
|
265
|
+
## 📚 Documentation
|
|
266
|
+
|
|
267
|
+
- [Full Documentation](https://github.com/qa360/mcp)
|
|
268
|
+
- [MCP Protocol](https://modelcontextprotocol.io)
|
|
269
|
+
- [ Extension](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)
|
|
270
|
+
|
|
271
|
+
## 🤝 Contributing
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Clone repo
|
|
275
|
+
git clone https://github.com/qa360/qa360.git
|
|
276
|
+
cd qa360/packages/qa360-mcp-cli
|
|
277
|
+
|
|
278
|
+
# Install dependencies
|
|
279
|
+
pnpm install
|
|
280
|
+
|
|
281
|
+
# Build
|
|
282
|
+
pnpm build
|
|
283
|
+
|
|
284
|
+
# Test
|
|
285
|
+
pnpm test:dx
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## 📝 License
|
|
289
|
+
|
|
290
|
+
MIT © QA360 Team
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
**🎯 From zero to running QA360 tools in < 3 min**
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# 📊 QA360 MCP CLI - Telemetry Privacy Policy
|
|
2
|
+
|
|
3
|
+
## 🔒 Privacy-First Approach
|
|
4
|
+
|
|
5
|
+
QA360 MCP CLI implements **opt-in telemetry** that respects your privacy and complies with GDPR regulations.
|
|
6
|
+
|
|
7
|
+
## 🎯 Default State
|
|
8
|
+
|
|
9
|
+
**Telemetry is DISABLED by default.**
|
|
10
|
+
|
|
11
|
+
No data is collected unless you explicitly enable it with:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
qa360-mcp telemetry on
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 📋 What We Collect (When Enabled)
|
|
18
|
+
|
|
19
|
+
When you opt-in to telemetry, we collect **anonymous, non-personal data** to improve the CLI:
|
|
20
|
+
|
|
21
|
+
### ✅ Collected Data
|
|
22
|
+
|
|
23
|
+
| Data Type | Example | Purpose |
|
|
24
|
+
|-----------|---------|---------|
|
|
25
|
+
| CLI Version | `1.0.0` | Track version adoption |
|
|
26
|
+
| Operating System | `darwin`, `linux`, `win32` | Platform-specific improvements |
|
|
27
|
+
| Architecture | `arm64`, `x64` | Compatibility testing |
|
|
28
|
+
| Node.js Version | `v20.19.5` | Version support planning |
|
|
29
|
+
| Command Names | `init`, `up`, `doctor` | Usage patterns |
|
|
30
|
+
| Execution Duration | `1250ms` | Performance optimization |
|
|
31
|
+
| Error Codes | `ERR_NODE_VERSION` | Bug prioritization |
|
|
32
|
+
| Anonymous User ID | `qa360_abc123_xyz789` | Unique session tracking |
|
|
33
|
+
|
|
34
|
+
### ❌ NOT Collected
|
|
35
|
+
|
|
36
|
+
We **NEVER** collect:
|
|
37
|
+
|
|
38
|
+
- ❌ Personal information (name, email, IP address)
|
|
39
|
+
- ❌ File paths or directory structures
|
|
40
|
+
- ❌ VS Code settings content
|
|
41
|
+
- ❌ Project names or URLs
|
|
42
|
+
- ❌ Environment variables
|
|
43
|
+
- ❌ Secrets or credentials
|
|
44
|
+
- ❌ Code snippets or file content
|
|
45
|
+
- ❌ Network requests or API calls
|
|
46
|
+
|
|
47
|
+
## 🗄️ Data Storage
|
|
48
|
+
|
|
49
|
+
### Local Storage Only
|
|
50
|
+
|
|
51
|
+
All telemetry data is stored **locally** on your machine:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
~/.qa360/telemetry-logs/
|
|
55
|
+
├── telemetry-2025-10-25.jsonl
|
|
56
|
+
├── telemetry-2025-10-26.jsonl
|
|
57
|
+
└── ...
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### No External Transmission
|
|
61
|
+
|
|
62
|
+
**Important**: In the current version, telemetry data is **NOT sent to any external server**. It is stored locally for your review and potential future opt-in sharing.
|
|
63
|
+
|
|
64
|
+
## 🔧 Managing Telemetry
|
|
65
|
+
|
|
66
|
+
### Enable Telemetry
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
qa360-mcp telemetry on
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Output**:
|
|
73
|
+
```
|
|
74
|
+
✅ Telemetry enabled
|
|
75
|
+
|
|
76
|
+
What we collect (anonymously):
|
|
77
|
+
• CLI version
|
|
78
|
+
• Operating system
|
|
79
|
+
• Command execution times
|
|
80
|
+
• Anonymous error reports
|
|
81
|
+
|
|
82
|
+
What we DO NOT collect:
|
|
83
|
+
• Personal information
|
|
84
|
+
• File paths or content
|
|
85
|
+
• VS Code settings
|
|
86
|
+
• Project names or URLs
|
|
87
|
+
|
|
88
|
+
Your anonymous ID: qa360_1729865432_abc123xyz
|
|
89
|
+
This helps us improve QA360 MCP for everyone. Thank you! 🙏
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Disable Telemetry
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
qa360-mcp telemetry off
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Output**:
|
|
99
|
+
```
|
|
100
|
+
✅ Telemetry disabled
|
|
101
|
+
|
|
102
|
+
No data will be collected.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Check Status
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
qa360-mcp telemetry status
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Output** (when enabled):
|
|
112
|
+
```
|
|
113
|
+
Status: Enabled ✓
|
|
114
|
+
Anonymous ID: qa360_1729865432_abc123xyz
|
|
115
|
+
Last updated: 2025-10-25 14:30:00
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Output** (when disabled):
|
|
119
|
+
```
|
|
120
|
+
Status: Disabled ✗
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 🧹 Data Purge
|
|
124
|
+
|
|
125
|
+
### Delete All Telemetry Data
|
|
126
|
+
|
|
127
|
+
To completely remove all telemetry data from your machine:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Remove telemetry configuration
|
|
131
|
+
rm ~/.qa360/telemetry.json
|
|
132
|
+
|
|
133
|
+
# Remove all telemetry logs
|
|
134
|
+
rm -rf ~/.qa360/telemetry-logs/
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
After this, telemetry will be disabled and all collected data will be permanently deleted.
|
|
138
|
+
|
|
139
|
+
## 📊 Example Telemetry Event
|
|
140
|
+
|
|
141
|
+
When telemetry is enabled, events are logged in JSONL format:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"event": "command_executed",
|
|
146
|
+
"userId": "qa360_1729865432_abc123xyz",
|
|
147
|
+
"timestamp": "2025-10-25T14:30:00.000Z",
|
|
148
|
+
"version": "1.0.0",
|
|
149
|
+
"platform": "darwin",
|
|
150
|
+
"arch": "arm64",
|
|
151
|
+
"nodeVersion": "v20.19.5",
|
|
152
|
+
"data": {
|
|
153
|
+
"command": "init",
|
|
154
|
+
"duration": 1250,
|
|
155
|
+
"success": true
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Note**: No personal or sensitive information is included.
|
|
161
|
+
|
|
162
|
+
## 🔐 Security & Compliance
|
|
163
|
+
|
|
164
|
+
### GDPR Compliance
|
|
165
|
+
|
|
166
|
+
QA360 MCP CLI telemetry is designed to comply with GDPR:
|
|
167
|
+
|
|
168
|
+
- ✅ **Opt-in by default** (Article 6)
|
|
169
|
+
- ✅ **Explicit consent** required
|
|
170
|
+
- ✅ **Data minimization** (only essential data)
|
|
171
|
+
- ✅ **Right to erasure** (easy data deletion)
|
|
172
|
+
- ✅ **Transparency** (clear documentation)
|
|
173
|
+
- ✅ **Local storage** (no third-party sharing)
|
|
174
|
+
|
|
175
|
+
### Data Retention
|
|
176
|
+
|
|
177
|
+
- Telemetry logs are stored **indefinitely** on your local machine
|
|
178
|
+
- You can delete them at any time
|
|
179
|
+
- No automatic cleanup (you control your data)
|
|
180
|
+
|
|
181
|
+
## 🤝 Why Telemetry?
|
|
182
|
+
|
|
183
|
+
Telemetry helps us:
|
|
184
|
+
|
|
185
|
+
1. **Prioritize Features**: Understand which commands are most used
|
|
186
|
+
2. **Fix Bugs Faster**: Identify common error patterns
|
|
187
|
+
3. **Improve Performance**: Detect slow operations
|
|
188
|
+
4. **Support Platforms**: Know which OS/Node versions to prioritize
|
|
189
|
+
5. **Validate DX**: Measure actual installation times
|
|
190
|
+
|
|
191
|
+
## 📞 Questions or Concerns?
|
|
192
|
+
|
|
193
|
+
If you have questions about telemetry or privacy:
|
|
194
|
+
|
|
195
|
+
- **GitHub Issues**: [qa360/qa360/issues](https://github.com/qa360/qa360/issues)
|
|
196
|
+
- **Email**: privacy@qa360.io
|
|
197
|
+
- **Documentation**: [qa360.io/privacy](https://qa360.io/privacy)
|
|
198
|
+
|
|
199
|
+
## 📝 Changes to This Policy
|
|
200
|
+
|
|
201
|
+
We may update this privacy policy. Changes will be:
|
|
202
|
+
|
|
203
|
+
- Documented in `CHANGELOG.md`
|
|
204
|
+
- Announced in release notes
|
|
205
|
+
- Require re-consent if data collection changes
|
|
206
|
+
|
|
207
|
+
## 🏆 Transparency Commitment
|
|
208
|
+
|
|
209
|
+
We believe in **radical transparency**:
|
|
210
|
+
|
|
211
|
+
- All telemetry code is open source
|
|
212
|
+
- You can inspect what data is collected
|
|
213
|
+
- You control your data at all times
|
|
214
|
+
- We never sell or share your data
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
**Last Updated**: 2025-10-25
|
|
219
|
+
**Version**: 1.0.0
|
|
220
|
+
**Status**: ✅ GDPR Compliant, Privacy-First, Opt-In Only
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa360-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "QA360 MCP - Zero-friction CLI + Full MCP Server (23 tools) for integration with industrial DX compliance",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"qa360-mcp": "dist/cli/cli.js",
|
|
9
|
+
"qa360-mcp-server": "dist/server/full-server.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc -p tsconfig.json",
|
|
13
|
+
"build:pkg": "tsc",
|
|
14
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"start": "node dist/cli/cli.js",
|
|
17
|
+
"test": "vitest run --passWithNoTests",
|
|
18
|
+
"test:watch": "vitest",
|
|
19
|
+
"test:dx": "vitest run tests/dx.test.ts",
|
|
20
|
+
"lint": "eslint src --ext .ts",
|
|
21
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
22
|
+
"pre-sbom": "mkdir -p dist && npm i --package-lock-only 2>/dev/null || true",
|
|
23
|
+
"sbom:real": "npx @cyclonedx/cyclonedx-npm --package-lock-only --output-format JSON --output-file dist/qa360-sbom.json 2>/dev/null || node scripts/generate-sbom-fallback.cjs",
|
|
24
|
+
"sbom:verify": "node -e \"const f='dist/qa360-sbom.json';const fs=require('fs');if(!fs.existsSync(f)){console.error('❌ SBOM not found');process.exit(1);}const s=fs.statSync(f).size;if(s<500){console.error('❌ SBOM too small:',s,'bytes');process.exit(2);}console.log('✅ SBOM verified:',s,'bytes');\"",
|
|
25
|
+
"sbom": "npm run pre-sbom && npm run sbom:real && npm run sbom:verify",
|
|
26
|
+
"audit:ci": "npm audit --audit-level=high --json > dist/security-audit.json || exit 1",
|
|
27
|
+
"verify:settings": "node dist/scripts/verify-settings.js",
|
|
28
|
+
"e2e": "node dist/scripts/e2e-local.js",
|
|
29
|
+
"ci:pre": "npm run check && npm run build",
|
|
30
|
+
"ci:security": "npm run sbom && npm run audit:ci",
|
|
31
|
+
"ci:e2e": "qa360-mcp init --non-interactive --force && qa360-mcp doctor --json",
|
|
32
|
+
"ci:all": "npm run ci:pre && npm run ci:security && npm run ci:e2e",
|
|
33
|
+
|
|
34
|
+
"prepublishOnly": "npm run check && npm run build && npm run sbom && npm run audit:ci",
|
|
35
|
+
"publish:dry": "npm publish --access public --provenance --dry-run",
|
|
36
|
+
"publish:real": "npm publish --access public --provenance",
|
|
37
|
+
"postinstall": "node scripts/safe-postinstall.cjs"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"qa360",
|
|
41
|
+
"mcp",
|
|
42
|
+
"model-context-protocol",
|
|
43
|
+
"claude",
|
|
44
|
+
"vscode",
|
|
45
|
+
"cli",
|
|
46
|
+
"dx",
|
|
47
|
+
"testing",
|
|
48
|
+
"ai"
|
|
49
|
+
],
|
|
50
|
+
"author": "QA360 Team",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "https://github.com/xyqotech/qa360.git",
|
|
55
|
+
"directory": "packages/mcp"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/xyqotech/qa360",
|
|
58
|
+
"bugs": {
|
|
59
|
+
"url": "https://github.com/xyqotech/qa360/issues"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@modelcontextprotocol/sdk": "^0.4.0",
|
|
63
|
+
"qa360-core": "workspace:*",
|
|
64
|
+
"ajv": "^8.12.0",
|
|
65
|
+
"chalk": "^5.3.0",
|
|
66
|
+
"commander": "^11.1.0",
|
|
67
|
+
"execa": "^8.0.1",
|
|
68
|
+
"fs-extra": "^11.2.0",
|
|
69
|
+
"inquirer": "^9.2.12",
|
|
70
|
+
"jsonc-parser": "^3.2.0",
|
|
71
|
+
"ora": "^8.0.1",
|
|
72
|
+
"semver": "^7.5.4"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@cyclonedx/cyclonedx-npm": "1.20.0",
|
|
76
|
+
"@types/fs-extra": "^11.0.4",
|
|
77
|
+
"@types/inquirer": "^9.0.7",
|
|
78
|
+
"@types/node": "^20.10.0",
|
|
79
|
+
"@types/semver": "^7.5.6",
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
81
|
+
"@typescript-eslint/parser": "^6.13.0",
|
|
82
|
+
"eslint": "^8.55.0",
|
|
83
|
+
"typescript": "^5.3.0",
|
|
84
|
+
"vitest": "^1.0.4"
|
|
85
|
+
},
|
|
86
|
+
"files": [
|
|
87
|
+
"dist/**/*",
|
|
88
|
+
"scripts/**/*",
|
|
89
|
+
"README.md",
|
|
90
|
+
"LICENSE"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SBOM Fallback Generator
|
|
4
|
+
* Génère une SBOM CycloneDX 1.5 complète depuis package.json
|
|
5
|
+
* Utilisé quand cyclonedx-npm échoue (environnements pnpm)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
|
|
11
|
+
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
12
|
+
const outputPath = path.join(__dirname, '..', 'dist', 'qa360-sbom.json');
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
16
|
+
|
|
17
|
+
const components = [];
|
|
18
|
+
|
|
19
|
+
// Production dependencies
|
|
20
|
+
if (pkg.dependencies) {
|
|
21
|
+
Object.entries(pkg.dependencies).forEach(([name, version]) => {
|
|
22
|
+
components.push({
|
|
23
|
+
type: 'library',
|
|
24
|
+
name,
|
|
25
|
+
version: version.replace(/^[\^~]/, ''), // Remove ^ or ~
|
|
26
|
+
scope: 'required'
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Dev dependencies (optional scope)
|
|
32
|
+
if (pkg.devDependencies) {
|
|
33
|
+
Object.entries(pkg.devDependencies).forEach(([name, version]) => {
|
|
34
|
+
components.push({
|
|
35
|
+
type: 'library',
|
|
36
|
+
name,
|
|
37
|
+
version: version.replace(/^[\^~]/, ''),
|
|
38
|
+
scope: 'optional'
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const sbom = {
|
|
44
|
+
bomFormat: 'CycloneDX',
|
|
45
|
+
specVersion: '1.5',
|
|
46
|
+
version: 1,
|
|
47
|
+
serialNumber: `urn:uuid:${generateUUID()}`,
|
|
48
|
+
metadata: {
|
|
49
|
+
timestamp: new Date().toISOString(),
|
|
50
|
+
tools: [
|
|
51
|
+
{
|
|
52
|
+
vendor: 'QA360',
|
|
53
|
+
name: 'sbom-fallback-generator',
|
|
54
|
+
version: '1.0.0'
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
component: {
|
|
58
|
+
type: 'application',
|
|
59
|
+
'bom-ref': `pkg:npm/${pkg.name}@${pkg.version}`,
|
|
60
|
+
name: pkg.name,
|
|
61
|
+
version: pkg.version,
|
|
62
|
+
description: pkg.description || '',
|
|
63
|
+
licenses: pkg.license ? [{ license: { id: pkg.license } }] : []
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
components
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
fs.writeFileSync(outputPath, JSON.stringify(sbom, null, 2));
|
|
70
|
+
console.log(`✅ SBOM fallback generated: ${outputPath} (${components.length} components)`);
|
|
71
|
+
process.exit(0);
|
|
72
|
+
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error('❌ SBOM fallback generation failed:', error.message);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function generateUUID() {
|
|
79
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
|
80
|
+
const r = Math.random() * 16 | 0;
|
|
81
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
82
|
+
return v.toString(16);
|
|
83
|
+
});
|
|
84
|
+
}
|