@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,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona validation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Validates persona configurations including bias weights and categories
|
|
5
|
+
* to ensure they form valid probability distributions.
|
|
6
|
+
*/
|
|
7
|
+
import type { Persona, QuestionBias, QuestionCategory } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Validation error with detailed information.
|
|
10
|
+
*/
|
|
11
|
+
export interface ValidationError {
|
|
12
|
+
/** Field or path that failed validation */
|
|
13
|
+
field: string;
|
|
14
|
+
/** Error message */
|
|
15
|
+
message: string;
|
|
16
|
+
/** Actual value that caused the error */
|
|
17
|
+
actual?: unknown;
|
|
18
|
+
/** Expected value or constraint */
|
|
19
|
+
expected?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Result of validating a persona.
|
|
23
|
+
*/
|
|
24
|
+
export interface PersonaValidationResult {
|
|
25
|
+
/** Whether the persona is valid */
|
|
26
|
+
valid: boolean;
|
|
27
|
+
/** Validation errors (empty if valid) */
|
|
28
|
+
errors: ValidationError[];
|
|
29
|
+
/** Validation warnings (non-fatal issues) */
|
|
30
|
+
warnings: ValidationError[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options for persona validation.
|
|
34
|
+
*/
|
|
35
|
+
export interface ValidationOptions {
|
|
36
|
+
/** Tolerance for weight sum validation (default: 0.01) */
|
|
37
|
+
sumTolerance?: number;
|
|
38
|
+
/** Whether to allow security category without security bias (default: false) */
|
|
39
|
+
allowMissingSecurity?: boolean;
|
|
40
|
+
/** Whether to warn about unused biases (default: true) */
|
|
41
|
+
warnUnusedBiases?: boolean;
|
|
42
|
+
/** Minimum bias weight to be considered "active" (default: 0.05) */
|
|
43
|
+
minActiveBias?: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate a persona's bias weights.
|
|
47
|
+
*
|
|
48
|
+
* @param bias - The question bias configuration
|
|
49
|
+
* @param options - Validation options
|
|
50
|
+
* @returns Validation result with errors and warnings
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateBiasWeights(bias: QuestionBias, options?: ValidationOptions): PersonaValidationResult;
|
|
53
|
+
/**
|
|
54
|
+
* Validate that categories have corresponding active bias weights.
|
|
55
|
+
*
|
|
56
|
+
* @param bias - The question bias configuration
|
|
57
|
+
* @param categories - The categories this persona focuses on
|
|
58
|
+
* @param options - Validation options
|
|
59
|
+
* @returns Validation result with errors and warnings
|
|
60
|
+
*/
|
|
61
|
+
export declare function validateCategoryBiasAlignment(bias: QuestionBias, categories: QuestionCategory[], options?: ValidationOptions): PersonaValidationResult;
|
|
62
|
+
/**
|
|
63
|
+
* Validate a complete persona configuration.
|
|
64
|
+
*
|
|
65
|
+
* @param persona - The persona to validate
|
|
66
|
+
* @param options - Validation options
|
|
67
|
+
* @returns Validation result with errors and warnings
|
|
68
|
+
*/
|
|
69
|
+
export declare function validatePersona(persona: Persona, options?: ValidationOptions): PersonaValidationResult;
|
|
70
|
+
/**
|
|
71
|
+
* Format validation errors for display.
|
|
72
|
+
*
|
|
73
|
+
* @param result - Validation result
|
|
74
|
+
* @param personaSource - Source of the persona (e.g., file path or "built-in")
|
|
75
|
+
* @returns Formatted error message
|
|
76
|
+
*/
|
|
77
|
+
export declare function formatValidationErrors(result: PersonaValidationResult, personaSource: string): string;
|
|
78
|
+
/**
|
|
79
|
+
* Assert a persona is valid, throwing if not.
|
|
80
|
+
*
|
|
81
|
+
* @param persona - The persona to validate
|
|
82
|
+
* @param source - Source identifier for error messages
|
|
83
|
+
* @param options - Validation options
|
|
84
|
+
* @throws Error if persona is invalid
|
|
85
|
+
*/
|
|
86
|
+
export declare function assertValidPersona(persona: Persona, source: string, options?: ValidationOptions): void;
|
|
87
|
+
/**
|
|
88
|
+
* Normalize bias weights to sum to 1.0.
|
|
89
|
+
*
|
|
90
|
+
* @param bias - The original bias configuration
|
|
91
|
+
* @returns Normalized bias with weights summing to 1.0
|
|
92
|
+
*/
|
|
93
|
+
export declare function normalizeBiasWeights(bias: QuestionBias): QuestionBias;
|
|
94
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona validation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Validates persona configurations including bias weights and categories
|
|
5
|
+
* to ensure they form valid probability distributions.
|
|
6
|
+
*/
|
|
7
|
+
import { MATH_FACTORS } from '../constants.js';
|
|
8
|
+
const DEFAULT_OPTIONS = {
|
|
9
|
+
sumTolerance: 0.01,
|
|
10
|
+
allowMissingSecurity: false,
|
|
11
|
+
warnUnusedBiases: true,
|
|
12
|
+
minActiveBias: 0.05,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Validate a persona's bias weights.
|
|
16
|
+
*
|
|
17
|
+
* @param bias - The question bias configuration
|
|
18
|
+
* @param options - Validation options
|
|
19
|
+
* @returns Validation result with errors and warnings
|
|
20
|
+
*/
|
|
21
|
+
export function validateBiasWeights(bias, options = {}) {
|
|
22
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
23
|
+
const errors = [];
|
|
24
|
+
const warnings = [];
|
|
25
|
+
// Get all bias values
|
|
26
|
+
const biasFields = [
|
|
27
|
+
{ field: 'happyPath', name: 'happyPath' },
|
|
28
|
+
{ field: 'edgeCase', name: 'edgeCase' },
|
|
29
|
+
{ field: 'errorHandling', name: 'errorHandling' },
|
|
30
|
+
{ field: 'boundary', name: 'boundary' },
|
|
31
|
+
{ field: 'security', name: 'security' },
|
|
32
|
+
];
|
|
33
|
+
const values = [];
|
|
34
|
+
// Validate each bias weight is between 0 and 1
|
|
35
|
+
for (const { field, name } of biasFields) {
|
|
36
|
+
const value = bias[field];
|
|
37
|
+
// Skip undefined security (optional field)
|
|
38
|
+
if (value === undefined) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// Check type
|
|
42
|
+
if (typeof value !== 'number') {
|
|
43
|
+
errors.push({
|
|
44
|
+
field: `questionBias.${name}`,
|
|
45
|
+
message: `Bias weight must be a number`,
|
|
46
|
+
actual: typeof value,
|
|
47
|
+
expected: 'number',
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Check range [0, 1]
|
|
52
|
+
if (value < 0 || value > 1) {
|
|
53
|
+
errors.push({
|
|
54
|
+
field: `questionBias.${name}`,
|
|
55
|
+
message: `Bias weight must be between 0 and 1`,
|
|
56
|
+
actual: value,
|
|
57
|
+
expected: '0 <= weight <= 1',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Check for NaN or Infinity
|
|
61
|
+
if (!Number.isFinite(value)) {
|
|
62
|
+
errors.push({
|
|
63
|
+
field: `questionBias.${name}`,
|
|
64
|
+
message: `Bias weight must be a finite number`,
|
|
65
|
+
actual: value,
|
|
66
|
+
expected: 'finite number',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
values.push(value);
|
|
70
|
+
}
|
|
71
|
+
// Validate sum approximately equals 1.0
|
|
72
|
+
if (values.length > 0 && errors.length === 0) {
|
|
73
|
+
const sum = values.reduce((a, b) => a + b, 0);
|
|
74
|
+
const deviation = Math.abs(sum - 1.0);
|
|
75
|
+
if (deviation > opts.sumTolerance) {
|
|
76
|
+
errors.push({
|
|
77
|
+
field: 'questionBias',
|
|
78
|
+
message: `Bias weights must sum to approximately 1.0 (tolerance: ${opts.sumTolerance})`,
|
|
79
|
+
actual: sum.toFixed(4),
|
|
80
|
+
expected: `1.0 ± ${opts.sumTolerance}`,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
valid: errors.length === 0,
|
|
86
|
+
errors,
|
|
87
|
+
warnings,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validate that categories have corresponding active bias weights.
|
|
92
|
+
*
|
|
93
|
+
* @param bias - The question bias configuration
|
|
94
|
+
* @param categories - The categories this persona focuses on
|
|
95
|
+
* @param options - Validation options
|
|
96
|
+
* @returns Validation result with errors and warnings
|
|
97
|
+
*/
|
|
98
|
+
export function validateCategoryBiasAlignment(bias, categories, options = {}) {
|
|
99
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
100
|
+
const errors = [];
|
|
101
|
+
const warnings = [];
|
|
102
|
+
// Map categories to bias fields
|
|
103
|
+
const categoryToBias = {
|
|
104
|
+
happy_path: 'happyPath',
|
|
105
|
+
edge_case: 'edgeCase',
|
|
106
|
+
error_handling: 'errorHandling',
|
|
107
|
+
boundary: 'boundary',
|
|
108
|
+
security: 'security',
|
|
109
|
+
};
|
|
110
|
+
// Check that each category has a corresponding non-zero bias
|
|
111
|
+
for (const category of categories) {
|
|
112
|
+
const biasField = categoryToBias[category];
|
|
113
|
+
const biasValue = bias[biasField];
|
|
114
|
+
// Security is special - can be undefined
|
|
115
|
+
if (category === 'security' && biasValue === undefined) {
|
|
116
|
+
if (!opts.allowMissingSecurity) {
|
|
117
|
+
errors.push({
|
|
118
|
+
field: `questionBias.security`,
|
|
119
|
+
message: `Category "security" is listed but security bias is not defined`,
|
|
120
|
+
actual: undefined,
|
|
121
|
+
expected: 'security bias > 0',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
// Check if bias is too low to be meaningful
|
|
127
|
+
if (biasValue !== undefined && biasValue < opts.minActiveBias) {
|
|
128
|
+
warnings.push({
|
|
129
|
+
field: `questionBias.${biasField}`,
|
|
130
|
+
message: `Category "${category}" is listed but bias weight is very low`,
|
|
131
|
+
actual: biasValue,
|
|
132
|
+
expected: `>= ${opts.minActiveBias}`,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Check for biases that are set but not in categories (warn)
|
|
137
|
+
if (opts.warnUnusedBiases) {
|
|
138
|
+
const allBiases = [
|
|
139
|
+
{ field: 'happyPath', category: 'happy_path' },
|
|
140
|
+
{ field: 'edgeCase', category: 'edge_case' },
|
|
141
|
+
{ field: 'errorHandling', category: 'error_handling' },
|
|
142
|
+
{ field: 'boundary', category: 'boundary' },
|
|
143
|
+
{ field: 'security', category: 'security' },
|
|
144
|
+
];
|
|
145
|
+
for (const { field, category } of allBiases) {
|
|
146
|
+
const value = bias[field];
|
|
147
|
+
if (value !== undefined && value >= opts.minActiveBias && !categories.includes(category)) {
|
|
148
|
+
warnings.push({
|
|
149
|
+
field: `questionBias.${field}`,
|
|
150
|
+
message: `Bias "${field}" has significant weight but "${category}" is not in categories list`,
|
|
151
|
+
actual: value,
|
|
152
|
+
expected: `Category "${category}" in categories array`,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
valid: errors.length === 0,
|
|
159
|
+
errors,
|
|
160
|
+
warnings,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validate a complete persona configuration.
|
|
165
|
+
*
|
|
166
|
+
* @param persona - The persona to validate
|
|
167
|
+
* @param options - Validation options
|
|
168
|
+
* @returns Validation result with errors and warnings
|
|
169
|
+
*/
|
|
170
|
+
export function validatePersona(persona, options = {}) {
|
|
171
|
+
const errors = [];
|
|
172
|
+
const warnings = [];
|
|
173
|
+
// Validate required fields
|
|
174
|
+
if (!persona.id || typeof persona.id !== 'string') {
|
|
175
|
+
errors.push({
|
|
176
|
+
field: 'id',
|
|
177
|
+
message: 'Persona ID is required and must be a string',
|
|
178
|
+
actual: persona.id,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if (!persona.name || typeof persona.name !== 'string') {
|
|
182
|
+
errors.push({
|
|
183
|
+
field: 'name',
|
|
184
|
+
message: 'Persona name is required and must be a string',
|
|
185
|
+
actual: persona.name,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
if (!persona.systemPrompt || typeof persona.systemPrompt !== 'string') {
|
|
189
|
+
errors.push({
|
|
190
|
+
field: 'systemPrompt',
|
|
191
|
+
message: 'System prompt is required and must be a string',
|
|
192
|
+
actual: typeof persona.systemPrompt,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// Validate ID format (alphanumeric and underscores only)
|
|
196
|
+
if (persona.id && !/^[a-z][a-z0-9_]*$/.test(persona.id)) {
|
|
197
|
+
errors.push({
|
|
198
|
+
field: 'id',
|
|
199
|
+
message: 'Persona ID must start with a letter and contain only lowercase letters, numbers, and underscores',
|
|
200
|
+
actual: persona.id,
|
|
201
|
+
expected: 'pattern: ^[a-z][a-z0-9_]*$',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// Validate bias weights
|
|
205
|
+
const biasResult = validateBiasWeights(persona.questionBias, options);
|
|
206
|
+
errors.push(...biasResult.errors);
|
|
207
|
+
warnings.push(...biasResult.warnings);
|
|
208
|
+
// Validate categories
|
|
209
|
+
if (!persona.categories || !Array.isArray(persona.categories)) {
|
|
210
|
+
errors.push({
|
|
211
|
+
field: 'categories',
|
|
212
|
+
message: 'Categories must be an array',
|
|
213
|
+
actual: typeof persona.categories,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
else if (persona.categories.length === 0) {
|
|
217
|
+
errors.push({
|
|
218
|
+
field: 'categories',
|
|
219
|
+
message: 'At least one category is required',
|
|
220
|
+
actual: 0,
|
|
221
|
+
expected: '>= 1 category',
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// Validate category values
|
|
226
|
+
const validCategories = ['happy_path', 'edge_case', 'error_handling', 'boundary', 'security'];
|
|
227
|
+
for (const cat of persona.categories) {
|
|
228
|
+
if (!validCategories.includes(cat)) {
|
|
229
|
+
errors.push({
|
|
230
|
+
field: 'categories',
|
|
231
|
+
message: `Invalid category "${cat}"`,
|
|
232
|
+
actual: cat,
|
|
233
|
+
expected: validCategories.join(', '),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Validate category-bias alignment
|
|
238
|
+
if (biasResult.valid) {
|
|
239
|
+
const alignmentResult = validateCategoryBiasAlignment(persona.questionBias, persona.categories, options);
|
|
240
|
+
errors.push(...alignmentResult.errors);
|
|
241
|
+
warnings.push(...alignmentResult.warnings);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
valid: errors.length === 0,
|
|
246
|
+
errors,
|
|
247
|
+
warnings,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Format validation errors for display.
|
|
252
|
+
*
|
|
253
|
+
* @param result - Validation result
|
|
254
|
+
* @param personaSource - Source of the persona (e.g., file path or "built-in")
|
|
255
|
+
* @returns Formatted error message
|
|
256
|
+
*/
|
|
257
|
+
export function formatValidationErrors(result, personaSource) {
|
|
258
|
+
const lines = [];
|
|
259
|
+
if (result.errors.length > 0) {
|
|
260
|
+
lines.push(`Persona validation failed for ${personaSource}:`);
|
|
261
|
+
for (const error of result.errors) {
|
|
262
|
+
lines.push(` - ${error.field}: ${error.message}`);
|
|
263
|
+
if (error.actual !== undefined) {
|
|
264
|
+
lines.push(` Actual: ${JSON.stringify(error.actual)}`);
|
|
265
|
+
}
|
|
266
|
+
if (error.expected) {
|
|
267
|
+
lines.push(` Expected: ${error.expected}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (result.warnings.length > 0) {
|
|
272
|
+
if (lines.length > 0)
|
|
273
|
+
lines.push('');
|
|
274
|
+
lines.push('Warnings:');
|
|
275
|
+
for (const warning of result.warnings) {
|
|
276
|
+
lines.push(` - ${warning.field}: ${warning.message}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return lines.join('\n');
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Assert a persona is valid, throwing if not.
|
|
283
|
+
*
|
|
284
|
+
* @param persona - The persona to validate
|
|
285
|
+
* @param source - Source identifier for error messages
|
|
286
|
+
* @param options - Validation options
|
|
287
|
+
* @throws Error if persona is invalid
|
|
288
|
+
*/
|
|
289
|
+
export function assertValidPersona(persona, source, options = {}) {
|
|
290
|
+
const result = validatePersona(persona, options);
|
|
291
|
+
if (!result.valid) {
|
|
292
|
+
throw new Error(formatValidationErrors(result, source));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Normalize bias weights to sum to 1.0.
|
|
297
|
+
*
|
|
298
|
+
* @param bias - The original bias configuration
|
|
299
|
+
* @returns Normalized bias with weights summing to 1.0
|
|
300
|
+
*/
|
|
301
|
+
export function normalizeBiasWeights(bias) {
|
|
302
|
+
// Calculate sum of all defined weights
|
|
303
|
+
const happyPath = typeof bias.happyPath === 'number' ? bias.happyPath : 0;
|
|
304
|
+
const edgeCase = typeof bias.edgeCase === 'number' ? bias.edgeCase : 0;
|
|
305
|
+
const errorHandling = typeof bias.errorHandling === 'number' ? bias.errorHandling : 0;
|
|
306
|
+
const boundary = typeof bias.boundary === 'number' ? bias.boundary : 0;
|
|
307
|
+
const security = typeof bias.security === 'number' ? bias.security : 0;
|
|
308
|
+
const sum = happyPath + edgeCase + errorHandling + boundary + security;
|
|
309
|
+
if (sum === 0) {
|
|
310
|
+
// All zeros - return equal weights for the required fields
|
|
311
|
+
return {
|
|
312
|
+
happyPath: MATH_FACTORS.DEFAULT_QUESTION_BIAS,
|
|
313
|
+
edgeCase: MATH_FACTORS.DEFAULT_QUESTION_BIAS,
|
|
314
|
+
errorHandling: MATH_FACTORS.DEFAULT_QUESTION_BIAS,
|
|
315
|
+
boundary: MATH_FACTORS.DEFAULT_QUESTION_BIAS,
|
|
316
|
+
security: bias.security !== undefined ? 0 : undefined,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
// Normalize to sum to 1.0
|
|
320
|
+
const result = {
|
|
321
|
+
happyPath: happyPath / sum,
|
|
322
|
+
edgeCase: edgeCase / sum,
|
|
323
|
+
errorHandling: errorHandling / sum,
|
|
324
|
+
boundary: boundary / sum,
|
|
325
|
+
};
|
|
326
|
+
// Only include security if it was originally defined
|
|
327
|
+
if (bias.security !== undefined) {
|
|
328
|
+
result.security = security / sum;
|
|
329
|
+
}
|
|
330
|
+
return result;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt templates for LLM-guided interview and analysis.
|
|
3
|
+
*
|
|
4
|
+
* All prompts are extracted here for:
|
|
5
|
+
* - Easier maintenance and versioning
|
|
6
|
+
* - Consistent formatting
|
|
7
|
+
* - Potential future i18n support
|
|
8
|
+
* - Testing and validation
|
|
9
|
+
*
|
|
10
|
+
* SECURITY NOTE: All user-provided data (tool descriptions, schemas, etc.)
|
|
11
|
+
* is sanitized before inclusion in prompts to prevent prompt injection attacks.
|
|
12
|
+
*/
|
|
13
|
+
import type { MCPTool, MCPToolCallResult, MCPPrompt, MCPPromptGetResult } from '../transport/types.js';
|
|
14
|
+
import type { InterviewQuestion, ToolProfile, ServerContext, PromptQuestion } from '../interview/types.js';
|
|
15
|
+
import type { DiscoveryResult } from '../discovery/types.js';
|
|
16
|
+
import type { Persona } from '../persona/types.js';
|
|
17
|
+
import type { Workflow, WorkflowStep, WorkflowStepResult } from '../workflow/types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Default system prompt for documentation-focused interviews.
|
|
20
|
+
*/
|
|
21
|
+
export declare const DEFAULT_SYSTEM_PROMPT = "You are a technical documentation assistant helping to generate API documentation for software tools. Your task is to create helpful usage examples and documentation that developers can reference. All examples you generate are for documentation purposes only and will be used in developer guides and API references. Focus on being helpful and educational.";
|
|
22
|
+
export interface QuestionGenerationContext {
|
|
23
|
+
tool: MCPTool;
|
|
24
|
+
maxQuestions: number;
|
|
25
|
+
categoryGuidance: string;
|
|
26
|
+
categoryList: string;
|
|
27
|
+
skipErrorTests: boolean;
|
|
28
|
+
serverContext?: ServerContext;
|
|
29
|
+
previousErrors?: Array<{
|
|
30
|
+
args: Record<string, unknown>;
|
|
31
|
+
error: string;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate the prompt for creating interview questions for a tool.
|
|
36
|
+
*
|
|
37
|
+
* SECURITY: Tool name, description, and schema are sanitized to prevent
|
|
38
|
+
* prompt injection attacks from malicious MCP servers.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildQuestionGenerationPrompt(ctx: QuestionGenerationContext): string;
|
|
41
|
+
export interface ResponseAnalysisContext {
|
|
42
|
+
tool: MCPTool;
|
|
43
|
+
question: InterviewQuestion;
|
|
44
|
+
response: MCPToolCallResult | null;
|
|
45
|
+
error: string | null;
|
|
46
|
+
persona: Persona;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Generate the prompt for analyzing a tool response.
|
|
50
|
+
*
|
|
51
|
+
* SECURITY: Response content is sanitized to prevent prompt injection.
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildResponseAnalysisPrompt(ctx: ResponseAnalysisContext): string;
|
|
54
|
+
export interface ToolProfileSynthesisContext {
|
|
55
|
+
tool: MCPTool;
|
|
56
|
+
interactions: Array<{
|
|
57
|
+
question: InterviewQuestion;
|
|
58
|
+
response: MCPToolCallResult | null;
|
|
59
|
+
error: string | null;
|
|
60
|
+
analysis: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate the prompt for synthesizing a tool profile.
|
|
65
|
+
*
|
|
66
|
+
* SECURITY: Tool data and interaction results are sanitized.
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildToolProfileSynthesisPrompt(ctx: ToolProfileSynthesisContext): string;
|
|
69
|
+
export interface OverallSynthesisContext {
|
|
70
|
+
discovery: DiscoveryResult;
|
|
71
|
+
toolProfiles: ToolProfile[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate the prompt for synthesizing overall interview results.
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildOverallSynthesisPrompt(ctx: OverallSynthesisContext): string;
|
|
77
|
+
export interface WorkflowStepAnalysisContext {
|
|
78
|
+
workflow: Workflow;
|
|
79
|
+
step: WorkflowStep;
|
|
80
|
+
stepIndex: number;
|
|
81
|
+
response: MCPToolCallResult | null;
|
|
82
|
+
error: string | undefined;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate the prompt for analyzing a workflow step.
|
|
86
|
+
*/
|
|
87
|
+
export declare function buildWorkflowStepAnalysisPrompt(ctx: WorkflowStepAnalysisContext): string;
|
|
88
|
+
export interface WorkflowSummaryContext {
|
|
89
|
+
workflow: Workflow;
|
|
90
|
+
stepResults: WorkflowStepResult[];
|
|
91
|
+
success: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate the prompt for summarizing a workflow execution.
|
|
95
|
+
*/
|
|
96
|
+
export declare function buildWorkflowSummaryPrompt(ctx: WorkflowSummaryContext): string;
|
|
97
|
+
export interface PromptQuestionGenerationContext {
|
|
98
|
+
prompt: MCPPrompt;
|
|
99
|
+
maxQuestions: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate test cases for an MCP prompt.
|
|
103
|
+
*/
|
|
104
|
+
export declare function buildPromptQuestionGenerationPrompt(ctx: PromptQuestionGenerationContext): string;
|
|
105
|
+
export interface PromptResponseAnalysisContext {
|
|
106
|
+
prompt: MCPPrompt;
|
|
107
|
+
question: PromptQuestion;
|
|
108
|
+
response: MCPPromptGetResult | null;
|
|
109
|
+
error: string | null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate the prompt for analyzing a prompt response.
|
|
113
|
+
*/
|
|
114
|
+
export declare function buildPromptResponseAnalysisPrompt(ctx: PromptResponseAnalysisContext): string;
|
|
115
|
+
export interface PromptProfileSynthesisContext {
|
|
116
|
+
prompt: MCPPrompt;
|
|
117
|
+
interactions: Array<{
|
|
118
|
+
question: PromptQuestion;
|
|
119
|
+
response: MCPPromptGetResult | null;
|
|
120
|
+
error: string | null;
|
|
121
|
+
analysis: string;
|
|
122
|
+
}>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Generate the prompt for synthesizing a prompt profile.
|
|
126
|
+
*/
|
|
127
|
+
export declare function buildPromptProfileSynthesisPrompt(ctx: PromptProfileSynthesisContext): string;
|
|
128
|
+
/**
|
|
129
|
+
* Standard completion options for different prompt types.
|
|
130
|
+
*/
|
|
131
|
+
export declare const COMPLETION_OPTIONS: {
|
|
132
|
+
/** For question generation - slightly higher temperature for variety */
|
|
133
|
+
readonly questionGeneration: {
|
|
134
|
+
readonly temperature: 0.4;
|
|
135
|
+
readonly responseFormat: "json";
|
|
136
|
+
readonly maxTokens: 2048;
|
|
137
|
+
};
|
|
138
|
+
/** For response analysis - lower temperature for consistency */
|
|
139
|
+
readonly responseAnalysis: {
|
|
140
|
+
readonly temperature: 0.3;
|
|
141
|
+
readonly maxTokens: 1024;
|
|
142
|
+
};
|
|
143
|
+
/** For profile synthesis - structured output */
|
|
144
|
+
readonly profileSynthesis: {
|
|
145
|
+
readonly temperature: 0.3;
|
|
146
|
+
readonly responseFormat: "json";
|
|
147
|
+
};
|
|
148
|
+
/** For overall summary - structured output */
|
|
149
|
+
readonly overallSynthesis: {
|
|
150
|
+
readonly temperature: 0.3;
|
|
151
|
+
readonly responseFormat: "json";
|
|
152
|
+
};
|
|
153
|
+
/** For workflow step analysis */
|
|
154
|
+
readonly workflowStepAnalysis: {
|
|
155
|
+
readonly temperature: 0.3;
|
|
156
|
+
readonly maxTokens: 1024;
|
|
157
|
+
};
|
|
158
|
+
/** For workflow summary */
|
|
159
|
+
readonly workflowSummary: {
|
|
160
|
+
readonly temperature: 0.3;
|
|
161
|
+
readonly maxTokens: 1024;
|
|
162
|
+
};
|
|
163
|
+
/** For prompt question generation */
|
|
164
|
+
readonly promptQuestionGeneration: {
|
|
165
|
+
readonly temperature: 0.4;
|
|
166
|
+
readonly responseFormat: "json";
|
|
167
|
+
readonly maxTokens: 2048;
|
|
168
|
+
};
|
|
169
|
+
/** For prompt response analysis */
|
|
170
|
+
readonly promptResponseAnalysis: {
|
|
171
|
+
readonly temperature: 0.3;
|
|
172
|
+
readonly maxTokens: 1024;
|
|
173
|
+
};
|
|
174
|
+
/** For prompt profile synthesis */
|
|
175
|
+
readonly promptProfileSynthesis: {
|
|
176
|
+
readonly temperature: 0.3;
|
|
177
|
+
readonly responseFormat: "json";
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=templates.d.ts.map
|