qa360 2.1.7 → 2.2.0
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 +154 -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 +46 -0
- package/check-branches.sh +32 -0
- package/cli/.qa360/keys/ed25519.key +1 -0
- package/cli/.qa360/keys/ed25519.pub +1 -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 +108 -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 +702 -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 +777 -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 +59 -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__/fixtures/jest-coverage.json +8 -0
- package/core/src/adapters/__tests__/fixtures/jest-results.json +41 -0
- package/core/src/adapters/__tests__/fixtures/pytest-junit.xml +16 -0
- package/core/src/adapters/__tests__/fixtures/vitest-coverage.json +8 -0
- package/core/src/adapters/__tests__/fixtures/vitest-results.json +50 -0
- package/core/src/adapters/__tests__/gitleaks-secrets.test.ts +452 -0
- package/core/src/adapters/__tests__/jest-adapter.test.ts +276 -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__/pytest-adapter.test.ts +207 -0
- package/core/src/adapters/__tests__/semgrep-sast.test.ts +436 -0
- package/core/src/adapters/__tests__/vitest-adapter.test.ts +208 -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/jest-adapter.ts +306 -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/pytest-adapter.ts +472 -0
- package/core/src/adapters/semgrep-sast.ts +410 -0
- package/core/src/adapters/unit-test-types.ts +106 -0
- package/core/src/adapters/vitest-adapter.ts +295 -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 +262 -0
- package/core/src/ai/deepseek-provider.ts +315 -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 +269 -0
- package/core/src/ai/openai-provider.ts +240 -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/fixtures/__tests__/loader.test.ts +246 -0
- package/core/src/fixtures/__tests__/resolver.test.ts +334 -0
- package/core/src/fixtures/index.ts +9 -0
- package/core/src/fixtures/loader.ts +189 -0
- package/core/src/fixtures/resolver.ts +221 -0
- package/core/src/fixtures/types.ts +86 -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 +255 -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 +609 -0
- package/core/src/pack-v2/index.ts +41 -0
- package/core/src/pack-v2/loader.ts +358 -0
- package/core/src/pack-v2/migrator.ts +540 -0
- package/core/src/pack-v2/validator.ts +726 -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/pom/__tests__/loader.test.ts +378 -0
- package/core/src/pom/base-page.ts +425 -0
- package/core/src/pom/index.ts +45 -0
- package/core/src/pom/loader.ts +480 -0
- package/core/src/pom/types.ts +146 -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 +501 -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 +545 -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/QA360_TESTING_PHILOSOPHY.md +769 -0
- package/docs/QA_TEST_PLAN.md +727 -0
- package/docs/README.md +50 -0
- package/docs/STATUS.md +198 -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 +16 -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/archive/obsolete-proposals/dom-element-discovery-mode.md +250 -0
- package/docs/archive/obsolete-proposals/qa360-comprehensive-test-plan.md +1249 -0
- package/docs/archive/obsolete-proposals/qa360-quick-start-guide.md +298 -0
- package/docs/archive/obsolete-proposals/technical-plan-dom-discovery.md +870 -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 +512 -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/page-objects.md +366 -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/unit-test-adapters.md +168 -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/fixtures-demo/fixtures/users.yml +39 -0
- package/examples/fixtures-demo/pack.yml +71 -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/pom-demo/README.md +104 -0
- package/examples/pom-demo/pack.yml +60 -0
- package/examples/pom-demo/pages/DashboardPage.page.ts +73 -0
- package/examples/pom-demo/pages/LoginPage.page.ts +76 -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 +91 -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/sync-version.mjs +50 -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 +50 -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 -43
- package/dist/commands/ai.js +0 -616
- 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 -755
- package/dist/commands/init.d.ts +0 -106
- package/dist/commands/init.js +0 -616
- 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 -465
- 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 -223
- package/dist/core/ai/deepseek-provider.d.ts +0 -81
- package/dist/core/ai/deepseek-provider.js +0 -266
- 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 -204
- package/dist/core/ai/openai-provider.d.ts +0 -48
- package/dist/core/ai/openai-provider.js +0 -200
- 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 -63
- package/dist/core/pack-v2/loader.js +0 -292
- 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 -1041
- 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
package/dist/core/slo/vault.d.ts
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SLO/SLI Vault Integration
|
|
3
|
-
*
|
|
4
|
-
* Integrates SLO/SLI data storage and retrieval with the Evidence Vault.
|
|
5
|
-
*/
|
|
6
|
-
import type { Database } from 'sqlite3';
|
|
7
|
-
import type { SLO, SLI, SLIMeasurement, SLOViolation, SLOStatus } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* SLO Vault class
|
|
10
|
-
*/
|
|
11
|
-
export declare class SLOVault {
|
|
12
|
-
private db;
|
|
13
|
-
private dbRun;
|
|
14
|
-
private dbAll;
|
|
15
|
-
private dbGet;
|
|
16
|
-
constructor(db: Database);
|
|
17
|
-
/**
|
|
18
|
-
* Initialize SLO/SLI tables
|
|
19
|
-
*/
|
|
20
|
-
initialize(): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Store an SLO definition
|
|
23
|
-
*/
|
|
24
|
-
storeSLO(slo: SLO): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Store an SLI definition
|
|
27
|
-
*/
|
|
28
|
-
storeSLI(sli: SLI): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* Store an SLI measurement
|
|
31
|
-
*/
|
|
32
|
-
storeMeasurement(measurement: SLIMeasurement, runId?: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Store an SLO snapshot
|
|
35
|
-
*/
|
|
36
|
-
storeSLOSnapshot(sloId: string, data: {
|
|
37
|
-
currentValue: number;
|
|
38
|
-
target: number;
|
|
39
|
-
status: SLOStatus;
|
|
40
|
-
errorBudgetRemaining: number;
|
|
41
|
-
burnRate?: number;
|
|
42
|
-
windowStart: number;
|
|
43
|
-
windowEnd: number;
|
|
44
|
-
}, runId?: string): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Store an SLO violation
|
|
47
|
-
*/
|
|
48
|
-
storeViolation(violation: SLOViolation): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Get all SLO definitions
|
|
51
|
-
*/
|
|
52
|
-
getSLOs(): Promise<SLO[]>;
|
|
53
|
-
/**
|
|
54
|
-
* Get an SLO by ID
|
|
55
|
-
*/
|
|
56
|
-
getSLO(id: string): Promise<SLO | null>;
|
|
57
|
-
/**
|
|
58
|
-
* Get all SLI definitions
|
|
59
|
-
*/
|
|
60
|
-
getSLIs(): Promise<SLI[]>;
|
|
61
|
-
/**
|
|
62
|
-
* Get measurements for an SLI
|
|
63
|
-
*/
|
|
64
|
-
getMeasurements(sliId: string, windowStart?: number, windowEnd?: number, limit?: number): Promise<SLIMeasurement[]>;
|
|
65
|
-
/**
|
|
66
|
-
* Get violations for an SLO
|
|
67
|
-
*/
|
|
68
|
-
getViolations(sloId?: string, resolved?: boolean): Promise<SLOViolation[]>;
|
|
69
|
-
/**
|
|
70
|
-
* Get SLO snapshots for trend analysis
|
|
71
|
-
*/
|
|
72
|
-
getSLOSnapshots(sloId: string, windowStart?: number, windowEnd?: number, limit?: number): Promise<Array<{
|
|
73
|
-
timestamp: number;
|
|
74
|
-
currentValue: number;
|
|
75
|
-
target: number;
|
|
76
|
-
status: SLOStatus;
|
|
77
|
-
errorBudgetRemaining: number;
|
|
78
|
-
burnRate?: number;
|
|
79
|
-
}>>;
|
|
80
|
-
/**
|
|
81
|
-
* Delete an SLO and its associated data
|
|
82
|
-
*/
|
|
83
|
-
deleteSLO(id: string): Promise<void>;
|
|
84
|
-
/**
|
|
85
|
-
* Delete an SLI and its associated data
|
|
86
|
-
*/
|
|
87
|
-
deleteSLI(id: string): Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* Resolve a violation
|
|
90
|
-
*/
|
|
91
|
-
resolveViolation(violationId: string): Promise<void>;
|
|
92
|
-
/**
|
|
93
|
-
* Get SLO statistics
|
|
94
|
-
*/
|
|
95
|
-
getStatistics(): Promise<{
|
|
96
|
-
totalSLOs: number;
|
|
97
|
-
totalSLIs: number;
|
|
98
|
-
statusCounts: Record<SLOStatus, number>;
|
|
99
|
-
activeViolations: number;
|
|
100
|
-
totalMeasurements: number;
|
|
101
|
-
}>;
|
|
102
|
-
}
|
package/dist/core/slo/vault.js
DELETED
|
@@ -1,427 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SLO/SLI Vault Integration
|
|
3
|
-
*
|
|
4
|
-
* Integrates SLO/SLI data storage and retrieval with the Evidence Vault.
|
|
5
|
-
*/
|
|
6
|
-
import { promisify } from 'util';
|
|
7
|
-
/**
|
|
8
|
-
* SLO Vault class
|
|
9
|
-
*/
|
|
10
|
-
export class SLOVault {
|
|
11
|
-
db;
|
|
12
|
-
dbRun;
|
|
13
|
-
dbAll;
|
|
14
|
-
dbGet;
|
|
15
|
-
constructor(db) {
|
|
16
|
-
this.db = db;
|
|
17
|
-
this.dbRun = promisify(db.run.bind(db));
|
|
18
|
-
this.dbAll = promisify(db.all.bind(db));
|
|
19
|
-
this.dbGet = promisify(db.get.bind(db));
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Initialize SLO/SLI tables
|
|
23
|
-
*/
|
|
24
|
-
async initialize() {
|
|
25
|
-
const schema = `
|
|
26
|
-
-- SLO definitions table
|
|
27
|
-
CREATE TABLE IF NOT EXISTS slo_definitions (
|
|
28
|
-
id TEXT PRIMARY KEY,
|
|
29
|
-
name TEXT NOT NULL,
|
|
30
|
-
description TEXT,
|
|
31
|
-
sli_ids TEXT NOT NULL,
|
|
32
|
-
target REAL NOT NULL,
|
|
33
|
-
window_ms INTEGER NOT NULL,
|
|
34
|
-
error_budget_json TEXT NOT NULL,
|
|
35
|
-
status TEXT NOT NULL DEFAULT 'unknown',
|
|
36
|
-
current_value REAL,
|
|
37
|
-
tags TEXT,
|
|
38
|
-
owner TEXT,
|
|
39
|
-
created_at INTEGER NOT NULL,
|
|
40
|
-
updated_at INTEGER NOT NULL
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
CREATE INDEX IF NOT EXISTS idx_slo_status ON slo_definitions(status);
|
|
44
|
-
CREATE INDEX IF NOT EXISTS idx_slo_owner ON slo_definitions(owner);
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_slo_tags ON slo_definitions(tags);
|
|
46
|
-
|
|
47
|
-
-- SLI definitions table
|
|
48
|
-
CREATE TABLE IF NOT EXISTS sli_definitions (
|
|
49
|
-
id TEXT PRIMARY KEY,
|
|
50
|
-
name TEXT NOT NULL,
|
|
51
|
-
description TEXT,
|
|
52
|
-
type TEXT NOT NULL,
|
|
53
|
-
source TEXT NOT NULL,
|
|
54
|
-
query_json TEXT NOT NULL,
|
|
55
|
-
aggregation TEXT NOT NULL,
|
|
56
|
-
unit TEXT NOT NULL,
|
|
57
|
-
threshold_json TEXT NOT NULL,
|
|
58
|
-
category TEXT NOT NULL,
|
|
59
|
-
tags TEXT,
|
|
60
|
-
created_at INTEGER NOT NULL,
|
|
61
|
-
updated_at INTEGER NOT NULL
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
CREATE INDEX IF NOT EXISTS idx_sli_type ON sli_definitions(type);
|
|
65
|
-
CREATE INDEX IF NOT EXISTS idx_sli_category ON sli_definitions(category);
|
|
66
|
-
|
|
67
|
-
-- SLI measurements table
|
|
68
|
-
CREATE TABLE IF NOT EXISTS sli_measurements (
|
|
69
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
70
|
-
sli_id TEXT NOT NULL REFERENCES sli_definitions(id) ON DELETE CASCADE,
|
|
71
|
-
run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
72
|
-
timestamp INTEGER NOT NULL,
|
|
73
|
-
value REAL NOT NULL,
|
|
74
|
-
total INTEGER,
|
|
75
|
-
good INTEGER,
|
|
76
|
-
bad INTEGER,
|
|
77
|
-
unit TEXT NOT NULL,
|
|
78
|
-
window_start INTEGER NOT NULL,
|
|
79
|
-
window_end INTEGER NOT NULL
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
CREATE INDEX IF NOT EXISTS idx_sli_measurements_sli_id ON sli_measurements(sli_id);
|
|
83
|
-
CREATE INDEX IF NOT EXISTS idx_sli_measurements_run_id ON sli_measurements(run_id);
|
|
84
|
-
CREATE INDEX IF NOT EXISTS idx_sli_measurements_timestamp ON sli_measurements(timestamp);
|
|
85
|
-
|
|
86
|
-
-- SLO violations table
|
|
87
|
-
CREATE TABLE IF NOT EXISTS slo_violations (
|
|
88
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
89
|
-
slo_id TEXT NOT NULL REFERENCES slo_definitions(id) ON DELETE CASCADE,
|
|
90
|
-
timestamp INTEGER NOT NULL,
|
|
91
|
-
value REAL NOT NULL,
|
|
92
|
-
expected REAL NOT NULL,
|
|
93
|
-
severity TEXT NOT NULL,
|
|
94
|
-
context_json TEXT,
|
|
95
|
-
resolved INTEGER DEFAULT 0,
|
|
96
|
-
resolved_at INTEGER
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
CREATE INDEX IF NOT EXISTS idx_slo_violations_slo_id ON slo_violations(slo_id);
|
|
100
|
-
CREATE INDEX IF NOT EXISTS idx_slo_violations_timestamp ON slo_violations(timestamp);
|
|
101
|
-
CREATE INDEX IF NOT EXISTS idx_slo_violations_resolved ON slo_violations(resolved);
|
|
102
|
-
|
|
103
|
-
-- SLO snapshots (aggregated SLO status over time)
|
|
104
|
-
CREATE TABLE IF NOT EXISTS slo_snapshots (
|
|
105
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
106
|
-
slo_id TEXT NOT NULL REFERENCES slo_definitions(id) ON DELETE CASCADE,
|
|
107
|
-
run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
108
|
-
timestamp INTEGER NOT NULL,
|
|
109
|
-
current_value REAL NOT NULL,
|
|
110
|
-
target REAL NOT NULL,
|
|
111
|
-
status TEXT NOT NULL,
|
|
112
|
-
error_budget_remaining REAL NOT NULL,
|
|
113
|
-
burn_rate REAL,
|
|
114
|
-
window_start INTEGER NOT NULL,
|
|
115
|
-
window_end INTEGER NOT NULL
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
CREATE INDEX IF NOT EXISTS idx_slo_snapshots_slo_id ON slo_snapshots(slo_id);
|
|
119
|
-
CREATE INDEX IF NOT EXISTS idx_slo_snapshots_timestamp ON slo_snapshots(timestamp);
|
|
120
|
-
`;
|
|
121
|
-
const statements = schema
|
|
122
|
-
.split(';')
|
|
123
|
-
.map(s => s.trim())
|
|
124
|
-
.filter(s => s.length > 0);
|
|
125
|
-
for (const statement of statements) {
|
|
126
|
-
await this.dbRun(statement, []);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Store an SLO definition
|
|
131
|
-
*/
|
|
132
|
-
async storeSLO(slo) {
|
|
133
|
-
await this.dbRun(`INSERT OR REPLACE INTO slo_definitions (
|
|
134
|
-
id, name, description, sli_ids, target, window_ms,
|
|
135
|
-
error_budget_json, status, current_value, tags, owner,
|
|
136
|
-
created_at, updated_at
|
|
137
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
138
|
-
slo.id,
|
|
139
|
-
slo.name,
|
|
140
|
-
slo.description || null,
|
|
141
|
-
JSON.stringify(slo.sliIds),
|
|
142
|
-
slo.target,
|
|
143
|
-
slo.windowMs,
|
|
144
|
-
JSON.stringify(slo.errorBudget),
|
|
145
|
-
slo.status,
|
|
146
|
-
slo.currentValue || null,
|
|
147
|
-
slo.tags ? JSON.stringify(slo.tags) : null,
|
|
148
|
-
slo.owner || null,
|
|
149
|
-
slo.createdAt,
|
|
150
|
-
Date.now()
|
|
151
|
-
]);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Store an SLI definition
|
|
155
|
-
*/
|
|
156
|
-
async storeSLI(sli) {
|
|
157
|
-
await this.dbRun(`INSERT OR REPLACE INTO sli_definitions (
|
|
158
|
-
id, name, description, type, source, query_json,
|
|
159
|
-
aggregation, unit, threshold_json, category, tags,
|
|
160
|
-
created_at, updated_at
|
|
161
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
162
|
-
sli.id,
|
|
163
|
-
sli.name,
|
|
164
|
-
sli.description || null,
|
|
165
|
-
sli.type,
|
|
166
|
-
sli.source,
|
|
167
|
-
JSON.stringify(sli.query),
|
|
168
|
-
sli.aggregation,
|
|
169
|
-
sli.unit,
|
|
170
|
-
JSON.stringify(sli.threshold),
|
|
171
|
-
sli.category,
|
|
172
|
-
sli.tags ? JSON.stringify(sli.tags) : null,
|
|
173
|
-
sli.createdAt,
|
|
174
|
-
Date.now()
|
|
175
|
-
]);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Store an SLI measurement
|
|
179
|
-
*/
|
|
180
|
-
async storeMeasurement(measurement, runId) {
|
|
181
|
-
await this.dbRun(`INSERT INTO sli_measurements (
|
|
182
|
-
sli_id, run_id, timestamp, value, total, good, bad,
|
|
183
|
-
unit, window_start, window_end
|
|
184
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
185
|
-
measurement.sliId,
|
|
186
|
-
runId || null,
|
|
187
|
-
measurement.timestamp,
|
|
188
|
-
measurement.value,
|
|
189
|
-
measurement.total || null,
|
|
190
|
-
measurement.good || null,
|
|
191
|
-
measurement.bad || null,
|
|
192
|
-
measurement.unit,
|
|
193
|
-
measurement.windowStart,
|
|
194
|
-
measurement.windowEnd
|
|
195
|
-
]);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Store an SLO snapshot
|
|
199
|
-
*/
|
|
200
|
-
async storeSLOSnapshot(sloId, data, runId) {
|
|
201
|
-
await this.dbRun(`INSERT INTO slo_snapshots (
|
|
202
|
-
slo_id, run_id, timestamp, current_value, target, status,
|
|
203
|
-
error_budget_remaining, burn_rate, window_start, window_end
|
|
204
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
205
|
-
sloId,
|
|
206
|
-
runId || null,
|
|
207
|
-
Date.now(),
|
|
208
|
-
data.currentValue,
|
|
209
|
-
data.target,
|
|
210
|
-
data.status,
|
|
211
|
-
data.errorBudgetRemaining,
|
|
212
|
-
data.burnRate || null,
|
|
213
|
-
data.windowStart,
|
|
214
|
-
data.windowEnd
|
|
215
|
-
]);
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Store an SLO violation
|
|
219
|
-
*/
|
|
220
|
-
async storeViolation(violation) {
|
|
221
|
-
await this.dbRun(`INSERT INTO slo_violations (
|
|
222
|
-
slo_id, timestamp, value, expected, severity,
|
|
223
|
-
context_json, resolved, resolved_at
|
|
224
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
225
|
-
violation.sloId,
|
|
226
|
-
violation.timestamp,
|
|
227
|
-
violation.value,
|
|
228
|
-
violation.expected,
|
|
229
|
-
violation.severity,
|
|
230
|
-
violation.context ? JSON.stringify(violation.context) : null,
|
|
231
|
-
violation.resolved ? 1 : 0,
|
|
232
|
-
violation.resolvedAt || null
|
|
233
|
-
]);
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Get all SLO definitions
|
|
237
|
-
*/
|
|
238
|
-
async getSLOs() {
|
|
239
|
-
const rows = await this.dbAll(`SELECT * FROM slo_definitions`, []);
|
|
240
|
-
return rows.map((r) => ({
|
|
241
|
-
id: r.id,
|
|
242
|
-
name: r.name,
|
|
243
|
-
description: r.description,
|
|
244
|
-
sliIds: JSON.parse(r.sli_ids),
|
|
245
|
-
target: r.target,
|
|
246
|
-
windowMs: r.window_ms,
|
|
247
|
-
errorBudget: JSON.parse(r.error_budget_json),
|
|
248
|
-
status: r.status,
|
|
249
|
-
currentValue: r.current_value,
|
|
250
|
-
tags: r.tags ? JSON.parse(r.tags) : undefined,
|
|
251
|
-
owner: r.owner,
|
|
252
|
-
createdAt: r.created_at,
|
|
253
|
-
updatedAt: r.updated_at
|
|
254
|
-
}));
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Get an SLO by ID
|
|
258
|
-
*/
|
|
259
|
-
async getSLO(id) {
|
|
260
|
-
const row = await this.dbGet(`SELECT * FROM slo_definitions WHERE id = ?`, [id]);
|
|
261
|
-
if (!row)
|
|
262
|
-
return null;
|
|
263
|
-
return {
|
|
264
|
-
id: row.id,
|
|
265
|
-
name: row.name,
|
|
266
|
-
description: row.description,
|
|
267
|
-
sliIds: JSON.parse(row.sli_ids),
|
|
268
|
-
target: row.target,
|
|
269
|
-
windowMs: row.window_ms,
|
|
270
|
-
errorBudget: JSON.parse(row.error_budget_json),
|
|
271
|
-
status: row.status,
|
|
272
|
-
currentValue: row.current_value,
|
|
273
|
-
tags: row.tags ? JSON.parse(row.tags) : undefined,
|
|
274
|
-
owner: row.owner,
|
|
275
|
-
createdAt: row.created_at,
|
|
276
|
-
updatedAt: row.updated_at
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Get all SLI definitions
|
|
281
|
-
*/
|
|
282
|
-
async getSLIs() {
|
|
283
|
-
const rows = await this.dbAll(`SELECT * FROM sli_definitions`, []);
|
|
284
|
-
return rows.map((r) => ({
|
|
285
|
-
id: r.id,
|
|
286
|
-
name: r.name,
|
|
287
|
-
description: r.description,
|
|
288
|
-
type: r.type,
|
|
289
|
-
source: r.source,
|
|
290
|
-
query: JSON.parse(r.query_json),
|
|
291
|
-
aggregation: r.aggregation,
|
|
292
|
-
unit: r.unit,
|
|
293
|
-
threshold: JSON.parse(r.threshold_json),
|
|
294
|
-
category: r.category,
|
|
295
|
-
tags: r.tags ? JSON.parse(r.tags) : undefined,
|
|
296
|
-
createdAt: r.created_at,
|
|
297
|
-
updatedAt: r.updated_at
|
|
298
|
-
}));
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Get measurements for an SLI
|
|
302
|
-
*/
|
|
303
|
-
async getMeasurements(sliId, windowStart, windowEnd, limit = 1000) {
|
|
304
|
-
let sql = `SELECT * FROM sli_measurements WHERE sli_id = ?`;
|
|
305
|
-
const params = [sliId];
|
|
306
|
-
if (windowStart) {
|
|
307
|
-
sql += ` AND timestamp >= ?`;
|
|
308
|
-
params.push(windowStart);
|
|
309
|
-
}
|
|
310
|
-
if (windowEnd) {
|
|
311
|
-
sql += ` AND timestamp <= ?`;
|
|
312
|
-
params.push(windowEnd);
|
|
313
|
-
}
|
|
314
|
-
sql += ` ORDER BY timestamp DESC LIMIT ?`;
|
|
315
|
-
params.push(limit);
|
|
316
|
-
const rows = await this.dbAll(sql, params);
|
|
317
|
-
return rows.map((r) => ({
|
|
318
|
-
sliId: r.sli_id,
|
|
319
|
-
timestamp: r.timestamp,
|
|
320
|
-
value: r.value,
|
|
321
|
-
total: r.total,
|
|
322
|
-
good: r.good,
|
|
323
|
-
bad: r.bad,
|
|
324
|
-
unit: r.unit,
|
|
325
|
-
windowStart: r.window_start,
|
|
326
|
-
windowEnd: r.window_end
|
|
327
|
-
}));
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Get violations for an SLO
|
|
331
|
-
*/
|
|
332
|
-
async getViolations(sloId, resolved) {
|
|
333
|
-
let sql = `SELECT * FROM slo_violations WHERE 1=1`;
|
|
334
|
-
const params = [];
|
|
335
|
-
if (sloId) {
|
|
336
|
-
sql += ` AND slo_id = ?`;
|
|
337
|
-
params.push(sloId);
|
|
338
|
-
}
|
|
339
|
-
if (resolved !== undefined) {
|
|
340
|
-
sql += ` AND resolved = ?`;
|
|
341
|
-
params.push(resolved ? 1 : 0);
|
|
342
|
-
}
|
|
343
|
-
sql += ` ORDER BY timestamp DESC`;
|
|
344
|
-
const rows = await this.dbAll(sql, params);
|
|
345
|
-
return rows.map((r) => ({
|
|
346
|
-
id: r.id?.toString() || '',
|
|
347
|
-
sloId: r.slo_id,
|
|
348
|
-
timestamp: r.timestamp,
|
|
349
|
-
value: r.value,
|
|
350
|
-
expected: r.expected,
|
|
351
|
-
severity: r.severity,
|
|
352
|
-
context: r.context_json ? JSON.parse(r.context_json) : undefined,
|
|
353
|
-
resolved: r.resolved === 1,
|
|
354
|
-
resolvedAt: r.resolved_at
|
|
355
|
-
}));
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Get SLO snapshots for trend analysis
|
|
359
|
-
*/
|
|
360
|
-
async getSLOSnapshots(sloId, windowStart, windowEnd, limit = 100) {
|
|
361
|
-
let sql = `SELECT * FROM slo_snapshots WHERE slo_id = ?`;
|
|
362
|
-
const params = [sloId];
|
|
363
|
-
if (windowStart) {
|
|
364
|
-
sql += ` AND timestamp >= ?`;
|
|
365
|
-
params.push(windowStart);
|
|
366
|
-
}
|
|
367
|
-
if (windowEnd) {
|
|
368
|
-
sql += ` AND timestamp <= ?`;
|
|
369
|
-
params.push(windowEnd);
|
|
370
|
-
}
|
|
371
|
-
sql += ` ORDER BY timestamp DESC LIMIT ?`;
|
|
372
|
-
params.push(limit);
|
|
373
|
-
const rows = await this.dbAll(sql, params);
|
|
374
|
-
return rows.map((r) => ({
|
|
375
|
-
timestamp: r.timestamp,
|
|
376
|
-
currentValue: r.current_value,
|
|
377
|
-
target: r.target,
|
|
378
|
-
status: r.status,
|
|
379
|
-
errorBudgetRemaining: r.error_budget_remaining,
|
|
380
|
-
burnRate: r.burn_rate
|
|
381
|
-
}));
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Delete an SLO and its associated data
|
|
385
|
-
*/
|
|
386
|
-
async deleteSLO(id) {
|
|
387
|
-
await this.dbRun(`DELETE FROM slo_definitions WHERE id = ?`, [id]);
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Delete an SLI and its associated data
|
|
391
|
-
*/
|
|
392
|
-
async deleteSLI(id) {
|
|
393
|
-
await this.dbRun(`DELETE FROM sli_definitions WHERE id = ?`, [id]);
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Resolve a violation
|
|
397
|
-
*/
|
|
398
|
-
async resolveViolation(violationId) {
|
|
399
|
-
await this.dbRun(`UPDATE slo_violations SET resolved = 1, resolved_at = ? WHERE id = ?`, [Date.now(), parseInt(violationId, 10)]);
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Get SLO statistics
|
|
403
|
-
*/
|
|
404
|
-
async getStatistics() {
|
|
405
|
-
const totalSLOs = await this.dbGet(`SELECT COUNT(*) as count FROM slo_definitions`, []);
|
|
406
|
-
const totalSLIs = await this.dbGet(`SELECT COUNT(*) as count FROM sli_definitions`, []);
|
|
407
|
-
const statusCounts = await this.dbAll(`SELECT status, COUNT(*) as count FROM slo_definitions GROUP BY status`, []);
|
|
408
|
-
const activeViolations = await this.dbGet(`SELECT COUNT(*) as count FROM slo_violations WHERE resolved = 0`, []);
|
|
409
|
-
const totalMeasurements = await this.dbGet(`SELECT COUNT(*) as count FROM sli_measurements`, []);
|
|
410
|
-
const statusMap = {
|
|
411
|
-
healthy: 0,
|
|
412
|
-
warning: 0,
|
|
413
|
-
breached: 0,
|
|
414
|
-
unknown: 0
|
|
415
|
-
};
|
|
416
|
-
for (const row of statusCounts) {
|
|
417
|
-
statusMap[row.status] = row.count;
|
|
418
|
-
}
|
|
419
|
-
return {
|
|
420
|
-
totalSLOs: totalSLOs?.count || 0,
|
|
421
|
-
totalSLIs: totalSLIs?.count || 0,
|
|
422
|
-
statusCounts: statusMap,
|
|
423
|
-
activeViolations: activeViolations?.count || 0,
|
|
424
|
-
totalMeasurements: totalMeasurements?.count || 0
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
}
|
package/dist/core/tui/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* QA360 TUI (Terminal UI) Module
|
|
3
|
-
* Phase 8: Real-time test execution monitoring
|
|
4
|
-
*/
|
|
5
|
-
export type { TUIOptions, TUIState, TUIGateState, TUIEvent, TUIRenderer, TUIProgressBarOptions, TUITableOptions, TUILayout, TUISection } from './types.js';
|
|
6
|
-
export { TerminalRenderer } from './renderer.js';
|
|
7
|
-
export { TUIMonitor, createMonitor, monitorExecution } from './monitor.js';
|
package/dist/core/tui/index.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TUI Monitor - Real-time test execution monitor
|
|
3
|
-
* Listens to Phase3Runner events and updates the terminal UI
|
|
4
|
-
*/
|
|
5
|
-
import type { TUIOptions, TUIState, TUIEvent, TUIGateState } from './types.js';
|
|
6
|
-
export declare class TUIMonitor {
|
|
7
|
-
private options;
|
|
8
|
-
private renderer;
|
|
9
|
-
private state;
|
|
10
|
-
private refreshInterval?;
|
|
11
|
-
private eventBuffer;
|
|
12
|
-
private gateStartTime;
|
|
13
|
-
constructor(options?: TUIOptions);
|
|
14
|
-
/**
|
|
15
|
-
* Start monitoring a test run
|
|
16
|
-
*/
|
|
17
|
-
start(totalGates: number): void;
|
|
18
|
-
/**
|
|
19
|
-
* Emit an event during test execution
|
|
20
|
-
*/
|
|
21
|
-
emit(event: TUIEvent): void;
|
|
22
|
-
/**
|
|
23
|
-
* Update gate status
|
|
24
|
-
*/
|
|
25
|
-
updateGate(name: string, updates: Partial<TUIGateState>): void;
|
|
26
|
-
/**
|
|
27
|
-
* Mark gate as started
|
|
28
|
-
*/
|
|
29
|
-
startGate(name: string): void;
|
|
30
|
-
/**
|
|
31
|
-
* Mark gate as completed
|
|
32
|
-
*/
|
|
33
|
-
completeGate(name: string, success: boolean, results?: {
|
|
34
|
-
total: number;
|
|
35
|
-
passed: number;
|
|
36
|
-
failed: number;
|
|
37
|
-
}): void;
|
|
38
|
-
/**
|
|
39
|
-
* Set current phase
|
|
40
|
-
*/
|
|
41
|
-
setPhase(phase: string): void;
|
|
42
|
-
/**
|
|
43
|
-
* Set current progress (0-100)
|
|
44
|
-
*/
|
|
45
|
-
setProgress(progress: number): void;
|
|
46
|
-
/**
|
|
47
|
-
* Update test progress for current gate
|
|
48
|
-
*/
|
|
49
|
-
updateTestProgress(gateName: string, completed: number, total: number): void;
|
|
50
|
-
/**
|
|
51
|
-
* Mark run as failed
|
|
52
|
-
*/
|
|
53
|
-
fail(error: string): void;
|
|
54
|
-
/**
|
|
55
|
-
* Mark run as completed
|
|
56
|
-
*/
|
|
57
|
-
complete(): void;
|
|
58
|
-
/**
|
|
59
|
-
* Stop monitoring and cleanup
|
|
60
|
-
*/
|
|
61
|
-
stop(): void;
|
|
62
|
-
/**
|
|
63
|
-
* Cleanup and restore terminal
|
|
64
|
-
*/
|
|
65
|
-
cleanup(): void;
|
|
66
|
-
/**
|
|
67
|
-
* Get current state
|
|
68
|
-
*/
|
|
69
|
-
getState(): Readonly<TUIState>;
|
|
70
|
-
/**
|
|
71
|
-
* Get event buffer
|
|
72
|
-
*/
|
|
73
|
-
getEvents(): ReadonlyArray<TUIEvent>;
|
|
74
|
-
private processEvent;
|
|
75
|
-
private updateElapsed;
|
|
76
|
-
private calculateETA;
|
|
77
|
-
private updateProgress;
|
|
78
|
-
private printSummary;
|
|
79
|
-
private formatCount;
|
|
80
|
-
private formatDuration;
|
|
81
|
-
private setupExitHandlers;
|
|
82
|
-
private removeExitHandlers;
|
|
83
|
-
private handleExit;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Create a monitor instance for programmatic use
|
|
87
|
-
*/
|
|
88
|
-
export declare function createMonitor(options?: TUIOptions): TUIMonitor;
|
|
89
|
-
/**
|
|
90
|
-
* Convenience function to monitor a Phase3Runner execution
|
|
91
|
-
*/
|
|
92
|
-
export declare function monitorExecution(execute: (emit: (event: TUIEvent) => void) => Promise<void>, options?: TUIOptions): Promise<void>;
|