@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,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network utility functions.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a hostname is localhost.
|
|
6
|
+
*
|
|
7
|
+
* Uses the centralized LOCALHOST_HOSTS constant to ensure consistent
|
|
8
|
+
* localhost detection across the codebase.
|
|
9
|
+
*
|
|
10
|
+
* @param hostname - The hostname to check (from URL.hostname)
|
|
11
|
+
* @returns true if the hostname is localhost
|
|
12
|
+
*/
|
|
13
|
+
export declare function isLocalhost(hostname: string): boolean;
|
|
14
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network utility functions.
|
|
3
|
+
*/
|
|
4
|
+
import { CLI_SECURITY } from '../constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Check if a hostname is localhost.
|
|
7
|
+
*
|
|
8
|
+
* Uses the centralized LOCALHOST_HOSTS constant to ensure consistent
|
|
9
|
+
* localhost detection across the codebase.
|
|
10
|
+
*
|
|
11
|
+
* @param hostname - The hostname to check (from URL.hostname)
|
|
12
|
+
* @returns true if the hostname is localhost
|
|
13
|
+
*/
|
|
14
|
+
export function isLocalhost(hostname) {
|
|
15
|
+
return CLI_SECURITY.LOCALHOST_HOSTS.includes(hostname);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input sanitization utilities for prompt injection protection.
|
|
3
|
+
*
|
|
4
|
+
* These utilities help prevent malicious content in MCP server responses
|
|
5
|
+
* from manipulating LLM behavior through prompt injection attacks.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Result of sanitization with metadata about what was found.
|
|
9
|
+
*/
|
|
10
|
+
export interface SanitizeResult {
|
|
11
|
+
/** The sanitized text */
|
|
12
|
+
sanitized: string;
|
|
13
|
+
/** Whether any potential injection patterns were detected */
|
|
14
|
+
hadInjectionPatterns: boolean;
|
|
15
|
+
/** List of detected patterns (for logging) */
|
|
16
|
+
detectedPatterns: string[];
|
|
17
|
+
/** Whether structural characters were escaped */
|
|
18
|
+
hadStructuralChars: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sanitize user-provided text for safe inclusion in LLM prompts.
|
|
22
|
+
*
|
|
23
|
+
* This function:
|
|
24
|
+
* 1. Detects potential prompt injection patterns
|
|
25
|
+
* 2. Escapes structural characters that could manipulate prompt format
|
|
26
|
+
* 3. Wraps content in clear data delimiters
|
|
27
|
+
*
|
|
28
|
+
* @param text - The text to sanitize (e.g., tool description, schema)
|
|
29
|
+
* @param options - Sanitization options
|
|
30
|
+
* @returns Sanitized text safe for prompt inclusion
|
|
31
|
+
*/
|
|
32
|
+
export declare function sanitizeForPrompt(text: string, options?: {
|
|
33
|
+
/** Whether to escape structural characters */
|
|
34
|
+
escapeStructural?: boolean;
|
|
35
|
+
/** Whether to wrap in data delimiters */
|
|
36
|
+
wrapInDelimiters?: boolean;
|
|
37
|
+
/** Custom delimiter name */
|
|
38
|
+
delimiterName?: string;
|
|
39
|
+
/** Whether to strip detected injection patterns */
|
|
40
|
+
stripInjections?: boolean;
|
|
41
|
+
}): SanitizeResult;
|
|
42
|
+
/**
|
|
43
|
+
* Sanitize a JSON object for prompt inclusion.
|
|
44
|
+
* Recursively sanitizes all string values.
|
|
45
|
+
*
|
|
46
|
+
* @param obj - The object to sanitize
|
|
47
|
+
* @returns Sanitized object with all strings processed
|
|
48
|
+
*/
|
|
49
|
+
export declare function sanitizeObjectForPrompt(obj: unknown): unknown;
|
|
50
|
+
/**
|
|
51
|
+
* Create a safely delimited data section for prompts.
|
|
52
|
+
* Uses instruction/data separation pattern to prevent injection.
|
|
53
|
+
*
|
|
54
|
+
* @param label - Label for the data section
|
|
55
|
+
* @param content - Content to include
|
|
56
|
+
* @returns Formatted data section
|
|
57
|
+
*/
|
|
58
|
+
export declare function createDataSection(label: string, content: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* Sanitize a tool for safe inclusion in prompts.
|
|
61
|
+
* Returns a structured representation with sanitized fields.
|
|
62
|
+
*
|
|
63
|
+
* @param tool - Tool object with name, description, and schema
|
|
64
|
+
* @returns Sanitized prompt-safe representation
|
|
65
|
+
*/
|
|
66
|
+
export declare function sanitizeToolForPrompt(tool: {
|
|
67
|
+
name: string;
|
|
68
|
+
description?: string;
|
|
69
|
+
inputSchema?: unknown;
|
|
70
|
+
}): {
|
|
71
|
+
name: string;
|
|
72
|
+
description: string;
|
|
73
|
+
schema: string;
|
|
74
|
+
warnings: string[];
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Check if text contains potential injection patterns without modifying it.
|
|
78
|
+
*
|
|
79
|
+
* @param text - Text to check
|
|
80
|
+
* @returns True if potential injection detected
|
|
81
|
+
*/
|
|
82
|
+
export declare function hasInjectionPatterns(text: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Truncate text to a maximum length with indicator.
|
|
85
|
+
* Useful for limiting context size in prompts.
|
|
86
|
+
*
|
|
87
|
+
* @param text - Text to truncate
|
|
88
|
+
* @param maxLength - Maximum length
|
|
89
|
+
* @returns Truncated text
|
|
90
|
+
*/
|
|
91
|
+
export declare function truncateForPrompt(text: string, maxLength: number): string;
|
|
92
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input sanitization utilities for prompt injection protection.
|
|
3
|
+
*
|
|
4
|
+
* These utilities help prevent malicious content in MCP server responses
|
|
5
|
+
* from manipulating LLM behavior through prompt injection attacks.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Patterns that may indicate prompt injection attempts.
|
|
9
|
+
* These patterns look for instruction-like content in user data.
|
|
10
|
+
*/
|
|
11
|
+
const INJECTION_PATTERNS = [
|
|
12
|
+
// Direct instruction patterns
|
|
13
|
+
/ignore\s+(all\s+)?(previous|above|prior)\s+(instructions?|prompts?|rules?)/i,
|
|
14
|
+
/disregard\s+(all\s+)?(previous|above|prior)/i,
|
|
15
|
+
/forget\s+(everything|all|what)\s+(you|i)/i,
|
|
16
|
+
// New instruction patterns
|
|
17
|
+
/new\s+instructions?:/i,
|
|
18
|
+
/system\s*:\s*you\s+(are|should|must|will)/i,
|
|
19
|
+
/\bact\s+as\s+(if|though)\b/i,
|
|
20
|
+
/\byou\s+are\s+now\b/i,
|
|
21
|
+
/\bpretend\s+(to\s+be|you\s+are)\b/i,
|
|
22
|
+
// Output manipulation
|
|
23
|
+
/\breturn\s+(only|just)\s+["']?success/i,
|
|
24
|
+
/\balways\s+(return|respond|output|say)\b/i,
|
|
25
|
+
/\bnever\s+(return|respond|output|mention|reveal)\b/i,
|
|
26
|
+
// Role/persona manipulation
|
|
27
|
+
/\byour\s+(new\s+)?role\s+is\b/i,
|
|
28
|
+
/\bswitch\s+(to\s+)?(role|persona|mode)\b/i,
|
|
29
|
+
// Jailbreak attempts
|
|
30
|
+
/\bdo\s+anything\s+now\b/i,
|
|
31
|
+
/\bdan\s+mode\b/i,
|
|
32
|
+
/\bdeveloper\s+mode\b/i,
|
|
33
|
+
// Markdown/formatting exploits
|
|
34
|
+
/```\s*(system|instruction|prompt)/i,
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Characters that could be used for prompt structure manipulation.
|
|
38
|
+
*/
|
|
39
|
+
const STRUCTURAL_CHARS = {
|
|
40
|
+
'`': '\\`',
|
|
41
|
+
'$': '\\$',
|
|
42
|
+
'{': '\\{',
|
|
43
|
+
'}': '\\}',
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Sanitize user-provided text for safe inclusion in LLM prompts.
|
|
47
|
+
*
|
|
48
|
+
* This function:
|
|
49
|
+
* 1. Detects potential prompt injection patterns
|
|
50
|
+
* 2. Escapes structural characters that could manipulate prompt format
|
|
51
|
+
* 3. Wraps content in clear data delimiters
|
|
52
|
+
*
|
|
53
|
+
* @param text - The text to sanitize (e.g., tool description, schema)
|
|
54
|
+
* @param options - Sanitization options
|
|
55
|
+
* @returns Sanitized text safe for prompt inclusion
|
|
56
|
+
*/
|
|
57
|
+
export function sanitizeForPrompt(text, options = {}) {
|
|
58
|
+
const { escapeStructural = true, wrapInDelimiters = false, delimiterName = 'DATA', stripInjections = false, } = options;
|
|
59
|
+
let sanitized = text;
|
|
60
|
+
const detectedPatterns = [];
|
|
61
|
+
let hadStructuralChars = false;
|
|
62
|
+
// Detect injection patterns
|
|
63
|
+
for (const pattern of INJECTION_PATTERNS) {
|
|
64
|
+
if (pattern.test(sanitized)) {
|
|
65
|
+
detectedPatterns.push(pattern.source);
|
|
66
|
+
if (stripInjections) {
|
|
67
|
+
// Replace detected patterns with a placeholder
|
|
68
|
+
sanitized = sanitized.replace(pattern, '[FILTERED]');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Escape structural characters
|
|
73
|
+
if (escapeStructural) {
|
|
74
|
+
for (const [char, escaped] of Object.entries(STRUCTURAL_CHARS)) {
|
|
75
|
+
if (sanitized.includes(char)) {
|
|
76
|
+
hadStructuralChars = true;
|
|
77
|
+
sanitized = sanitized.split(char).join(escaped);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Wrap in delimiters if requested
|
|
82
|
+
if (wrapInDelimiters) {
|
|
83
|
+
sanitized = `<${delimiterName}>\n${sanitized}\n</${delimiterName}>`;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
sanitized,
|
|
87
|
+
hadInjectionPatterns: detectedPatterns.length > 0,
|
|
88
|
+
detectedPatterns,
|
|
89
|
+
hadStructuralChars,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sanitize a JSON object for prompt inclusion.
|
|
94
|
+
* Recursively sanitizes all string values.
|
|
95
|
+
*
|
|
96
|
+
* @param obj - The object to sanitize
|
|
97
|
+
* @returns Sanitized object with all strings processed
|
|
98
|
+
*/
|
|
99
|
+
export function sanitizeObjectForPrompt(obj) {
|
|
100
|
+
if (obj === null || obj === undefined) {
|
|
101
|
+
return obj;
|
|
102
|
+
}
|
|
103
|
+
if (typeof obj === 'string') {
|
|
104
|
+
return sanitizeForPrompt(obj, { escapeStructural: true }).sanitized;
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(obj)) {
|
|
107
|
+
return obj.map(item => sanitizeObjectForPrompt(item));
|
|
108
|
+
}
|
|
109
|
+
if (typeof obj === 'object') {
|
|
110
|
+
const result = {};
|
|
111
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
112
|
+
// Also sanitize keys (though less critical)
|
|
113
|
+
const sanitizedKey = sanitizeForPrompt(key, { escapeStructural: true }).sanitized;
|
|
114
|
+
result[sanitizedKey] = sanitizeObjectForPrompt(value);
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
// Numbers, booleans, etc. pass through
|
|
119
|
+
return obj;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a safely delimited data section for prompts.
|
|
123
|
+
* Uses instruction/data separation pattern to prevent injection.
|
|
124
|
+
*
|
|
125
|
+
* @param label - Label for the data section
|
|
126
|
+
* @param content - Content to include
|
|
127
|
+
* @returns Formatted data section
|
|
128
|
+
*/
|
|
129
|
+
export function createDataSection(label, content) {
|
|
130
|
+
const sanitized = sanitizeForPrompt(content, { escapeStructural: true });
|
|
131
|
+
// Use XML-like delimiters that are less likely to be in user data
|
|
132
|
+
return `<${label.toUpperCase()}_DATA>
|
|
133
|
+
${sanitized.sanitized}
|
|
134
|
+
</${label.toUpperCase()}_DATA>`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Sanitize a tool for safe inclusion in prompts.
|
|
138
|
+
* Returns a structured representation with sanitized fields.
|
|
139
|
+
*
|
|
140
|
+
* @param tool - Tool object with name, description, and schema
|
|
141
|
+
* @returns Sanitized prompt-safe representation
|
|
142
|
+
*/
|
|
143
|
+
export function sanitizeToolForPrompt(tool) {
|
|
144
|
+
const warnings = [];
|
|
145
|
+
// Sanitize name (should be safe, but check anyway)
|
|
146
|
+
const nameResult = sanitizeForPrompt(tool.name, { escapeStructural: true });
|
|
147
|
+
if (nameResult.hadInjectionPatterns) {
|
|
148
|
+
warnings.push(`Tool name contains suspicious patterns: ${tool.name}`);
|
|
149
|
+
}
|
|
150
|
+
// Sanitize description
|
|
151
|
+
const descResult = sanitizeForPrompt(tool.description ?? 'No description provided', { escapeStructural: true });
|
|
152
|
+
if (descResult.hadInjectionPatterns) {
|
|
153
|
+
warnings.push(`Tool description contains potential injection patterns`);
|
|
154
|
+
}
|
|
155
|
+
// Sanitize schema
|
|
156
|
+
let schemaStr = 'No schema provided';
|
|
157
|
+
if (tool.inputSchema) {
|
|
158
|
+
const sanitizedSchema = sanitizeObjectForPrompt(tool.inputSchema);
|
|
159
|
+
schemaStr = JSON.stringify(sanitizedSchema, null, 2);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
name: nameResult.sanitized,
|
|
163
|
+
description: descResult.sanitized,
|
|
164
|
+
schema: schemaStr,
|
|
165
|
+
warnings,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check if text contains potential injection patterns without modifying it.
|
|
170
|
+
*
|
|
171
|
+
* @param text - Text to check
|
|
172
|
+
* @returns True if potential injection detected
|
|
173
|
+
*/
|
|
174
|
+
export function hasInjectionPatterns(text) {
|
|
175
|
+
return INJECTION_PATTERNS.some(pattern => pattern.test(text));
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Truncate text to a maximum length with indicator.
|
|
179
|
+
* Useful for limiting context size in prompts.
|
|
180
|
+
*
|
|
181
|
+
* @param text - Text to truncate
|
|
182
|
+
* @param maxLength - Maximum length
|
|
183
|
+
* @returns Truncated text
|
|
184
|
+
*/
|
|
185
|
+
export function truncateForPrompt(text, maxLength) {
|
|
186
|
+
if (text.length <= maxLength) {
|
|
187
|
+
return text;
|
|
188
|
+
}
|
|
189
|
+
return text.substring(0, maxLength - 3) + '...';
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic text analysis utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides stemming, negation handling, constraint normalization,
|
|
5
|
+
* and enhanced keyword extraction for semantic matching.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Stem a single word using simplified Porter-like rules.
|
|
9
|
+
*
|
|
10
|
+
* @param word - Word to stem (should be lowercase)
|
|
11
|
+
* @returns Stemmed word
|
|
12
|
+
*/
|
|
13
|
+
export declare function stem(word: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Stem all words in a text.
|
|
16
|
+
*
|
|
17
|
+
* @param text - Text to stem
|
|
18
|
+
* @returns Text with all words stemmed
|
|
19
|
+
*/
|
|
20
|
+
export declare function stemText(text: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Extract keywords with stemming applied.
|
|
23
|
+
*
|
|
24
|
+
* @param text - Text to extract keywords from
|
|
25
|
+
* @returns Set of stemmed keywords
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractStemmedKeywords(text: string): Set<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Calculate keyword overlap with stemming.
|
|
30
|
+
*
|
|
31
|
+
* @param text1 - First text
|
|
32
|
+
* @param text2 - Second text
|
|
33
|
+
* @returns Overlap percentage (0-100)
|
|
34
|
+
*/
|
|
35
|
+
export declare function calculateStemmedKeywordOverlap(text1: string, text2: string): number;
|
|
36
|
+
/**
|
|
37
|
+
* Result of negation analysis.
|
|
38
|
+
*/
|
|
39
|
+
export interface NegationResult {
|
|
40
|
+
/** Negated words found in text */
|
|
41
|
+
negatedWords: string[];
|
|
42
|
+
/** Whether the overall sentiment is negated */
|
|
43
|
+
isNegated: boolean;
|
|
44
|
+
/** Original text with negations marked */
|
|
45
|
+
markedText: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Analyze text for negation patterns.
|
|
49
|
+
*
|
|
50
|
+
* @param text - Text to analyze
|
|
51
|
+
* @returns Negation analysis result
|
|
52
|
+
*/
|
|
53
|
+
export declare function analyzeNegation(text: string): NegationResult;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a severity keyword is negated in the text.
|
|
56
|
+
*
|
|
57
|
+
* @param text - Text to check
|
|
58
|
+
* @param keyword - Severity keyword to look for
|
|
59
|
+
* @returns True if keyword is negated
|
|
60
|
+
*/
|
|
61
|
+
export declare function isSeverityNegated(text: string, keyword: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Extract severity from text with negation handling.
|
|
64
|
+
*
|
|
65
|
+
* @param text - Text to extract severity from
|
|
66
|
+
* @returns Extracted severity level
|
|
67
|
+
*/
|
|
68
|
+
export declare function extractSeverityWithNegation(text: string): 'low' | 'medium' | 'high' | 'critical';
|
|
69
|
+
/**
|
|
70
|
+
* Normalized constraint value.
|
|
71
|
+
*/
|
|
72
|
+
export interface NormalizedConstraint {
|
|
73
|
+
/** Original constraint string */
|
|
74
|
+
original: string;
|
|
75
|
+
/** Type of constraint */
|
|
76
|
+
type: 'size' | 'time' | 'rate' | 'count' | 'unknown';
|
|
77
|
+
/** Numeric value */
|
|
78
|
+
value: number;
|
|
79
|
+
/** Normalized unit */
|
|
80
|
+
unit: string;
|
|
81
|
+
/** Value in base units (bytes for size, ms for time, per-second for rate) */
|
|
82
|
+
baseValue: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parse and normalize a constraint value.
|
|
86
|
+
*
|
|
87
|
+
* @param constraint - Constraint string (e.g., "10MB", "30 seconds", "100 requests/min")
|
|
88
|
+
* @returns Normalized constraint or undefined if not parseable
|
|
89
|
+
*/
|
|
90
|
+
export declare function normalizeConstraint(constraint: string): NormalizedConstraint | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Compare two constraint values with unit normalization.
|
|
93
|
+
*
|
|
94
|
+
* @param a - First constraint
|
|
95
|
+
* @param b - Second constraint
|
|
96
|
+
* @returns Similarity score (0-100)
|
|
97
|
+
*/
|
|
98
|
+
export declare function compareConstraints(a: string | undefined, b: string | undefined): number;
|
|
99
|
+
/**
|
|
100
|
+
* Extended security category keywords including new categories.
|
|
101
|
+
*/
|
|
102
|
+
export declare const EXTENDED_SECURITY_KEYWORDS: Record<string, string[]>;
|
|
103
|
+
/**
|
|
104
|
+
* Extract security category from text using extended keywords.
|
|
105
|
+
*
|
|
106
|
+
* @param text - Text to analyze
|
|
107
|
+
* @returns Detected security category
|
|
108
|
+
*/
|
|
109
|
+
export declare function extractSecurityCategoryExtended(text: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* Check if two texts are semantically similar considering stemming.
|
|
112
|
+
*
|
|
113
|
+
* @param text1 - First text
|
|
114
|
+
* @param text2 - Second text
|
|
115
|
+
* @param threshold - Minimum similarity threshold (0-100, default 60)
|
|
116
|
+
* @returns True if texts are similar
|
|
117
|
+
*/
|
|
118
|
+
export declare function areSemanticallySimular(text1: string, text2: string, threshold?: number): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Database type qualifiers that distinguish different injection types.
|
|
121
|
+
*/
|
|
122
|
+
export type DatabaseQualifier = 'sql' | 'nosql' | 'mongodb' | 'redis' | 'generic';
|
|
123
|
+
/**
|
|
124
|
+
* Direction qualifiers for file/data operations.
|
|
125
|
+
*/
|
|
126
|
+
export type DirectionQualifier = 'upload' | 'download' | 'read' | 'write' | 'generic';
|
|
127
|
+
/**
|
|
128
|
+
* Timeout type qualifiers.
|
|
129
|
+
*/
|
|
130
|
+
export type TimeoutQualifier = 'connection' | 'read' | 'write' | 'request' | 'response' | 'idle' | 'generic';
|
|
131
|
+
/**
|
|
132
|
+
* Polarity indicator for assertions (positive vs negative statements).
|
|
133
|
+
*/
|
|
134
|
+
export type Polarity = 'positive' | 'negative' | 'neutral';
|
|
135
|
+
/**
|
|
136
|
+
* Full qualifier extraction result.
|
|
137
|
+
*/
|
|
138
|
+
export interface QualifierResult {
|
|
139
|
+
database: DatabaseQualifier;
|
|
140
|
+
direction: DirectionQualifier;
|
|
141
|
+
timeout: TimeoutQualifier;
|
|
142
|
+
polarity: Polarity;
|
|
143
|
+
isNegated: boolean;
|
|
144
|
+
rateTimeUnit: 'second' | 'minute' | 'hour' | 'day' | 'unknown';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Extract database type qualifier from text.
|
|
148
|
+
* Distinguishes SQL from NoSQL/MongoDB/Redis etc.
|
|
149
|
+
*/
|
|
150
|
+
export declare function extractDatabaseQualifier(text: string): DatabaseQualifier;
|
|
151
|
+
/**
|
|
152
|
+
* Extract direction qualifier from text.
|
|
153
|
+
* Distinguishes upload from download, read from write.
|
|
154
|
+
*/
|
|
155
|
+
export declare function extractDirectionQualifier(text: string): DirectionQualifier;
|
|
156
|
+
/**
|
|
157
|
+
* Extract timeout type qualifier from text.
|
|
158
|
+
* Distinguishes connection timeout from read/write/request timeouts.
|
|
159
|
+
*/
|
|
160
|
+
export declare function extractTimeoutQualifier(text: string): TimeoutQualifier;
|
|
161
|
+
/**
|
|
162
|
+
* Extract rate limit time unit from text.
|
|
163
|
+
* Distinguishes per-second from per-minute from per-hour limits.
|
|
164
|
+
*/
|
|
165
|
+
export declare function extractRateTimeUnit(text: string): 'second' | 'minute' | 'hour' | 'day' | 'unknown';
|
|
166
|
+
/**
|
|
167
|
+
* Detect overall polarity of an assertion.
|
|
168
|
+
* Returns 'negative' if the statement is negated/denied.
|
|
169
|
+
*/
|
|
170
|
+
export declare function detectPolarity(text: string): Polarity;
|
|
171
|
+
/**
|
|
172
|
+
* Check if a security finding or assertion is negated.
|
|
173
|
+
* Returns true if the text explicitly denies the assertion/vulnerability.
|
|
174
|
+
*/
|
|
175
|
+
export declare function isSecurityFindingNegated(text: string): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Extract all qualifiers from text.
|
|
178
|
+
* Provides comprehensive context for semantic comparison.
|
|
179
|
+
*/
|
|
180
|
+
export declare function extractQualifiers(text: string): QualifierResult;
|
|
181
|
+
/**
|
|
182
|
+
* Compare qualifiers between two texts.
|
|
183
|
+
* Returns a compatibility score (0-100).
|
|
184
|
+
*/
|
|
185
|
+
export declare function compareQualifiers(text1: string, text2: string): {
|
|
186
|
+
score: number;
|
|
187
|
+
incompatibilities: string[];
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Check if two texts have compatible qualifiers for matching.
|
|
191
|
+
* Returns false if there are critical incompatibilities.
|
|
192
|
+
*/
|
|
193
|
+
export declare function qualifiersCompatible(text1: string, text2: string): boolean;
|
|
194
|
+
//# sourceMappingURL=semantic.d.ts.map
|