@dotsetlabs/bellwether 0.10.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/CHANGELOG.md +291 -0
- package/LICENSE +21 -0
- package/README.md +739 -0
- package/dist/auth/credentials.d.ts +64 -0
- package/dist/auth/credentials.js +218 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/keychain.d.ts +64 -0
- package/dist/auth/keychain.js +268 -0
- package/dist/baseline/ab-testing.d.ts +80 -0
- package/dist/baseline/ab-testing.js +236 -0
- package/dist/baseline/ai-compatibility-scorer.d.ts +95 -0
- package/dist/baseline/ai-compatibility-scorer.js +606 -0
- package/dist/baseline/calibration.d.ts +77 -0
- package/dist/baseline/calibration.js +136 -0
- package/dist/baseline/category-matching.d.ts +85 -0
- package/dist/baseline/category-matching.js +289 -0
- package/dist/baseline/change-impact-analyzer.d.ts +98 -0
- package/dist/baseline/change-impact-analyzer.js +592 -0
- package/dist/baseline/comparator.d.ts +64 -0
- package/dist/baseline/comparator.js +916 -0
- package/dist/baseline/confidence.d.ts +55 -0
- package/dist/baseline/confidence.js +122 -0
- package/dist/baseline/converter.d.ts +61 -0
- package/dist/baseline/converter.js +585 -0
- package/dist/baseline/dependency-analyzer.d.ts +89 -0
- package/dist/baseline/dependency-analyzer.js +567 -0
- package/dist/baseline/deprecation-tracker.d.ts +133 -0
- package/dist/baseline/deprecation-tracker.js +322 -0
- package/dist/baseline/diff.d.ts +55 -0
- package/dist/baseline/diff.js +1584 -0
- package/dist/baseline/documentation-scorer.d.ts +205 -0
- package/dist/baseline/documentation-scorer.js +466 -0
- package/dist/baseline/embeddings.d.ts +118 -0
- package/dist/baseline/embeddings.js +251 -0
- package/dist/baseline/error-analyzer.d.ts +198 -0
- package/dist/baseline/error-analyzer.js +721 -0
- package/dist/baseline/evaluation/evaluator.d.ts +42 -0
- package/dist/baseline/evaluation/evaluator.js +323 -0
- package/dist/baseline/evaluation/expanded-dataset.d.ts +45 -0
- package/dist/baseline/evaluation/expanded-dataset.js +1164 -0
- package/dist/baseline/evaluation/golden-dataset.d.ts +58 -0
- package/dist/baseline/evaluation/golden-dataset.js +717 -0
- package/dist/baseline/evaluation/index.d.ts +15 -0
- package/dist/baseline/evaluation/index.js +15 -0
- package/dist/baseline/evaluation/types.d.ts +186 -0
- package/dist/baseline/evaluation/types.js +8 -0
- package/dist/baseline/external-dependency-detector.d.ts +181 -0
- package/dist/baseline/external-dependency-detector.js +524 -0
- package/dist/baseline/golden-output.d.ts +162 -0
- package/dist/baseline/golden-output.js +636 -0
- package/dist/baseline/health-scorer.d.ts +174 -0
- package/dist/baseline/health-scorer.js +451 -0
- package/dist/baseline/incremental-checker.d.ts +97 -0
- package/dist/baseline/incremental-checker.js +174 -0
- package/dist/baseline/index.d.ts +31 -0
- package/dist/baseline/index.js +42 -0
- package/dist/baseline/migration-generator.d.ts +137 -0
- package/dist/baseline/migration-generator.js +554 -0
- package/dist/baseline/migrations.d.ts +60 -0
- package/dist/baseline/migrations.js +197 -0
- package/dist/baseline/performance-tracker.d.ts +214 -0
- package/dist/baseline/performance-tracker.js +577 -0
- package/dist/baseline/pr-comment-generator.d.ts +117 -0
- package/dist/baseline/pr-comment-generator.js +546 -0
- package/dist/baseline/response-fingerprint.d.ts +127 -0
- package/dist/baseline/response-fingerprint.js +728 -0
- package/dist/baseline/response-schema-tracker.d.ts +129 -0
- package/dist/baseline/response-schema-tracker.js +420 -0
- package/dist/baseline/risk-scorer.d.ts +54 -0
- package/dist/baseline/risk-scorer.js +434 -0
- package/dist/baseline/saver.d.ts +89 -0
- package/dist/baseline/saver.js +554 -0
- package/dist/baseline/scenario-generator.d.ts +151 -0
- package/dist/baseline/scenario-generator.js +905 -0
- package/dist/baseline/schema-compare.d.ts +86 -0
- package/dist/baseline/schema-compare.js +557 -0
- package/dist/baseline/schema-evolution.d.ts +189 -0
- package/dist/baseline/schema-evolution.js +467 -0
- package/dist/baseline/semantic.d.ts +203 -0
- package/dist/baseline/semantic.js +908 -0
- package/dist/baseline/synonyms.d.ts +60 -0
- package/dist/baseline/synonyms.js +386 -0
- package/dist/baseline/telemetry.d.ts +165 -0
- package/dist/baseline/telemetry.js +294 -0
- package/dist/baseline/test-pruner.d.ts +120 -0
- package/dist/baseline/test-pruner.js +387 -0
- package/dist/baseline/types.d.ts +449 -0
- package/dist/baseline/types.js +5 -0
- package/dist/baseline/version.d.ts +138 -0
- package/dist/baseline/version.js +206 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/response-cache.d.ts +151 -0
- package/dist/cache/response-cache.js +287 -0
- package/dist/ci/index.d.ts +60 -0
- package/dist/ci/index.js +342 -0
- package/dist/cli/commands/auth.d.ts +12 -0
- package/dist/cli/commands/auth.js +352 -0
- package/dist/cli/commands/badge.d.ts +3 -0
- package/dist/cli/commands/badge.js +74 -0
- package/dist/cli/commands/baseline-accept.d.ts +15 -0
- package/dist/cli/commands/baseline-accept.js +178 -0
- package/dist/cli/commands/baseline-migrate.d.ts +12 -0
- package/dist/cli/commands/baseline-migrate.js +164 -0
- package/dist/cli/commands/baseline.d.ts +14 -0
- package/dist/cli/commands/baseline.js +449 -0
- package/dist/cli/commands/beta.d.ts +10 -0
- package/dist/cli/commands/beta.js +231 -0
- package/dist/cli/commands/check.d.ts +11 -0
- package/dist/cli/commands/check.js +820 -0
- package/dist/cli/commands/cloud/badge.d.ts +3 -0
- package/dist/cli/commands/cloud/badge.js +74 -0
- package/dist/cli/commands/cloud/diff.d.ts +6 -0
- package/dist/cli/commands/cloud/diff.js +79 -0
- package/dist/cli/commands/cloud/history.d.ts +6 -0
- package/dist/cli/commands/cloud/history.js +102 -0
- package/dist/cli/commands/cloud/link.d.ts +9 -0
- package/dist/cli/commands/cloud/link.js +119 -0
- package/dist/cli/commands/cloud/login.d.ts +7 -0
- package/dist/cli/commands/cloud/login.js +499 -0
- package/dist/cli/commands/cloud/projects.d.ts +6 -0
- package/dist/cli/commands/cloud/projects.js +44 -0
- package/dist/cli/commands/cloud/shared.d.ts +7 -0
- package/dist/cli/commands/cloud/shared.js +42 -0
- package/dist/cli/commands/cloud/teams.d.ts +8 -0
- package/dist/cli/commands/cloud/teams.js +169 -0
- package/dist/cli/commands/cloud/upload.d.ts +8 -0
- package/dist/cli/commands/cloud/upload.js +181 -0
- package/dist/cli/commands/contract.d.ts +11 -0
- package/dist/cli/commands/contract.js +280 -0
- package/dist/cli/commands/discover.d.ts +3 -0
- package/dist/cli/commands/discover.js +82 -0
- package/dist/cli/commands/eval.d.ts +9 -0
- package/dist/cli/commands/eval.js +187 -0
- package/dist/cli/commands/explore.d.ts +11 -0
- package/dist/cli/commands/explore.js +437 -0
- package/dist/cli/commands/feedback.d.ts +9 -0
- package/dist/cli/commands/feedback.js +174 -0
- package/dist/cli/commands/golden.d.ts +12 -0
- package/dist/cli/commands/golden.js +407 -0
- package/dist/cli/commands/history.d.ts +10 -0
- package/dist/cli/commands/history.js +202 -0
- package/dist/cli/commands/init.d.ts +9 -0
- package/dist/cli/commands/init.js +219 -0
- package/dist/cli/commands/interview.d.ts +3 -0
- package/dist/cli/commands/interview.js +903 -0
- package/dist/cli/commands/link.d.ts +10 -0
- package/dist/cli/commands/link.js +169 -0
- package/dist/cli/commands/login.d.ts +7 -0
- package/dist/cli/commands/login.js +499 -0
- package/dist/cli/commands/preset.d.ts +33 -0
- package/dist/cli/commands/preset.js +297 -0
- package/dist/cli/commands/profile.d.ts +33 -0
- package/dist/cli/commands/profile.js +286 -0
- package/dist/cli/commands/registry.d.ts +11 -0
- package/dist/cli/commands/registry.js +146 -0
- package/dist/cli/commands/shared.d.ts +79 -0
- package/dist/cli/commands/shared.js +196 -0
- package/dist/cli/commands/teams.d.ts +8 -0
- package/dist/cli/commands/teams.js +169 -0
- package/dist/cli/commands/test.d.ts +9 -0
- package/dist/cli/commands/test.js +500 -0
- package/dist/cli/commands/upload.d.ts +8 -0
- package/dist/cli/commands/upload.js +223 -0
- package/dist/cli/commands/validate-config.d.ts +6 -0
- package/dist/cli/commands/validate-config.js +35 -0
- package/dist/cli/commands/verify.d.ts +11 -0
- package/dist/cli/commands/verify.js +283 -0
- package/dist/cli/commands/watch.d.ts +12 -0
- package/dist/cli/commands/watch.js +253 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +178 -0
- package/dist/cli/interactive.d.ts +47 -0
- package/dist/cli/interactive.js +216 -0
- package/dist/cli/output/terminal-reporter.d.ts +19 -0
- package/dist/cli/output/terminal-reporter.js +104 -0
- package/dist/cli/output.d.ts +226 -0
- package/dist/cli/output.js +438 -0
- package/dist/cli/utils/env.d.ts +5 -0
- package/dist/cli/utils/env.js +14 -0
- package/dist/cli/utils/progress.d.ts +59 -0
- package/dist/cli/utils/progress.js +206 -0
- package/dist/cli/utils/server-context.d.ts +10 -0
- package/dist/cli/utils/server-context.js +36 -0
- package/dist/cloud/auth.d.ts +144 -0
- package/dist/cloud/auth.js +374 -0
- package/dist/cloud/client.d.ts +24 -0
- package/dist/cloud/client.js +65 -0
- package/dist/cloud/http-client.d.ts +38 -0
- package/dist/cloud/http-client.js +215 -0
- package/dist/cloud/index.d.ts +23 -0
- package/dist/cloud/index.js +25 -0
- package/dist/cloud/mock-client.d.ts +107 -0
- package/dist/cloud/mock-client.js +545 -0
- package/dist/cloud/types.d.ts +515 -0
- package/dist/cloud/types.js +15 -0
- package/dist/config/defaults.d.ts +160 -0
- package/dist/config/defaults.js +169 -0
- package/dist/config/loader.d.ts +24 -0
- package/dist/config/loader.js +122 -0
- package/dist/config/template.d.ts +42 -0
- package/dist/config/template.js +647 -0
- package/dist/config/validator.d.ts +2112 -0
- package/dist/config/validator.js +658 -0
- package/dist/constants/cloud.d.ts +107 -0
- package/dist/constants/cloud.js +110 -0
- package/dist/constants/core.d.ts +521 -0
- package/dist/constants/core.js +556 -0
- package/dist/constants/testing.d.ts +1283 -0
- package/dist/constants/testing.js +1568 -0
- package/dist/constants.d.ts +10 -0
- package/dist/constants.js +10 -0
- package/dist/contract/index.d.ts +6 -0
- package/dist/contract/index.js +5 -0
- package/dist/contract/validator.d.ts +177 -0
- package/dist/contract/validator.js +574 -0
- package/dist/cost/index.d.ts +6 -0
- package/dist/cost/index.js +5 -0
- package/dist/cost/tracker.d.ts +134 -0
- package/dist/cost/tracker.js +313 -0
- package/dist/discovery/discovery.d.ts +16 -0
- package/dist/discovery/discovery.js +173 -0
- package/dist/discovery/types.d.ts +51 -0
- package/dist/discovery/types.js +2 -0
- package/dist/docs/agents.d.ts +3 -0
- package/dist/docs/agents.js +995 -0
- package/dist/docs/contract.d.ts +51 -0
- package/dist/docs/contract.js +1681 -0
- package/dist/docs/generator.d.ts +4 -0
- package/dist/docs/generator.js +4 -0
- package/dist/docs/html-reporter.d.ts +9 -0
- package/dist/docs/html-reporter.js +757 -0
- package/dist/docs/index.d.ts +10 -0
- package/dist/docs/index.js +11 -0
- package/dist/docs/junit-reporter.d.ts +18 -0
- package/dist/docs/junit-reporter.js +210 -0
- package/dist/docs/report.d.ts +14 -0
- package/dist/docs/report.js +44 -0
- package/dist/docs/sarif-reporter.d.ts +19 -0
- package/dist/docs/sarif-reporter.js +335 -0
- package/dist/docs/shared.d.ts +35 -0
- package/dist/docs/shared.js +162 -0
- package/dist/docs/templates.d.ts +12 -0
- package/dist/docs/templates.js +76 -0
- package/dist/errors/index.d.ts +6 -0
- package/dist/errors/index.js +6 -0
- package/dist/errors/retry.d.ts +92 -0
- package/dist/errors/retry.js +323 -0
- package/dist/errors/types.d.ts +321 -0
- package/dist/errors/types.js +584 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +32 -0
- package/dist/interview/dependency-resolver.d.ts +11 -0
- package/dist/interview/dependency-resolver.js +32 -0
- package/dist/interview/interviewer.d.ts +232 -0
- package/dist/interview/interviewer.js +1939 -0
- package/dist/interview/mock-response-generator.d.ts +7 -0
- package/dist/interview/mock-response-generator.js +102 -0
- package/dist/interview/orchestrator.d.ts +237 -0
- package/dist/interview/orchestrator.js +1296 -0
- package/dist/interview/rate-limiter.d.ts +15 -0
- package/dist/interview/rate-limiter.js +55 -0
- package/dist/interview/response-validator.d.ts +10 -0
- package/dist/interview/response-validator.js +132 -0
- package/dist/interview/schema-inferrer.d.ts +8 -0
- package/dist/interview/schema-inferrer.js +71 -0
- package/dist/interview/schema-test-generator.d.ts +71 -0
- package/dist/interview/schema-test-generator.js +834 -0
- package/dist/interview/smart-value-generator.d.ts +155 -0
- package/dist/interview/smart-value-generator.js +554 -0
- package/dist/interview/stateful-test-runner.d.ts +19 -0
- package/dist/interview/stateful-test-runner.js +106 -0
- package/dist/interview/types.d.ts +561 -0
- package/dist/interview/types.js +2 -0
- package/dist/llm/anthropic.d.ts +41 -0
- package/dist/llm/anthropic.js +355 -0
- package/dist/llm/client.d.ts +123 -0
- package/dist/llm/client.js +42 -0
- package/dist/llm/factory.d.ts +38 -0
- package/dist/llm/factory.js +145 -0
- package/dist/llm/fallback.d.ts +140 -0
- package/dist/llm/fallback.js +379 -0
- package/dist/llm/index.d.ts +18 -0
- package/dist/llm/index.js +15 -0
- package/dist/llm/ollama.d.ts +37 -0
- package/dist/llm/ollama.js +330 -0
- package/dist/llm/openai.d.ts +25 -0
- package/dist/llm/openai.js +320 -0
- package/dist/llm/token-budget.d.ts +161 -0
- package/dist/llm/token-budget.js +395 -0
- package/dist/logging/logger.d.ts +70 -0
- package/dist/logging/logger.js +130 -0
- package/dist/metrics/collector.d.ts +106 -0
- package/dist/metrics/collector.js +547 -0
- package/dist/metrics/index.d.ts +7 -0
- package/dist/metrics/index.js +7 -0
- package/dist/metrics/prometheus.d.ts +20 -0
- package/dist/metrics/prometheus.js +241 -0
- package/dist/metrics/types.d.ts +209 -0
- package/dist/metrics/types.js +5 -0
- package/dist/persona/builtins.d.ts +54 -0
- package/dist/persona/builtins.js +219 -0
- package/dist/persona/index.d.ts +8 -0
- package/dist/persona/index.js +8 -0
- package/dist/persona/loader.d.ts +30 -0
- package/dist/persona/loader.js +190 -0
- package/dist/persona/types.d.ts +144 -0
- package/dist/persona/types.js +5 -0
- package/dist/persona/validation.d.ts +94 -0
- package/dist/persona/validation.js +332 -0
- package/dist/prompts/index.d.ts +5 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/templates.d.ts +180 -0
- package/dist/prompts/templates.js +431 -0
- package/dist/registry/client.d.ts +49 -0
- package/dist/registry/client.js +191 -0
- package/dist/registry/index.d.ts +7 -0
- package/dist/registry/index.js +6 -0
- package/dist/registry/types.d.ts +140 -0
- package/dist/registry/types.js +6 -0
- package/dist/scenarios/evaluator.d.ts +43 -0
- package/dist/scenarios/evaluator.js +206 -0
- package/dist/scenarios/index.d.ts +10 -0
- package/dist/scenarios/index.js +9 -0
- package/dist/scenarios/loader.d.ts +20 -0
- package/dist/scenarios/loader.js +285 -0
- package/dist/scenarios/types.d.ts +153 -0
- package/dist/scenarios/types.js +8 -0
- package/dist/security/index.d.ts +17 -0
- package/dist/security/index.js +18 -0
- package/dist/security/payloads.d.ts +61 -0
- package/dist/security/payloads.js +268 -0
- package/dist/security/security-tester.d.ts +42 -0
- package/dist/security/security-tester.js +582 -0
- package/dist/security/types.d.ts +166 -0
- package/dist/security/types.js +8 -0
- package/dist/transport/base-transport.d.ts +59 -0
- package/dist/transport/base-transport.js +38 -0
- package/dist/transport/http-transport.d.ts +67 -0
- package/dist/transport/http-transport.js +238 -0
- package/dist/transport/mcp-client.d.ts +141 -0
- package/dist/transport/mcp-client.js +496 -0
- package/dist/transport/sse-transport.d.ts +88 -0
- package/dist/transport/sse-transport.js +316 -0
- package/dist/transport/stdio-transport.d.ts +43 -0
- package/dist/transport/stdio-transport.js +238 -0
- package/dist/transport/types.d.ts +125 -0
- package/dist/transport/types.js +16 -0
- package/dist/utils/concurrency.d.ts +123 -0
- package/dist/utils/concurrency.js +213 -0
- package/dist/utils/formatters.d.ts +16 -0
- package/dist/utils/formatters.js +37 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/jsonpath.d.ts +87 -0
- package/dist/utils/jsonpath.js +326 -0
- package/dist/utils/markdown.d.ts +113 -0
- package/dist/utils/markdown.js +265 -0
- package/dist/utils/network.d.ts +14 -0
- package/dist/utils/network.js +17 -0
- package/dist/utils/sanitize.d.ts +92 -0
- package/dist/utils/sanitize.js +191 -0
- package/dist/utils/semantic.d.ts +194 -0
- package/dist/utils/semantic.js +1051 -0
- package/dist/utils/smart-truncate.d.ts +94 -0
- package/dist/utils/smart-truncate.js +361 -0
- package/dist/utils/timeout.d.ts +153 -0
- package/dist/utils/timeout.js +205 -0
- package/dist/utils/yaml-parser.d.ts +58 -0
- package/dist/utils/yaml-parser.js +86 -0
- package/dist/validation/index.d.ts +32 -0
- package/dist/validation/index.js +32 -0
- package/dist/validation/semantic-test-generator.d.ts +50 -0
- package/dist/validation/semantic-test-generator.js +176 -0
- package/dist/validation/semantic-types.d.ts +66 -0
- package/dist/validation/semantic-types.js +94 -0
- package/dist/validation/semantic-validator.d.ts +38 -0
- package/dist/validation/semantic-validator.js +340 -0
- package/dist/verification/index.d.ts +6 -0
- package/dist/verification/index.js +5 -0
- package/dist/verification/types.d.ts +133 -0
- package/dist/verification/types.js +5 -0
- package/dist/verification/verifier.d.ts +30 -0
- package/dist/verification/verifier.js +309 -0
- package/dist/version.d.ts +19 -0
- package/dist/version.js +48 -0
- package/dist/workflow/auto-generator.d.ts +27 -0
- package/dist/workflow/auto-generator.js +513 -0
- package/dist/workflow/discovery.d.ts +40 -0
- package/dist/workflow/discovery.js +195 -0
- package/dist/workflow/executor.d.ts +82 -0
- package/dist/workflow/executor.js +611 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.js +10 -0
- package/dist/workflow/loader.d.ts +24 -0
- package/dist/workflow/loader.js +194 -0
- package/dist/workflow/state-tracker.d.ts +98 -0
- package/dist/workflow/state-tracker.js +424 -0
- package/dist/workflow/types.d.ts +337 -0
- package/dist/workflow/types.js +5 -0
- package/package.json +94 -0
- package/schemas/bellwether-check.schema.json +651 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental checking for faster CI runs.
|
|
3
|
+
*
|
|
4
|
+
* Compares current tool schemas against a baseline to determine which tools
|
|
5
|
+
* need retesting. Tools with unchanged schemas can use cached results.
|
|
6
|
+
*/
|
|
7
|
+
import type { MCPTool } from '../transport/types.js';
|
|
8
|
+
import type { BehavioralBaseline, ToolFingerprint } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Result of incremental analysis.
|
|
11
|
+
*/
|
|
12
|
+
export interface IncrementalCheckResult {
|
|
13
|
+
/** Tools that need testing (new or changed schema) */
|
|
14
|
+
toolsToTest: string[];
|
|
15
|
+
/** Tools that can use cached results */
|
|
16
|
+
toolsToSkip: string[];
|
|
17
|
+
/** Tool fingerprints from baseline for skipped tools */
|
|
18
|
+
cachedFingerprints: ToolFingerprint[];
|
|
19
|
+
/** Summary of what changed */
|
|
20
|
+
changeSummary: IncrementalChangeSummary;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Summary of changes detected during incremental analysis.
|
|
24
|
+
*/
|
|
25
|
+
export interface IncrementalChangeSummary {
|
|
26
|
+
/** Number of new tools (not in baseline) */
|
|
27
|
+
newTools: number;
|
|
28
|
+
/** Number of tools with changed schemas */
|
|
29
|
+
changedTools: number;
|
|
30
|
+
/** Number of tools with unchanged schemas */
|
|
31
|
+
unchangedTools: number;
|
|
32
|
+
/** Number of removed tools (in baseline but not current) */
|
|
33
|
+
removedTools: number;
|
|
34
|
+
/** Names of new tools */
|
|
35
|
+
newToolNames: string[];
|
|
36
|
+
/** Names of changed tools */
|
|
37
|
+
changedToolNames: string[];
|
|
38
|
+
/** Names of removed tools */
|
|
39
|
+
removedToolNames: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Options for incremental checking.
|
|
43
|
+
*/
|
|
44
|
+
export interface IncrementalCheckOptions {
|
|
45
|
+
/** Force retest even if schema unchanged */
|
|
46
|
+
forceRetest?: boolean;
|
|
47
|
+
/** Specific tools to always retest */
|
|
48
|
+
alwaysRetest?: string[];
|
|
49
|
+
/** Maximum age of cached results in hours (default: 168 = 1 week) */
|
|
50
|
+
maxCacheAgeHours?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determine which tools need testing based on schema changes.
|
|
54
|
+
*
|
|
55
|
+
* Algorithm:
|
|
56
|
+
* 1. Load previous baseline
|
|
57
|
+
* 2. Compare current tool schemas to baseline inputSchemaHash
|
|
58
|
+
* 3. Return list of tools that need testing (new or changed)
|
|
59
|
+
* 4. Return cached fingerprints for unchanged tools
|
|
60
|
+
*
|
|
61
|
+
* @param currentTools - Current tools from discovery
|
|
62
|
+
* @param baseline - Previous baseline to compare against
|
|
63
|
+
* @param options - Incremental check options
|
|
64
|
+
* @returns Analysis result with tools to test and cached data
|
|
65
|
+
*/
|
|
66
|
+
export declare function analyzeForIncremental(currentTools: MCPTool[], baseline: BehavioralBaseline | null, options?: IncrementalCheckOptions): IncrementalCheckResult;
|
|
67
|
+
/**
|
|
68
|
+
* Merge new test results with cached fingerprints to create a complete baseline.
|
|
69
|
+
*
|
|
70
|
+
* @param newFingerprints - Fingerprints from newly tested tools
|
|
71
|
+
* @param cachedFingerprints - Fingerprints from skipped tools (cached)
|
|
72
|
+
* @returns Combined fingerprints in deterministic order
|
|
73
|
+
*/
|
|
74
|
+
export declare function mergeFingerprints(newFingerprints: ToolFingerprint[], cachedFingerprints: ToolFingerprint[]): ToolFingerprint[];
|
|
75
|
+
/**
|
|
76
|
+
* Format incremental check summary for display.
|
|
77
|
+
*
|
|
78
|
+
* @param summary - The incremental change summary
|
|
79
|
+
* @returns Human-readable summary
|
|
80
|
+
*/
|
|
81
|
+
export declare function formatIncrementalSummary(summary: IncrementalChangeSummary): string;
|
|
82
|
+
/**
|
|
83
|
+
* Check if incremental mode can provide meaningful speedup.
|
|
84
|
+
*
|
|
85
|
+
* @param result - Incremental check result
|
|
86
|
+
* @returns true if skipping tools provides >20% speedup
|
|
87
|
+
*/
|
|
88
|
+
export declare function isIncrementalWorthwhile(result: IncrementalCheckResult): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Update tool fingerprints with incremental metadata.
|
|
91
|
+
*
|
|
92
|
+
* @param fingerprint - Tool fingerprint to update
|
|
93
|
+
* @param schemaHash - Current schema hash
|
|
94
|
+
* @returns Updated fingerprint with lastTestedAt and inputSchemaHashAtTest
|
|
95
|
+
*/
|
|
96
|
+
export declare function addIncrementalMetadata(fingerprint: ToolFingerprint, schemaHash: string): ToolFingerprint;
|
|
97
|
+
//# sourceMappingURL=incremental-checker.d.ts.map
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental checking for faster CI runs.
|
|
3
|
+
*
|
|
4
|
+
* Compares current tool schemas against a baseline to determine which tools
|
|
5
|
+
* need retesting. Tools with unchanged schemas can use cached results.
|
|
6
|
+
*/
|
|
7
|
+
import { computeSchemaHash } from './schema-compare.js';
|
|
8
|
+
/**
|
|
9
|
+
* Determine which tools need testing based on schema changes.
|
|
10
|
+
*
|
|
11
|
+
* Algorithm:
|
|
12
|
+
* 1. Load previous baseline
|
|
13
|
+
* 2. Compare current tool schemas to baseline inputSchemaHash
|
|
14
|
+
* 3. Return list of tools that need testing (new or changed)
|
|
15
|
+
* 4. Return cached fingerprints for unchanged tools
|
|
16
|
+
*
|
|
17
|
+
* @param currentTools - Current tools from discovery
|
|
18
|
+
* @param baseline - Previous baseline to compare against
|
|
19
|
+
* @param options - Incremental check options
|
|
20
|
+
* @returns Analysis result with tools to test and cached data
|
|
21
|
+
*/
|
|
22
|
+
export function analyzeForIncremental(currentTools, baseline, options = {}) {
|
|
23
|
+
const { forceRetest = false, alwaysRetest = [], maxCacheAgeHours = 168, // 1 week
|
|
24
|
+
} = options;
|
|
25
|
+
// If no baseline or force retest, test everything
|
|
26
|
+
if (!baseline || forceRetest) {
|
|
27
|
+
return {
|
|
28
|
+
toolsToTest: currentTools.map(t => t.name),
|
|
29
|
+
toolsToSkip: [],
|
|
30
|
+
cachedFingerprints: [],
|
|
31
|
+
changeSummary: {
|
|
32
|
+
newTools: baseline ? 0 : currentTools.length,
|
|
33
|
+
changedTools: 0,
|
|
34
|
+
unchangedTools: 0,
|
|
35
|
+
removedTools: 0,
|
|
36
|
+
newToolNames: baseline ? [] : currentTools.map(t => t.name),
|
|
37
|
+
changedToolNames: [],
|
|
38
|
+
removedToolNames: [],
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const toolsToTest = [];
|
|
43
|
+
const toolsToSkip = [];
|
|
44
|
+
const cachedFingerprints = [];
|
|
45
|
+
const newToolNames = [];
|
|
46
|
+
const changedToolNames = [];
|
|
47
|
+
const removedToolNames = [];
|
|
48
|
+
// Build maps for comparison
|
|
49
|
+
const baselineToolMap = new Map(baseline.tools.map(t => [t.name, t]));
|
|
50
|
+
const currentToolSet = new Set(currentTools.map(t => t.name));
|
|
51
|
+
// Check current tools against baseline
|
|
52
|
+
for (const tool of currentTools) {
|
|
53
|
+
const baselineTool = baselineToolMap.get(tool.name);
|
|
54
|
+
// Always retest if in the alwaysRetest list
|
|
55
|
+
if (alwaysRetest.includes(tool.name)) {
|
|
56
|
+
toolsToTest.push(tool.name);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (!baselineTool) {
|
|
60
|
+
// New tool - needs testing
|
|
61
|
+
toolsToTest.push(tool.name);
|
|
62
|
+
newToolNames.push(tool.name);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// Check if schema changed
|
|
66
|
+
const currentSchemaHash = computeSchemaHash(tool.inputSchema);
|
|
67
|
+
const baselineSchemaHash = baselineTool.schemaHash;
|
|
68
|
+
if (currentSchemaHash !== baselineSchemaHash) {
|
|
69
|
+
// Schema changed - needs retesting
|
|
70
|
+
toolsToTest.push(tool.name);
|
|
71
|
+
changedToolNames.push(tool.name);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
// Check cache age if lastTestedAt is available
|
|
75
|
+
if (baselineTool.lastTestedAt) {
|
|
76
|
+
const testedAt = new Date(baselineTool.lastTestedAt);
|
|
77
|
+
const ageHours = (Date.now() - testedAt.getTime()) / (1000 * 60 * 60);
|
|
78
|
+
if (ageHours > maxCacheAgeHours) {
|
|
79
|
+
// Cache too old - needs retesting
|
|
80
|
+
toolsToTest.push(tool.name);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Schema unchanged and cache valid - can skip
|
|
85
|
+
toolsToSkip.push(tool.name);
|
|
86
|
+
cachedFingerprints.push(baselineTool);
|
|
87
|
+
}
|
|
88
|
+
// Find removed tools (in baseline but not current)
|
|
89
|
+
for (const [name] of baselineToolMap) {
|
|
90
|
+
if (!currentToolSet.has(name)) {
|
|
91
|
+
removedToolNames.push(name);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
toolsToTest,
|
|
96
|
+
toolsToSkip,
|
|
97
|
+
cachedFingerprints,
|
|
98
|
+
changeSummary: {
|
|
99
|
+
newTools: newToolNames.length,
|
|
100
|
+
changedTools: changedToolNames.length,
|
|
101
|
+
unchangedTools: toolsToSkip.length,
|
|
102
|
+
removedTools: removedToolNames.length,
|
|
103
|
+
newToolNames,
|
|
104
|
+
changedToolNames,
|
|
105
|
+
removedToolNames,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Merge new test results with cached fingerprints to create a complete baseline.
|
|
111
|
+
*
|
|
112
|
+
* @param newFingerprints - Fingerprints from newly tested tools
|
|
113
|
+
* @param cachedFingerprints - Fingerprints from skipped tools (cached)
|
|
114
|
+
* @returns Combined fingerprints in deterministic order
|
|
115
|
+
*/
|
|
116
|
+
export function mergeFingerprints(newFingerprints, cachedFingerprints) {
|
|
117
|
+
// Combine all fingerprints
|
|
118
|
+
const combined = [...newFingerprints, ...cachedFingerprints];
|
|
119
|
+
// Sort by name for deterministic ordering
|
|
120
|
+
return combined.sort((a, b) => a.name.localeCompare(b.name));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Format incremental check summary for display.
|
|
124
|
+
*
|
|
125
|
+
* @param summary - The incremental change summary
|
|
126
|
+
* @returns Human-readable summary
|
|
127
|
+
*/
|
|
128
|
+
export function formatIncrementalSummary(summary) {
|
|
129
|
+
const parts = [];
|
|
130
|
+
if (summary.newTools > 0) {
|
|
131
|
+
parts.push(`${summary.newTools} new tool${summary.newTools > 1 ? 's' : ''}`);
|
|
132
|
+
}
|
|
133
|
+
if (summary.changedTools > 0) {
|
|
134
|
+
parts.push(`${summary.changedTools} changed`);
|
|
135
|
+
}
|
|
136
|
+
if (summary.unchangedTools > 0) {
|
|
137
|
+
parts.push(`${summary.unchangedTools} cached`);
|
|
138
|
+
}
|
|
139
|
+
if (summary.removedTools > 0) {
|
|
140
|
+
parts.push(`${summary.removedTools} removed`);
|
|
141
|
+
}
|
|
142
|
+
if (parts.length === 0) {
|
|
143
|
+
return 'No tools to check';
|
|
144
|
+
}
|
|
145
|
+
return parts.join(', ');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Check if incremental mode can provide meaningful speedup.
|
|
149
|
+
*
|
|
150
|
+
* @param result - Incremental check result
|
|
151
|
+
* @returns true if skipping tools provides >20% speedup
|
|
152
|
+
*/
|
|
153
|
+
export function isIncrementalWorthwhile(result) {
|
|
154
|
+
const total = result.toolsToTest.length + result.toolsToSkip.length;
|
|
155
|
+
if (total === 0)
|
|
156
|
+
return false;
|
|
157
|
+
const skipRatio = result.toolsToSkip.length / total;
|
|
158
|
+
return skipRatio > 0.2; // At least 20% can be skipped
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Update tool fingerprints with incremental metadata.
|
|
162
|
+
*
|
|
163
|
+
* @param fingerprint - Tool fingerprint to update
|
|
164
|
+
* @param schemaHash - Current schema hash
|
|
165
|
+
* @returns Updated fingerprint with lastTestedAt and inputSchemaHashAtTest
|
|
166
|
+
*/
|
|
167
|
+
export function addIncrementalMetadata(fingerprint, schemaHash) {
|
|
168
|
+
return {
|
|
169
|
+
...fingerprint,
|
|
170
|
+
lastTestedAt: new Date(),
|
|
171
|
+
inputSchemaHashAtTest: schemaHash,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=incremental-checker.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baseline module - structural drift detection.
|
|
3
|
+
*/
|
|
4
|
+
export type { ChangeSeverity, BehaviorAspect, BehavioralAssertion, BehaviorChange, ToolDiff, BehavioralDiff, ToolFingerprint, ServerFingerprint, BehavioralBaseline, WorkflowSignature, CompareOptions, BaselineMode, VersionCompatibilityInfo, DriftAcceptance, AcceptedDiff, SeverityConfig, SchemaEvolutionReport, SchemaEvolutionIssue, PerformanceRegressionReport, PerformanceRegression, PerformanceConfidence, PerformanceConfidenceChange, ConfidenceLevel, DocumentationScore, DocumentationScoreSummary, DocumentationScoreChange, DocumentationIssue, DocumentationGrade, DocumentationComponents, ToolDocumentationScore, } from './types.js';
|
|
5
|
+
export { createBaseline, saveBaseline, loadBaseline, verifyIntegrity, baselineExists, recalculateIntegrityHash, acceptDrift, hasAcceptance, clearAcceptance, type LoadBaselineOptions, type AcceptDriftOptions, } from './saver.js';
|
|
6
|
+
export { compareWithBaseline, compareBaselines, hasBreakingChanges, hasSecurityChanges, filterByMinimumSeverity, checkBaselineVersionCompatibility, compareSeverity, severityMeetsThreshold, applyAspectOverride, applySeverityConfig, shouldFailOnDiff, } from './comparator.js';
|
|
7
|
+
export { formatDiffText, formatDiffJson, formatDiffCompact, formatDiffGitHubActions, formatDiffMarkdown, formatDiffJUnit, formatDiffSarif, formatSecurityReport, } from './diff.js';
|
|
8
|
+
export { convertToCloudBaseline, createCloudBaseline, } from './converter.js';
|
|
9
|
+
export { computeSchemaHash, compareSchemas, computeConsensusSchemaHash, type SchemaChangeType, type SchemaChange, type SchemaComparisonResult, } from './schema-compare.js';
|
|
10
|
+
export { getBaselineVersion, parseVersion, areVersionsCompatible, compareVersions, getCompatibilityWarning, checkVersionCompatibility, assertVersionCompatibility, formatVersion, isCurrentVersion, isOlderVersion, isNewerVersion, requiresMigration, BaselineVersionError, type FormatVersion, type VersionCompatibility, } from './version.js';
|
|
11
|
+
export { migrateBaseline, canMigrate, getMigrationsToApply, needsMigration, getMigrationInfo, } from './migrations.js';
|
|
12
|
+
export { analyzeForIncremental, mergeFingerprints, formatIncrementalSummary, isIncrementalWorthwhile, addIncrementalMetadata, type IncrementalCheckResult, type IncrementalChangeSummary, type IncrementalCheckOptions, } from './incremental-checker.js';
|
|
13
|
+
export { analyzeResponses, inferSchemaFromValue, compareFingerprints, compareErrorPatterns, computeInferredSchemaHash, type ResponseFingerprint, type ResponseContentType, type ResponseSize, type InferredSchema, type ErrorPattern, type ResponseAnalysis, type FingerprintDiff, type FingerprintChange, type ErrorPatternDiff, } from './response-fingerprint.js';
|
|
14
|
+
export { compareInferredSchemas, buildSchemaEvolution, compareSchemaEvolution, formatSchemaEvolution, formatSchemaEvolutionDiff, hasSchemaEvolutionIssues, getSchemaStabilityGrade, type ResponseSchemaEvolution, type SchemaVersion as SchemaEvolutionVersion, type SchemaEvolutionDiff, type SchemaTypeChange, } from './response-schema-tracker.js';
|
|
15
|
+
export { analyzeToolChangeImpact, analyzeDiffImpact, analyzeSchemaChanges, isBreakingChange, getBreakingChangeSummary, CHANGE_IMPACT, type SchemaChangeType as ImpactSchemaChangeType, type SchemaChangeDetail, type MigrationComplexity, type ChangeImpact, type DiffImpactAnalysis, type ActionItem, } from './change-impact-analyzer.js';
|
|
16
|
+
export { calculateMetrics, createPerformanceBaseline, extractPerformanceBaselines, comparePerformance, generatePerformanceReport, formatMetrics, formatComparison, isPerformanceAcceptable, aggregateSamplesByTool, calculatePerformanceConfidence, calculateConfidenceFromMetrics, formatConfidenceLevel, hasReliableConfidence, PERFORMANCE, type LatencyTrend, type ToolPerformanceMetrics, type PerformanceBaseline, type PerformanceComparison, type PerformanceReport, type LatencySample, } from './performance-tracker.js';
|
|
17
|
+
export { checkDeprecations, checkToolDeprecation, markAsDeprecated, clearDeprecation, getDeprecatedTools, getExpiredTools, getUpcomingRemovals, formatDeprecationWarning, formatDeprecationReport, shouldFailOnDeprecation, DEPRECATION, DEPRECATION_DEFAULTS, DEPRECATION_THRESHOLDS, type DeprecationStatus, type DeprecationWarning, type DeprecationReport, type DeprecationConfig, } from './deprecation-tracker.js';
|
|
18
|
+
export { calculateHealthScore, formatHealthScore, meetsHealthThreshold, getHealthBadgeColor, createHealthHistoryEntry, HEALTH_SCORING, HEALTH_WEIGHTS, GRADE_THRESHOLDS, SEVERITY_THRESHOLDS, HEALTH_PENALTIES, type HealthTrend, type ActionPriority, type HealthActionItem, type HealthComponents, type HealthScore, type HealthHistory, type HealthInput, } from './health-scorer.js';
|
|
19
|
+
export { buildServerTimeline, buildToolTimeline, formatTimeline, formatServerTimelineSummary, generateVisualTimeline, serializeTimeline, deserializeTimeline, serializeServerTimeline, deserializeServerTimeline, getMostActiveTools, getMostBreakingTools, getBreakingChanges, getVersionAtTime, getChangesBetween, hadBreakingChanges, type SchemaEventType, type SchemaVersion, type SchemaTimeline, type ServerTimeline, type DeprecationEvent, type TimelineStats, type TimelineBuildOptions, } from './schema-evolution.js';
|
|
20
|
+
export { generateMigrationGuide, formatMigrationGuideMarkdown, formatMigrationGuideText, hasBreakingMigrationChanges, getBreakingTools, type MigrationEffort, type MigrationStepType, type CodeExample, type BreakingChange, type MigrationStep, type MigrationGuide, type MigrationStats, } from './migration-generator.js';
|
|
21
|
+
export { generateToolScenarios, generateBaselineScenarios, formatScenariosAsYaml, formatScenariosReport, getScenariosByPriority, getScenariosByCategory, getCriticalScenarios, getSecurityScenarios, type ScenarioCategory, type ScenarioPriority, type TestScenario, type AutoGeneratedScenarios, type ScenarioGenerationSummary, type ScenarioGenerationResult, type ScenarioGenerationConfig, } from './scenario-generator.js';
|
|
22
|
+
export { generatePRComment, generateCompactPRComment, generateCIStatusSummary, generateDiffTable, generateBadgeUrl, generateBadgeMarkdown, getBadgeColor, shouldBlockMerge, getSeverityEmoji, type BadgeColor, type CommentSection, type AffectedWorkflow, type PRComment, type PRCommentConfig, } from './pr-comment-generator.js';
|
|
23
|
+
export type { SecurityCategory, RiskLevel, SecurityPayload, SecurityTestResult, SecurityFinding, SecurityFingerprint, SecurityDiff, SecurityTestOptions, SecurityTestContext, SecurityToolCallResult, SecurityReport, } from '../security/types.js';
|
|
24
|
+
export { runSecurityTests, compareSecurityFingerprints, getRiskLevelFromScore, parseSecurityCategories, getPayloadsForCategory, getAllSecurityPayloads, getAllSecurityCategories, } from '../security/index.js';
|
|
25
|
+
export type { HttpStatusCategory, ErrorSeverity, EnhancedErrorAnalysis, ErrorAnalysisSummary, ErrorTrend, ErrorTrendReport, } from './error-analyzer.js';
|
|
26
|
+
export { analyzeError, analyzeErrorPatterns, generateErrorSummary, analyzeErrorTrends, extractHttpStatus, categorizeHttpStatus, inferRootCause, generateRemediation, extractRelatedParameters, isTransientError, assessErrorSeverity, mapStatusToErrorCategory, formatEnhancedError, formatErrorTrendReport, formatCategoryName, } from './error-analyzer.js';
|
|
27
|
+
export { scoreDocumentation, scoreToolDocumentation, calculateDescriptionCoverage, calculateDescriptionQuality, calculateParameterDocumentation, calculateExampleCoverage, hasExamples, scoreToGrade, generateSuggestions, compareDocumentationScores, formatDocumentationScore, formatDocumentationScoreCompact, formatDocumentationScoreChange, toDocumentationScoreSummary, getGradeIndicator, getGradeBadgeColor, meetsDocumentationThreshold, meetsDocumentationGrade, type DocumentationIssueSeverity, type DocumentationIssueType, } from './documentation-scorer.js';
|
|
28
|
+
export { calculateAICompatibilityScore, generateAICompatibilityMarkdown, type AICompatibilityScore, type ScoreComponent, type AICompatibilityRecommendation, type ToolAIScore, type AICompatibilityInput, } from './ai-compatibility-scorer.js';
|
|
29
|
+
export { calculateRiskScore, generateRiskScoreMarkdown, type RegressionRiskScore, type RiskFactor, } from './risk-scorer.js';
|
|
30
|
+
export { calculatePruningDecisions, calculateToolPruning, prioritizeTools, generatePruningSummary, generatePruningMarkdown, type TestCategory, type TestCategoryDecision, type ToolPruningDecision, type ToolCharacteristics, type PruningInput, type PruningSummary, } from './test-pruner.js';
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baseline module - structural drift detection.
|
|
3
|
+
*/
|
|
4
|
+
export { createBaseline, saveBaseline, loadBaseline, verifyIntegrity, baselineExists, recalculateIntegrityHash, acceptDrift, hasAcceptance, clearAcceptance, } from './saver.js';
|
|
5
|
+
export { compareWithBaseline, compareBaselines, hasBreakingChanges, hasSecurityChanges, filterByMinimumSeverity, checkBaselineVersionCompatibility, compareSeverity, severityMeetsThreshold, applyAspectOverride, applySeverityConfig, shouldFailOnDiff, } from './comparator.js';
|
|
6
|
+
export { formatDiffText, formatDiffJson, formatDiffCompact, formatDiffGitHubActions, formatDiffMarkdown, formatDiffJUnit, formatDiffSarif, formatSecurityReport, } from './diff.js';
|
|
7
|
+
export { convertToCloudBaseline, createCloudBaseline, } from './converter.js';
|
|
8
|
+
export { computeSchemaHash, compareSchemas, computeConsensusSchemaHash, } from './schema-compare.js';
|
|
9
|
+
export { getBaselineVersion, parseVersion, areVersionsCompatible, compareVersions, getCompatibilityWarning, checkVersionCompatibility, assertVersionCompatibility, formatVersion, isCurrentVersion, isOlderVersion, isNewerVersion, requiresMigration, BaselineVersionError, } from './version.js';
|
|
10
|
+
export { migrateBaseline, canMigrate, getMigrationsToApply, needsMigration, getMigrationInfo, } from './migrations.js';
|
|
11
|
+
// Incremental checking
|
|
12
|
+
export { analyzeForIncremental, mergeFingerprints, formatIncrementalSummary, isIncrementalWorthwhile, addIncrementalMetadata, } from './incremental-checker.js';
|
|
13
|
+
export { analyzeResponses, inferSchemaFromValue, compareFingerprints, compareErrorPatterns, computeInferredSchemaHash, } from './response-fingerprint.js';
|
|
14
|
+
// Response schema evolution tracking
|
|
15
|
+
export { compareInferredSchemas, buildSchemaEvolution, compareSchemaEvolution, formatSchemaEvolution, formatSchemaEvolutionDiff, hasSchemaEvolutionIssues, getSchemaStabilityGrade, } from './response-schema-tracker.js';
|
|
16
|
+
// Change impact analysis
|
|
17
|
+
export { analyzeToolChangeImpact, analyzeDiffImpact, analyzeSchemaChanges, isBreakingChange, getBreakingChangeSummary, CHANGE_IMPACT, } from './change-impact-analyzer.js';
|
|
18
|
+
// Performance tracking
|
|
19
|
+
export { calculateMetrics, createPerformanceBaseline, extractPerformanceBaselines, comparePerformance, generatePerformanceReport, formatMetrics, formatComparison, isPerformanceAcceptable, aggregateSamplesByTool, calculatePerformanceConfidence, calculateConfidenceFromMetrics, formatConfidenceLevel, hasReliableConfidence, PERFORMANCE, } from './performance-tracker.js';
|
|
20
|
+
// Deprecation tracking
|
|
21
|
+
export { checkDeprecations, checkToolDeprecation, markAsDeprecated, clearDeprecation, getDeprecatedTools, getExpiredTools, getUpcomingRemovals, formatDeprecationWarning, formatDeprecationReport, shouldFailOnDeprecation, DEPRECATION, DEPRECATION_DEFAULTS, DEPRECATION_THRESHOLDS, } from './deprecation-tracker.js';
|
|
22
|
+
// Health scoring
|
|
23
|
+
export { calculateHealthScore, formatHealthScore, meetsHealthThreshold, getHealthBadgeColor, createHealthHistoryEntry, HEALTH_SCORING, HEALTH_WEIGHTS, GRADE_THRESHOLDS, SEVERITY_THRESHOLDS, HEALTH_PENALTIES, } from './health-scorer.js';
|
|
24
|
+
// Schema evolution timeline
|
|
25
|
+
export { buildServerTimeline, buildToolTimeline, formatTimeline, formatServerTimelineSummary, generateVisualTimeline, serializeTimeline, deserializeTimeline, serializeServerTimeline, deserializeServerTimeline, getMostActiveTools, getMostBreakingTools, getBreakingChanges, getVersionAtTime, getChangesBetween, hadBreakingChanges, } from './schema-evolution.js';
|
|
26
|
+
// Migration guide generation
|
|
27
|
+
export { generateMigrationGuide, formatMigrationGuideMarkdown, formatMigrationGuideText, hasBreakingMigrationChanges, getBreakingTools, } from './migration-generator.js';
|
|
28
|
+
// Auto-generated test scenarios
|
|
29
|
+
export { generateToolScenarios, generateBaselineScenarios, formatScenariosAsYaml, formatScenariosReport, getScenariosByPriority, getScenariosByCategory, getCriticalScenarios, getSecurityScenarios, } from './scenario-generator.js';
|
|
30
|
+
// Enhanced PR comments
|
|
31
|
+
export { generatePRComment, generateCompactPRComment, generateCIStatusSummary, generateDiffTable, generateBadgeUrl, generateBadgeMarkdown, getBadgeColor, shouldBlockMerge, getSeverityEmoji, } from './pr-comment-generator.js';
|
|
32
|
+
export { runSecurityTests, compareSecurityFingerprints, getRiskLevelFromScore, parseSecurityCategories, getPayloadsForCategory, getAllSecurityPayloads, getAllSecurityCategories, } from '../security/index.js';
|
|
33
|
+
export { analyzeError, analyzeErrorPatterns, generateErrorSummary, analyzeErrorTrends, extractHttpStatus, categorizeHttpStatus, inferRootCause, generateRemediation, extractRelatedParameters, isTransientError, assessErrorSeverity, mapStatusToErrorCategory, formatEnhancedError, formatErrorTrendReport, formatCategoryName, } from './error-analyzer.js';
|
|
34
|
+
// Documentation quality scoring
|
|
35
|
+
export { scoreDocumentation, scoreToolDocumentation, calculateDescriptionCoverage, calculateDescriptionQuality, calculateParameterDocumentation, calculateExampleCoverage, hasExamples, scoreToGrade, generateSuggestions, compareDocumentationScores, formatDocumentationScore, formatDocumentationScoreCompact, formatDocumentationScoreChange, toDocumentationScoreSummary, getGradeIndicator, getGradeBadgeColor, meetsDocumentationThreshold, meetsDocumentationGrade, } from './documentation-scorer.js';
|
|
36
|
+
// AI Agent Compatibility Scoring
|
|
37
|
+
export { calculateAICompatibilityScore, generateAICompatibilityMarkdown, } from './ai-compatibility-scorer.js';
|
|
38
|
+
// Regression Risk Scoring
|
|
39
|
+
export { calculateRiskScore, generateRiskScoreMarkdown, } from './risk-scorer.js';
|
|
40
|
+
// Intelligent Test Pruning
|
|
41
|
+
export { calculatePruningDecisions, calculateToolPruning, prioritizeTools, generatePruningSummary, generatePruningMarkdown, } from './test-pruner.js';
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Guide Generator
|
|
3
|
+
*
|
|
4
|
+
* Auto-generates migration guides for breaking changes between baselines.
|
|
5
|
+
* Provides step-by-step instructions, code examples, and effort estimates.
|
|
6
|
+
*/
|
|
7
|
+
import type { BehavioralBaseline, BehavioralDiff, ChangeSeverity } from './types.js';
|
|
8
|
+
import { type SchemaChangeDetail, type SchemaChangeType } from './change-impact-analyzer.js';
|
|
9
|
+
/**
|
|
10
|
+
* Estimated effort level for migration.
|
|
11
|
+
*/
|
|
12
|
+
export type MigrationEffort = 'trivial' | 'minor' | 'moderate' | 'major';
|
|
13
|
+
/**
|
|
14
|
+
* Type of migration step.
|
|
15
|
+
*/
|
|
16
|
+
export type MigrationStepType = 'add_parameter' | 'remove_parameter' | 'change_type' | 'update_constraint' | 'update_enum' | 'update_default' | 'deprecation' | 'tool_removal' | 'tool_addition';
|
|
17
|
+
/**
|
|
18
|
+
* A single step in the migration process.
|
|
19
|
+
*/
|
|
20
|
+
export interface MigrationStep {
|
|
21
|
+
/** Step number */
|
|
22
|
+
stepNumber: number;
|
|
23
|
+
/** Type of migration action */
|
|
24
|
+
type: MigrationStepType;
|
|
25
|
+
/** Tool affected */
|
|
26
|
+
toolName: string;
|
|
27
|
+
/** Parameter path (if applicable) */
|
|
28
|
+
parameterPath?: string;
|
|
29
|
+
/** Human-readable title */
|
|
30
|
+
title: string;
|
|
31
|
+
/** Detailed description of what to do */
|
|
32
|
+
description: string;
|
|
33
|
+
/** Whether this step is for a breaking change */
|
|
34
|
+
isBreaking: boolean;
|
|
35
|
+
/** Code examples */
|
|
36
|
+
codeExamples: CodeExample[];
|
|
37
|
+
/** Related schema change */
|
|
38
|
+
schemaChange?: SchemaChangeDetail;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Code example for a migration step.
|
|
42
|
+
*/
|
|
43
|
+
export interface CodeExample {
|
|
44
|
+
/** Language (typescript, javascript, etc.) */
|
|
45
|
+
language: string;
|
|
46
|
+
/** Title/description of the example */
|
|
47
|
+
title: string;
|
|
48
|
+
/** Code before migration */
|
|
49
|
+
before: string;
|
|
50
|
+
/** Code after migration */
|
|
51
|
+
after: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A single breaking change with context.
|
|
55
|
+
*/
|
|
56
|
+
export interface BreakingChange {
|
|
57
|
+
/** Tool name */
|
|
58
|
+
toolName: string;
|
|
59
|
+
/** Type of change */
|
|
60
|
+
changeType: SchemaChangeType;
|
|
61
|
+
/** Parameter affected */
|
|
62
|
+
parameterPath: string;
|
|
63
|
+
/** Value before */
|
|
64
|
+
before: unknown;
|
|
65
|
+
/** Value after */
|
|
66
|
+
after: unknown;
|
|
67
|
+
/** Human-readable description */
|
|
68
|
+
description: string;
|
|
69
|
+
/** Severity */
|
|
70
|
+
severity: ChangeSeverity;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Complete migration guide between two versions.
|
|
74
|
+
*/
|
|
75
|
+
export interface MigrationGuide {
|
|
76
|
+
/** Source version/identifier */
|
|
77
|
+
fromVersion: string;
|
|
78
|
+
/** Target version/identifier */
|
|
79
|
+
toVersion: string;
|
|
80
|
+
/** Date range of the migration */
|
|
81
|
+
dateRange: {
|
|
82
|
+
from: Date;
|
|
83
|
+
to: Date;
|
|
84
|
+
};
|
|
85
|
+
/** All breaking changes */
|
|
86
|
+
breakingChanges: BreakingChange[];
|
|
87
|
+
/** Step-by-step migration instructions */
|
|
88
|
+
steps: MigrationStep[];
|
|
89
|
+
/** Code examples for common patterns */
|
|
90
|
+
codeExamples: CodeExample[];
|
|
91
|
+
/** Estimated effort level */
|
|
92
|
+
estimatedEffort: MigrationEffort;
|
|
93
|
+
/** Summary statistics */
|
|
94
|
+
stats: MigrationStats;
|
|
95
|
+
/** Human-readable summary */
|
|
96
|
+
summary: string;
|
|
97
|
+
/** Tools that were removed */
|
|
98
|
+
removedTools: string[];
|
|
99
|
+
/** Tools that were added */
|
|
100
|
+
addedTools: string[];
|
|
101
|
+
/** Warnings or notes */
|
|
102
|
+
warnings: string[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Statistics about the migration.
|
|
106
|
+
*/
|
|
107
|
+
export interface MigrationStats {
|
|
108
|
+
/** Total breaking changes */
|
|
109
|
+
breakingChangesCount: number;
|
|
110
|
+
/** Total tools affected */
|
|
111
|
+
toolsAffected: number;
|
|
112
|
+
/** Total migration steps */
|
|
113
|
+
stepsCount: number;
|
|
114
|
+
/** Breakdown by change type */
|
|
115
|
+
changesByType: Record<SchemaChangeType, number>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Generate a migration guide from two baselines.
|
|
119
|
+
*/
|
|
120
|
+
export declare function generateMigrationGuide(oldBaseline: BehavioralBaseline, newBaseline: BehavioralBaseline, diff?: BehavioralDiff): MigrationGuide;
|
|
121
|
+
/**
|
|
122
|
+
* Format migration guide as markdown.
|
|
123
|
+
*/
|
|
124
|
+
export declare function formatMigrationGuideMarkdown(guide: MigrationGuide): string;
|
|
125
|
+
/**
|
|
126
|
+
* Format migration guide for console output.
|
|
127
|
+
*/
|
|
128
|
+
export declare function formatMigrationGuideText(guide: MigrationGuide): string;
|
|
129
|
+
/**
|
|
130
|
+
* Check if a migration guide contains breaking changes that require action.
|
|
131
|
+
*/
|
|
132
|
+
export declare function hasBreakingMigrationChanges(guide: MigrationGuide): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Get breaking tools from guide.
|
|
135
|
+
*/
|
|
136
|
+
export declare function getBreakingTools(guide: MigrationGuide): string[];
|
|
137
|
+
//# sourceMappingURL=migration-generator.d.ts.map
|