@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,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-RPC 2.0 types for MCP protocol communication.
|
|
3
|
+
*/
|
|
4
|
+
export interface JSONRPCRequest {
|
|
5
|
+
jsonrpc: '2.0';
|
|
6
|
+
id: string | number;
|
|
7
|
+
method: string;
|
|
8
|
+
params?: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface JSONRPCResponse {
|
|
11
|
+
jsonrpc: '2.0';
|
|
12
|
+
id: string | number;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
error?: JSONRPCError;
|
|
15
|
+
}
|
|
16
|
+
export interface JSONRPCError {
|
|
17
|
+
code: number;
|
|
18
|
+
message: string;
|
|
19
|
+
data?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface JSONRPCNotification {
|
|
22
|
+
jsonrpc: '2.0';
|
|
23
|
+
method: string;
|
|
24
|
+
params?: unknown;
|
|
25
|
+
}
|
|
26
|
+
export type JSONRPCMessage = JSONRPCRequest | JSONRPCResponse | JSONRPCNotification;
|
|
27
|
+
/**
|
|
28
|
+
* MCP Protocol types
|
|
29
|
+
*/
|
|
30
|
+
export interface MCPTool {
|
|
31
|
+
name: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
inputSchema?: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export interface MCPPrompt {
|
|
36
|
+
name: string;
|
|
37
|
+
description?: string;
|
|
38
|
+
arguments?: MCPPromptArgument[];
|
|
39
|
+
}
|
|
40
|
+
export interface MCPPromptArgument {
|
|
41
|
+
name: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
required?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface MCPServerCapabilities {
|
|
46
|
+
tools?: Record<string, unknown>;
|
|
47
|
+
prompts?: Record<string, unknown>;
|
|
48
|
+
resources?: Record<string, unknown>;
|
|
49
|
+
logging?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface MCPServerInfo {
|
|
52
|
+
name: string;
|
|
53
|
+
version: string;
|
|
54
|
+
}
|
|
55
|
+
export interface MCPInitializeResult {
|
|
56
|
+
protocolVersion: string;
|
|
57
|
+
capabilities: MCPServerCapabilities;
|
|
58
|
+
serverInfo: MCPServerInfo;
|
|
59
|
+
}
|
|
60
|
+
export interface MCPToolCallResult {
|
|
61
|
+
content: MCPContentBlock[];
|
|
62
|
+
isError?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface MCPContentBlock {
|
|
65
|
+
type: 'text' | 'image' | 'resource';
|
|
66
|
+
text?: string;
|
|
67
|
+
data?: string;
|
|
68
|
+
mimeType?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface MCPToolsListResult {
|
|
71
|
+
tools: MCPTool[];
|
|
72
|
+
}
|
|
73
|
+
export interface MCPPromptsListResult {
|
|
74
|
+
prompts: MCPPrompt[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* MCP Resource types
|
|
78
|
+
*/
|
|
79
|
+
export interface MCPResource {
|
|
80
|
+
/** URI identifying the resource */
|
|
81
|
+
uri: string;
|
|
82
|
+
/** Human-readable name */
|
|
83
|
+
name: string;
|
|
84
|
+
/** Description of the resource */
|
|
85
|
+
description?: string;
|
|
86
|
+
/** MIME type of the resource content */
|
|
87
|
+
mimeType?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface MCPResourcesListResult {
|
|
90
|
+
resources: MCPResource[];
|
|
91
|
+
}
|
|
92
|
+
export interface MCPResourceReadResult {
|
|
93
|
+
contents: MCPResourceContent[];
|
|
94
|
+
}
|
|
95
|
+
export interface MCPResourceContent {
|
|
96
|
+
/** URI of the resource */
|
|
97
|
+
uri: string;
|
|
98
|
+
/** MIME type of the content */
|
|
99
|
+
mimeType?: string;
|
|
100
|
+
/** Text content (for text resources) */
|
|
101
|
+
text?: string;
|
|
102
|
+
/** Binary content as base64 (for binary resources) */
|
|
103
|
+
blob?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface MCPPromptMessage {
|
|
106
|
+
role: 'user' | 'assistant';
|
|
107
|
+
content: MCPPromptContent;
|
|
108
|
+
}
|
|
109
|
+
export interface MCPPromptContent {
|
|
110
|
+
type: 'text' | 'image' | 'resource';
|
|
111
|
+
text?: string;
|
|
112
|
+
data?: string;
|
|
113
|
+
mimeType?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface MCPPromptGetResult {
|
|
116
|
+
description?: string;
|
|
117
|
+
messages: MCPPromptMessage[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Type guards
|
|
121
|
+
*/
|
|
122
|
+
export declare function isRequest(msg: JSONRPCMessage): msg is JSONRPCRequest;
|
|
123
|
+
export declare function isResponse(msg: JSONRPCMessage): msg is JSONRPCResponse;
|
|
124
|
+
export declare function isNotification(msg: JSONRPCMessage): msg is JSONRPCNotification;
|
|
125
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-RPC 2.0 types for MCP protocol communication.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Type guards
|
|
6
|
+
*/
|
|
7
|
+
export function isRequest(msg) {
|
|
8
|
+
return 'method' in msg && 'id' in msg && msg.id !== undefined;
|
|
9
|
+
}
|
|
10
|
+
export function isResponse(msg) {
|
|
11
|
+
return 'id' in msg && ('result' in msg || 'error' in msg);
|
|
12
|
+
}
|
|
13
|
+
export function isNotification(msg) {
|
|
14
|
+
return 'method' in msg && !('id' in msg && msg.id !== undefined);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concurrency utilities for parallel execution with limits.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Options for parallel execution.
|
|
6
|
+
*/
|
|
7
|
+
export interface ParallelOptions<T> {
|
|
8
|
+
/** Maximum concurrent tasks (default: 3) */
|
|
9
|
+
concurrency?: number;
|
|
10
|
+
/** Callback when a task completes */
|
|
11
|
+
onTaskComplete?: (result: T, index: number) => void;
|
|
12
|
+
/** Callback when a task fails */
|
|
13
|
+
onTaskError?: (error: Error, index: number) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Result of a parallel execution.
|
|
17
|
+
*/
|
|
18
|
+
export interface ParallelResult<T> {
|
|
19
|
+
/** Successful results */
|
|
20
|
+
results: T[];
|
|
21
|
+
/** Errors by index */
|
|
22
|
+
errors: Map<number, Error>;
|
|
23
|
+
/** Whether all tasks succeeded */
|
|
24
|
+
allSucceeded: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute tasks in parallel with a concurrency limit.
|
|
28
|
+
* Uses a semaphore pattern to limit concurrent execution.
|
|
29
|
+
*
|
|
30
|
+
* @param tasks - Array of async task functions to execute
|
|
31
|
+
* @param options - Parallel execution options
|
|
32
|
+
* @returns Results of all tasks
|
|
33
|
+
*/
|
|
34
|
+
export declare function parallelLimit<T>(tasks: Array<() => Promise<T>>, options?: ParallelOptions<T>): Promise<ParallelResult<T>>;
|
|
35
|
+
/**
|
|
36
|
+
* Execute tasks in parallel with a concurrency limit, collecting all results.
|
|
37
|
+
* Unlike parallelLimit, this version preserves order and includes errors inline.
|
|
38
|
+
*
|
|
39
|
+
* @param items - Array of items to process
|
|
40
|
+
* @param fn - Async function to process each item
|
|
41
|
+
* @param options - Parallel execution options
|
|
42
|
+
* @returns Array of results (or errors) in original order
|
|
43
|
+
*/
|
|
44
|
+
export declare function mapLimit<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, options?: ParallelOptions<R>): Promise<Array<{
|
|
45
|
+
success: true;
|
|
46
|
+
value: R;
|
|
47
|
+
} | {
|
|
48
|
+
success: false;
|
|
49
|
+
error: Error;
|
|
50
|
+
}>>;
|
|
51
|
+
/**
|
|
52
|
+
* Create a semaphore for limiting concurrent access to a resource.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createSemaphore(limit: number): {
|
|
55
|
+
acquire(): Promise<void>;
|
|
56
|
+
release(): void;
|
|
57
|
+
readonly available: number;
|
|
58
|
+
readonly waiting: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Mutex for ensuring exclusive access to a resource.
|
|
62
|
+
*/
|
|
63
|
+
export declare function createMutex(): {
|
|
64
|
+
acquire(): Promise<void>;
|
|
65
|
+
release(): void;
|
|
66
|
+
readonly available: number;
|
|
67
|
+
readonly waiting: number;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Thread-safe accumulator for collecting results from parallel tasks.
|
|
71
|
+
*/
|
|
72
|
+
export declare class SafeAccumulator<T> {
|
|
73
|
+
private items;
|
|
74
|
+
private mutex;
|
|
75
|
+
/**
|
|
76
|
+
* Add an item to the accumulator.
|
|
77
|
+
*/
|
|
78
|
+
add(item: T): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Add multiple items to the accumulator.
|
|
81
|
+
*/
|
|
82
|
+
addAll(items: T[]): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Get all accumulated items.
|
|
85
|
+
*/
|
|
86
|
+
getAll(): T[];
|
|
87
|
+
/**
|
|
88
|
+
* Get the current count.
|
|
89
|
+
*/
|
|
90
|
+
get count(): number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Thread-safe map for collecting keyed results.
|
|
94
|
+
*/
|
|
95
|
+
export declare class SafeMap<K, V> {
|
|
96
|
+
private map;
|
|
97
|
+
private mutex;
|
|
98
|
+
/**
|
|
99
|
+
* Set a value in the map.
|
|
100
|
+
*/
|
|
101
|
+
set(key: K, value: V): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Get a value from the map.
|
|
104
|
+
*/
|
|
105
|
+
get(key: K): V | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Check if a key exists.
|
|
108
|
+
*/
|
|
109
|
+
has(key: K): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Get all entries.
|
|
112
|
+
*/
|
|
113
|
+
entries(): IterableIterator<[K, V]>;
|
|
114
|
+
/**
|
|
115
|
+
* Get all values.
|
|
116
|
+
*/
|
|
117
|
+
values(): IterableIterator<V>;
|
|
118
|
+
/**
|
|
119
|
+
* Get the current size.
|
|
120
|
+
*/
|
|
121
|
+
get size(): number;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concurrency utilities for parallel execution with limits.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Execute tasks in parallel with a concurrency limit.
|
|
6
|
+
* Uses a semaphore pattern to limit concurrent execution.
|
|
7
|
+
*
|
|
8
|
+
* @param tasks - Array of async task functions to execute
|
|
9
|
+
* @param options - Parallel execution options
|
|
10
|
+
* @returns Results of all tasks
|
|
11
|
+
*/
|
|
12
|
+
export async function parallelLimit(tasks, options = {}) {
|
|
13
|
+
const { concurrency = 3, onTaskComplete, onTaskError } = options;
|
|
14
|
+
const results = new Array(tasks.length);
|
|
15
|
+
const errors = new Map();
|
|
16
|
+
let running = 0;
|
|
17
|
+
let index = 0;
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
const startNext = () => {
|
|
20
|
+
// Check if we're done
|
|
21
|
+
if (index >= tasks.length && running === 0) {
|
|
22
|
+
resolve({
|
|
23
|
+
results,
|
|
24
|
+
errors,
|
|
25
|
+
allSucceeded: errors.size === 0,
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Start tasks up to concurrency limit
|
|
30
|
+
while (running < concurrency && index < tasks.length) {
|
|
31
|
+
const currentIndex = index++;
|
|
32
|
+
running++;
|
|
33
|
+
tasks[currentIndex]()
|
|
34
|
+
.then((result) => {
|
|
35
|
+
results[currentIndex] = result;
|
|
36
|
+
onTaskComplete?.(result, currentIndex);
|
|
37
|
+
})
|
|
38
|
+
.catch((error) => {
|
|
39
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
40
|
+
errors.set(currentIndex, err);
|
|
41
|
+
onTaskError?.(err, currentIndex);
|
|
42
|
+
})
|
|
43
|
+
.finally(() => {
|
|
44
|
+
running--;
|
|
45
|
+
startNext();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// Handle empty task list
|
|
50
|
+
if (tasks.length === 0) {
|
|
51
|
+
resolve({
|
|
52
|
+
results: [],
|
|
53
|
+
errors: new Map(),
|
|
54
|
+
allSucceeded: true,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
startNext();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Execute tasks in parallel with a concurrency limit, collecting all results.
|
|
63
|
+
* Unlike parallelLimit, this version preserves order and includes errors inline.
|
|
64
|
+
*
|
|
65
|
+
* @param items - Array of items to process
|
|
66
|
+
* @param fn - Async function to process each item
|
|
67
|
+
* @param options - Parallel execution options
|
|
68
|
+
* @returns Array of results (or errors) in original order
|
|
69
|
+
*/
|
|
70
|
+
export async function mapLimit(items, fn, options = {}) {
|
|
71
|
+
const tasks = items.map((item, i) => async () => fn(item, i));
|
|
72
|
+
const { results, errors } = await parallelLimit(tasks, options);
|
|
73
|
+
return items.map((_, i) => {
|
|
74
|
+
const error = errors.get(i);
|
|
75
|
+
if (error) {
|
|
76
|
+
return { success: false, error };
|
|
77
|
+
}
|
|
78
|
+
return { success: true, value: results[i] };
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a semaphore for limiting concurrent access to a resource.
|
|
83
|
+
*/
|
|
84
|
+
export function createSemaphore(limit) {
|
|
85
|
+
let current = 0;
|
|
86
|
+
const queue = [];
|
|
87
|
+
return {
|
|
88
|
+
async acquire() {
|
|
89
|
+
if (current < limit) {
|
|
90
|
+
current++;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
return new Promise((resolve) => {
|
|
94
|
+
queue.push(() => {
|
|
95
|
+
current++;
|
|
96
|
+
resolve();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
release() {
|
|
101
|
+
current--;
|
|
102
|
+
if (queue.length > 0) {
|
|
103
|
+
const next = queue.shift();
|
|
104
|
+
next?.();
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
get available() {
|
|
108
|
+
return limit - current;
|
|
109
|
+
},
|
|
110
|
+
get waiting() {
|
|
111
|
+
return queue.length;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Mutex for ensuring exclusive access to a resource.
|
|
117
|
+
*/
|
|
118
|
+
export function createMutex() {
|
|
119
|
+
return createSemaphore(1);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Thread-safe accumulator for collecting results from parallel tasks.
|
|
123
|
+
*/
|
|
124
|
+
export class SafeAccumulator {
|
|
125
|
+
items = [];
|
|
126
|
+
mutex = createMutex();
|
|
127
|
+
/**
|
|
128
|
+
* Add an item to the accumulator.
|
|
129
|
+
*/
|
|
130
|
+
async add(item) {
|
|
131
|
+
await this.mutex.acquire();
|
|
132
|
+
try {
|
|
133
|
+
this.items.push(item);
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
this.mutex.release();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Add multiple items to the accumulator.
|
|
141
|
+
*/
|
|
142
|
+
async addAll(items) {
|
|
143
|
+
await this.mutex.acquire();
|
|
144
|
+
try {
|
|
145
|
+
this.items.push(...items);
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
this.mutex.release();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get all accumulated items.
|
|
153
|
+
*/
|
|
154
|
+
getAll() {
|
|
155
|
+
return [...this.items];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get the current count.
|
|
159
|
+
*/
|
|
160
|
+
get count() {
|
|
161
|
+
return this.items.length;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Thread-safe map for collecting keyed results.
|
|
166
|
+
*/
|
|
167
|
+
export class SafeMap {
|
|
168
|
+
map = new Map();
|
|
169
|
+
mutex = createMutex();
|
|
170
|
+
/**
|
|
171
|
+
* Set a value in the map.
|
|
172
|
+
*/
|
|
173
|
+
async set(key, value) {
|
|
174
|
+
await this.mutex.acquire();
|
|
175
|
+
try {
|
|
176
|
+
this.map.set(key, value);
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
this.mutex.release();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get a value from the map.
|
|
184
|
+
*/
|
|
185
|
+
get(key) {
|
|
186
|
+
return this.map.get(key);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check if a key exists.
|
|
190
|
+
*/
|
|
191
|
+
has(key) {
|
|
192
|
+
return this.map.has(key);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get all entries.
|
|
196
|
+
*/
|
|
197
|
+
entries() {
|
|
198
|
+
return this.map.entries();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get all values.
|
|
202
|
+
*/
|
|
203
|
+
values() {
|
|
204
|
+
return this.map.values();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get the current size.
|
|
208
|
+
*/
|
|
209
|
+
get size() {
|
|
210
|
+
return this.map.size;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized formatting utilities.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format a date as ISO date string (YYYY-MM-DD).
|
|
6
|
+
*/
|
|
7
|
+
export declare function formatDateISO(date: Date): string;
|
|
8
|
+
/**
|
|
9
|
+
* Format an ISO date string for display with locale formatting.
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatDateLocale(isoString: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Format a duration in milliseconds for human-readable display.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatDuration(ms: number): string;
|
|
16
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized formatting utilities.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format a date as ISO date string (YYYY-MM-DD).
|
|
6
|
+
*/
|
|
7
|
+
export function formatDateISO(date) {
|
|
8
|
+
return date.toISOString().split('T')[0];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Format an ISO date string for display with locale formatting.
|
|
12
|
+
*/
|
|
13
|
+
export function formatDateLocale(isoString) {
|
|
14
|
+
const date = new Date(isoString);
|
|
15
|
+
return date.toLocaleString(undefined, {
|
|
16
|
+
year: 'numeric',
|
|
17
|
+
month: 'short',
|
|
18
|
+
day: 'numeric',
|
|
19
|
+
hour: '2-digit',
|
|
20
|
+
minute: '2-digit',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Format a duration in milliseconds for human-readable display.
|
|
25
|
+
*/
|
|
26
|
+
export function formatDuration(ms) {
|
|
27
|
+
if (ms < 1000) {
|
|
28
|
+
return `${ms}ms`;
|
|
29
|
+
}
|
|
30
|
+
if (ms < 60000) {
|
|
31
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
32
|
+
}
|
|
33
|
+
const minutes = Math.floor(ms / 60000);
|
|
34
|
+
const seconds = Math.floor((ms % 60000) / 1000);
|
|
35
|
+
return `${minutes}m ${seconds}s`;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { formatDateISO, formatDateLocale, formatDuration } from './formatters.js';
|
|
2
|
+
export { sanitizeForPrompt, sanitizeObjectForPrompt, sanitizeToolForPrompt, createDataSection, hasInjectionPatterns, truncateForPrompt, type SanitizeResult, } from './sanitize.js';
|
|
3
|
+
export { withTimeout, withTimeoutResult, withTimeoutAll, withTimeoutRetry, createTimeoutAbortController, createDeadline, TimeoutError, DEFAULT_TIMEOUTS, type TimeoutConfig, } from './timeout.js';
|
|
4
|
+
export { parallelLimit, mapLimit, createSemaphore, createMutex, SafeAccumulator, SafeMap, type ParallelOptions, type ParallelResult, } from './concurrency.js';
|
|
5
|
+
export { parsePath, getValueAtPath, getValueBySegments, isValidPath, normalizePath, type ParseResult, } from './jsonpath.js';
|
|
6
|
+
export { escapeTableCell, escapeCodeBlock, escapeMermaid, mermaidLabel, validateJsonForCodeBlock, escapeInlineCode, escapeLinkTitle, escapeListItem, wrapTableCell, buildTable, type JsonCodeBlockOptions, type JsonCodeBlockResult, } from './markdown.js';
|
|
7
|
+
export { isLocalhost } from './network.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { formatDateISO, formatDateLocale, formatDuration } from './formatters.js';
|
|
2
|
+
export { sanitizeForPrompt, sanitizeObjectForPrompt, sanitizeToolForPrompt, createDataSection, hasInjectionPatterns, truncateForPrompt, } from './sanitize.js';
|
|
3
|
+
export { withTimeout, withTimeoutResult, withTimeoutAll, withTimeoutRetry, createTimeoutAbortController, createDeadline, TimeoutError, DEFAULT_TIMEOUTS, } from './timeout.js';
|
|
4
|
+
export { parallelLimit, mapLimit, createSemaphore, createMutex, SafeAccumulator, SafeMap, } from './concurrency.js';
|
|
5
|
+
export { parsePath, getValueAtPath, getValueBySegments, isValidPath, normalizePath, } from './jsonpath.js';
|
|
6
|
+
export { escapeTableCell, escapeCodeBlock, escapeMermaid, mermaidLabel, validateJsonForCodeBlock, escapeInlineCode, escapeLinkTitle, escapeListItem, wrapTableCell, buildTable, } from './markdown.js';
|
|
7
|
+
export { isLocalhost } from './network.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONPath parsing utilities.
|
|
3
|
+
*
|
|
4
|
+
* Supports a subset of JSONPath syntax for accessing nested values:
|
|
5
|
+
* - Dot notation: "foo.bar.baz"
|
|
6
|
+
* - Bracket notation: "foo['bar']" or "foo[\"bar\"]"
|
|
7
|
+
* - Array indices: "items[0]" or "items['0']"
|
|
8
|
+
* - Mixed: "foo.items[0].bar"
|
|
9
|
+
* - Escaped characters: "foo['bar.baz']" for keys containing dots
|
|
10
|
+
* - Special characters: "foo['key with spaces']" or "foo['key\"with\"quotes']"
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Token types for JSONPath parsing.
|
|
14
|
+
*/
|
|
15
|
+
type TokenType = 'property' | 'index' | 'bracket_property';
|
|
16
|
+
/**
|
|
17
|
+
* A parsed path segment.
|
|
18
|
+
*/
|
|
19
|
+
interface PathSegment {
|
|
20
|
+
type: TokenType;
|
|
21
|
+
value: string | number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Result of parsing a JSONPath expression.
|
|
25
|
+
*/
|
|
26
|
+
export interface ParseResult {
|
|
27
|
+
segments: PathSegment[];
|
|
28
|
+
error?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse a JSONPath expression into segments.
|
|
32
|
+
*
|
|
33
|
+
* @param path - The JSONPath expression to parse
|
|
34
|
+
* @returns ParseResult with segments or error
|
|
35
|
+
*/
|
|
36
|
+
export declare function parsePath(path: string): ParseResult;
|
|
37
|
+
/**
|
|
38
|
+
* Get a value from an object using a parsed path.
|
|
39
|
+
*
|
|
40
|
+
* @param obj - The object to access
|
|
41
|
+
* @param segments - The parsed path segments
|
|
42
|
+
* @returns The value at the path, or undefined if not found
|
|
43
|
+
*/
|
|
44
|
+
export declare function getValueBySegments(obj: unknown, segments: PathSegment[]): unknown;
|
|
45
|
+
/**
|
|
46
|
+
* Get a value from an object using a JSONPath expression.
|
|
47
|
+
*
|
|
48
|
+
* This is the main API function combining parsing and value retrieval.
|
|
49
|
+
*
|
|
50
|
+
* @param obj - The object to access
|
|
51
|
+
* @param path - The JSONPath expression
|
|
52
|
+
* @returns The value at the path, or undefined if not found or path is invalid
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // Simple paths
|
|
56
|
+
* getValueAtPath({ a: { b: 1 } }, 'a.b') // => 1
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* // Array access
|
|
60
|
+
* getValueAtPath({ items: [1, 2, 3] }, 'items[1]') // => 2
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // Keys with dots
|
|
64
|
+
* getValueAtPath({ 'key.with.dots': 42 }, "['key.with.dots']") // => 42
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // Keys with spaces
|
|
68
|
+
* getValueAtPath({ 'my key': 'value' }, "['my key']") // => 'value'
|
|
69
|
+
*/
|
|
70
|
+
export declare function getValueAtPath(obj: unknown, path: string): unknown;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a path is valid JSONPath syntax.
|
|
73
|
+
*
|
|
74
|
+
* @param path - The path to validate
|
|
75
|
+
* @returns True if the path is valid, false otherwise
|
|
76
|
+
*/
|
|
77
|
+
export declare function isValidPath(path: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Convert a JSONPath expression to a normalized form.
|
|
80
|
+
* Useful for comparing paths that may use different notations.
|
|
81
|
+
*
|
|
82
|
+
* @param path - The path to normalize
|
|
83
|
+
* @returns Normalized path string, or the original if parsing fails
|
|
84
|
+
*/
|
|
85
|
+
export declare function normalizePath(path: string): string;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=jsonpath.d.ts.map
|