@defai.digital/contracts 13.0.3
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/LICENSE +214 -0
- package/dist/ability/v1/index.d.ts +5 -0
- package/dist/ability/v1/index.d.ts.map +1 -0
- package/dist/ability/v1/index.js +5 -0
- package/dist/ability/v1/index.js.map +1 -0
- package/dist/ability/v1/schema.d.ts +288 -0
- package/dist/ability/v1/schema.d.ts.map +1 -0
- package/dist/ability/v1/schema.js +138 -0
- package/dist/ability/v1/schema.js.map +1 -0
- package/dist/agent/v1/index.d.ts +8 -0
- package/dist/agent/v1/index.d.ts.map +1 -0
- package/dist/agent/v1/index.js +31 -0
- package/dist/agent/v1/index.js.map +1 -0
- package/dist/agent/v1/schema.d.ts +4055 -0
- package/dist/agent/v1/schema.d.ts.map +1 -0
- package/dist/agent/v1/schema.js +970 -0
- package/dist/agent/v1/schema.js.map +1 -0
- package/dist/agent/v1/storage-port.d.ts +172 -0
- package/dist/agent/v1/storage-port.d.ts.map +1 -0
- package/dist/agent/v1/storage-port.js +10 -0
- package/dist/agent/v1/storage-port.js.map +1 -0
- package/dist/analysis/v1/index.d.ts +7 -0
- package/dist/analysis/v1/index.d.ts.map +1 -0
- package/dist/analysis/v1/index.js +21 -0
- package/dist/analysis/v1/index.js.map +1 -0
- package/dist/analysis/v1/schema.d.ts +348 -0
- package/dist/analysis/v1/schema.d.ts.map +1 -0
- package/dist/analysis/v1/schema.js +252 -0
- package/dist/analysis/v1/schema.js.map +1 -0
- package/dist/cli/v1/index.d.ts +8 -0
- package/dist/cli/v1/index.d.ts.map +1 -0
- package/dist/cli/v1/index.js +46 -0
- package/dist/cli/v1/index.js.map +1 -0
- package/dist/cli/v1/output.d.ts +347 -0
- package/dist/cli/v1/output.d.ts.map +1 -0
- package/dist/cli/v1/output.js +288 -0
- package/dist/cli/v1/output.js.map +1 -0
- package/dist/cli/v1/schema.d.ts +494 -0
- package/dist/cli/v1/schema.d.ts.map +1 -0
- package/dist/cli/v1/schema.js +342 -0
- package/dist/cli/v1/schema.js.map +1 -0
- package/dist/config/v1/config.d.ts +887 -0
- package/dist/config/v1/config.d.ts.map +1 -0
- package/dist/config/v1/config.js +348 -0
- package/dist/config/v1/config.js.map +1 -0
- package/dist/config/v1/errors.d.ts +84 -0
- package/dist/config/v1/errors.d.ts.map +1 -0
- package/dist/config/v1/errors.js +150 -0
- package/dist/config/v1/errors.js.map +1 -0
- package/dist/config/v1/events.d.ts +416 -0
- package/dist/config/v1/events.d.ts.map +1 -0
- package/dist/config/v1/events.js +204 -0
- package/dist/config/v1/events.js.map +1 -0
- package/dist/config/v1/index.d.ts +11 -0
- package/dist/config/v1/index.d.ts.map +1 -0
- package/dist/config/v1/index.js +49 -0
- package/dist/config/v1/index.js.map +1 -0
- package/dist/config/v1/operations.d.ts +293 -0
- package/dist/config/v1/operations.d.ts.map +1 -0
- package/dist/config/v1/operations.js +172 -0
- package/dist/config/v1/operations.js.map +1 -0
- package/dist/config/v1/provider-config.d.ts +124 -0
- package/dist/config/v1/provider-config.d.ts.map +1 -0
- package/dist/config/v1/provider-config.js +123 -0
- package/dist/config/v1/provider-config.js.map +1 -0
- package/dist/constants.d.ts +292 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +370 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/v1/index.d.ts +5 -0
- package/dist/context/v1/index.d.ts.map +1 -0
- package/dist/context/v1/index.js +13 -0
- package/dist/context/v1/index.js.map +1 -0
- package/dist/context/v1/schema.d.ts +289 -0
- package/dist/context/v1/schema.d.ts.map +1 -0
- package/dist/context/v1/schema.js +145 -0
- package/dist/context/v1/schema.js.map +1 -0
- package/dist/cross-cutting/v1/dead-letter.d.ts +305 -0
- package/dist/cross-cutting/v1/dead-letter.d.ts.map +1 -0
- package/dist/cross-cutting/v1/dead-letter.js +172 -0
- package/dist/cross-cutting/v1/dead-letter.js.map +1 -0
- package/dist/cross-cutting/v1/idempotency.d.ts +222 -0
- package/dist/cross-cutting/v1/idempotency.d.ts.map +1 -0
- package/dist/cross-cutting/v1/idempotency.js +170 -0
- package/dist/cross-cutting/v1/idempotency.js.map +1 -0
- package/dist/cross-cutting/v1/index.d.ts +14 -0
- package/dist/cross-cutting/v1/index.d.ts.map +1 -0
- package/dist/cross-cutting/v1/index.js +18 -0
- package/dist/cross-cutting/v1/index.js.map +1 -0
- package/dist/cross-cutting/v1/retention.d.ts +347 -0
- package/dist/cross-cutting/v1/retention.d.ts.map +1 -0
- package/dist/cross-cutting/v1/retention.js +178 -0
- package/dist/cross-cutting/v1/retention.js.map +1 -0
- package/dist/cross-cutting/v1/saga.d.ts +358 -0
- package/dist/cross-cutting/v1/saga.d.ts.map +1 -0
- package/dist/cross-cutting/v1/saga.js +219 -0
- package/dist/cross-cutting/v1/saga.js.map +1 -0
- package/dist/design/v1/index.d.ts +5 -0
- package/dist/design/v1/index.d.ts.map +1 -0
- package/dist/design/v1/index.js +5 -0
- package/dist/design/v1/index.js.map +1 -0
- package/dist/design/v1/schema.d.ts +748 -0
- package/dist/design/v1/schema.d.ts.map +1 -0
- package/dist/design/v1/schema.js +316 -0
- package/dist/design/v1/schema.js.map +1 -0
- package/dist/discussion/v1/index.d.ts +10 -0
- package/dist/discussion/v1/index.d.ts.map +1 -0
- package/dist/discussion/v1/index.js +21 -0
- package/dist/discussion/v1/index.js.map +1 -0
- package/dist/discussion/v1/schema.d.ts +1186 -0
- package/dist/discussion/v1/schema.d.ts.map +1 -0
- package/dist/discussion/v1/schema.js +560 -0
- package/dist/discussion/v1/schema.js.map +1 -0
- package/dist/file-system/v1/index.d.ts +7 -0
- package/dist/file-system/v1/index.d.ts.map +1 -0
- package/dist/file-system/v1/index.js +7 -0
- package/dist/file-system/v1/index.js.map +1 -0
- package/dist/file-system/v1/schema.d.ts +644 -0
- package/dist/file-system/v1/schema.d.ts.map +1 -0
- package/dist/file-system/v1/schema.js +278 -0
- package/dist/file-system/v1/schema.js.map +1 -0
- package/dist/guard/v1/index.d.ts +9 -0
- package/dist/guard/v1/index.d.ts.map +1 -0
- package/dist/guard/v1/index.js +10 -0
- package/dist/guard/v1/index.js.map +1 -0
- package/dist/guard/v1/schema.d.ts +308 -0
- package/dist/guard/v1/schema.d.ts.map +1 -0
- package/dist/guard/v1/schema.js +267 -0
- package/dist/guard/v1/schema.js.map +1 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/dist/iterate/v1/index.d.ts +5 -0
- package/dist/iterate/v1/index.d.ts.map +1 -0
- package/dist/iterate/v1/index.js +13 -0
- package/dist/iterate/v1/index.js.map +1 -0
- package/dist/iterate/v1/schema.d.ts +693 -0
- package/dist/iterate/v1/schema.d.ts.map +1 -0
- package/dist/iterate/v1/schema.js +244 -0
- package/dist/iterate/v1/schema.js.map +1 -0
- package/dist/mcp/v1/index.d.ts +8 -0
- package/dist/mcp/v1/index.d.ts.map +1 -0
- package/dist/mcp/v1/index.js +20 -0
- package/dist/mcp/v1/index.js.map +1 -0
- package/dist/mcp/v1/prompts/index.d.ts +5 -0
- package/dist/mcp/v1/prompts/index.d.ts.map +1 -0
- package/dist/mcp/v1/prompts/index.js +5 -0
- package/dist/mcp/v1/prompts/index.js.map +1 -0
- package/dist/mcp/v1/prompts/schema.d.ts +266 -0
- package/dist/mcp/v1/prompts/schema.d.ts.map +1 -0
- package/dist/mcp/v1/prompts/schema.js +138 -0
- package/dist/mcp/v1/prompts/schema.js.map +1 -0
- package/dist/mcp/v1/rate-limit.schema.d.ts +175 -0
- package/dist/mcp/v1/rate-limit.schema.d.ts.map +1 -0
- package/dist/mcp/v1/rate-limit.schema.js +164 -0
- package/dist/mcp/v1/rate-limit.schema.js.map +1 -0
- package/dist/mcp/v1/resources/index.d.ts +5 -0
- package/dist/mcp/v1/resources/index.d.ts.map +1 -0
- package/dist/mcp/v1/resources/index.js +5 -0
- package/dist/mcp/v1/resources/index.js.map +1 -0
- package/dist/mcp/v1/resources/schema.d.ts +169 -0
- package/dist/mcp/v1/resources/schema.d.ts.map +1 -0
- package/dist/mcp/v1/resources/schema.js +118 -0
- package/dist/mcp/v1/resources/schema.js.map +1 -0
- package/dist/mcp/v1/runtime/cache.d.ts +204 -0
- package/dist/mcp/v1/runtime/cache.d.ts.map +1 -0
- package/dist/mcp/v1/runtime/cache.js +92 -0
- package/dist/mcp/v1/runtime/cache.js.map +1 -0
- package/dist/mcp/v1/runtime/index.d.ts +5 -0
- package/dist/mcp/v1/runtime/index.d.ts.map +1 -0
- package/dist/mcp/v1/runtime/index.js +9 -0
- package/dist/mcp/v1/runtime/index.js.map +1 -0
- package/dist/mcp/v1/runtime/limits.d.ts +113 -0
- package/dist/mcp/v1/runtime/limits.d.ts.map +1 -0
- package/dist/mcp/v1/runtime/limits.js +95 -0
- package/dist/mcp/v1/runtime/limits.js.map +1 -0
- package/dist/mcp/v1/runtime/response.d.ts +467 -0
- package/dist/mcp/v1/runtime/response.d.ts.map +1 -0
- package/dist/mcp/v1/runtime/response.js +130 -0
- package/dist/mcp/v1/runtime/response.js.map +1 -0
- package/dist/mcp/v1/runtime/timeout.d.ts +116 -0
- package/dist/mcp/v1/runtime/timeout.d.ts.map +1 -0
- package/dist/mcp/v1/runtime/timeout.js +116 -0
- package/dist/mcp/v1/runtime/timeout.js.map +1 -0
- package/dist/mcp/v1/schema.d.ts +171 -0
- package/dist/mcp/v1/schema.d.ts.map +1 -0
- package/dist/mcp/v1/schema.js +97 -0
- package/dist/mcp/v1/schema.js.map +1 -0
- package/dist/mcp/v1/tools/agent.d.ts +485 -0
- package/dist/mcp/v1/tools/agent.d.ts.map +1 -0
- package/dist/mcp/v1/tools/agent.js +264 -0
- package/dist/mcp/v1/tools/agent.js.map +1 -0
- package/dist/mcp/v1/tools/guard.d.ts +243 -0
- package/dist/mcp/v1/tools/guard.d.ts.map +1 -0
- package/dist/mcp/v1/tools/guard.js +136 -0
- package/dist/mcp/v1/tools/guard.js.map +1 -0
- package/dist/mcp/v1/tools/index.d.ts +15 -0
- package/dist/mcp/v1/tools/index.d.ts.map +1 -0
- package/dist/mcp/v1/tools/index.js +22 -0
- package/dist/mcp/v1/tools/index.js.map +1 -0
- package/dist/mcp/v1/tools/memory.d.ts +569 -0
- package/dist/mcp/v1/tools/memory.d.ts.map +1 -0
- package/dist/mcp/v1/tools/memory.js +319 -0
- package/dist/mcp/v1/tools/memory.js.map +1 -0
- package/dist/mcp/v1/tools/session.d.ts +545 -0
- package/dist/mcp/v1/tools/session.d.ts.map +1 -0
- package/dist/mcp/v1/tools/session.js +309 -0
- package/dist/mcp/v1/tools/session.js.map +1 -0
- package/dist/mcp/v1/tools/tool-list-schemas.d.ts +354 -0
- package/dist/mcp/v1/tools/tool-list-schemas.d.ts.map +1 -0
- package/dist/mcp/v1/tools/tool-list-schemas.js +140 -0
- package/dist/mcp/v1/tools/tool-list-schemas.js.map +1 -0
- package/dist/mcp/v1/tools/trace.d.ts +282 -0
- package/dist/mcp/v1/tools/trace.d.ts.map +1 -0
- package/dist/mcp/v1/tools/trace.js +94 -0
- package/dist/mcp/v1/tools/trace.js.map +1 -0
- package/dist/mcp/v1/tools/workflow.d.ts +146 -0
- package/dist/mcp/v1/tools/workflow.d.ts.map +1 -0
- package/dist/mcp/v1/tools/workflow.js +68 -0
- package/dist/mcp/v1/tools/workflow.js.map +1 -0
- package/dist/mcp/v1/trace/index.d.ts +5 -0
- package/dist/mcp/v1/trace/index.d.ts.map +1 -0
- package/dist/mcp/v1/trace/index.js +5 -0
- package/dist/mcp/v1/trace/index.js.map +1 -0
- package/dist/mcp/v1/trace/tool-trace.d.ts +107 -0
- package/dist/mcp/v1/trace/tool-trace.d.ts.map +1 -0
- package/dist/mcp/v1/trace/tool-trace.js +91 -0
- package/dist/mcp/v1/trace/tool-trace.js.map +1 -0
- package/dist/memory/v1/index.d.ts +2 -0
- package/dist/memory/v1/index.d.ts.map +1 -0
- package/dist/memory/v1/index.js +2 -0
- package/dist/memory/v1/index.js.map +1 -0
- package/dist/memory/v1/schema.d.ts +188 -0
- package/dist/memory/v1/schema.d.ts.map +1 -0
- package/dist/memory/v1/schema.js +108 -0
- package/dist/memory/v1/schema.js.map +1 -0
- package/dist/ml-lifecycle/v1/index.d.ts +12 -0
- package/dist/ml-lifecycle/v1/index.d.ts.map +1 -0
- package/dist/ml-lifecycle/v1/index.js +12 -0
- package/dist/ml-lifecycle/v1/index.js.map +1 -0
- package/dist/ml-lifecycle/v1/schema.d.ts +1207 -0
- package/dist/ml-lifecycle/v1/schema.d.ts.map +1 -0
- package/dist/ml-lifecycle/v1/schema.js +481 -0
- package/dist/ml-lifecycle/v1/schema.js.map +1 -0
- package/dist/orchestration/v1/index.d.ts +5 -0
- package/dist/orchestration/v1/index.d.ts.map +1 -0
- package/dist/orchestration/v1/index.js +23 -0
- package/dist/orchestration/v1/index.js.map +1 -0
- package/dist/orchestration/v1/schema.d.ts +1384 -0
- package/dist/orchestration/v1/schema.d.ts.map +1 -0
- package/dist/orchestration/v1/schema.js +394 -0
- package/dist/orchestration/v1/schema.js.map +1 -0
- package/dist/provider/v1/circuit-breaker.d.ts +151 -0
- package/dist/provider/v1/circuit-breaker.d.ts.map +1 -0
- package/dist/provider/v1/circuit-breaker.js +119 -0
- package/dist/provider/v1/circuit-breaker.js.map +1 -0
- package/dist/provider/v1/health.d.ts +246 -0
- package/dist/provider/v1/health.d.ts.map +1 -0
- package/dist/provider/v1/health.js +190 -0
- package/dist/provider/v1/health.js.map +1 -0
- package/dist/provider/v1/index.d.ts +13 -0
- package/dist/provider/v1/index.d.ts.map +1 -0
- package/dist/provider/v1/index.js +17 -0
- package/dist/provider/v1/index.js.map +1 -0
- package/dist/provider/v1/port.d.ts +237 -0
- package/dist/provider/v1/port.d.ts.map +1 -0
- package/dist/provider/v1/port.js +113 -0
- package/dist/provider/v1/port.js.map +1 -0
- package/dist/provider/v1/rate-limit.d.ts +214 -0
- package/dist/provider/v1/rate-limit.d.ts.map +1 -0
- package/dist/provider/v1/rate-limit.js +165 -0
- package/dist/provider/v1/rate-limit.js.map +1 -0
- package/dist/resilience/v1/circuit-breaker.d.ts +135 -0
- package/dist/resilience/v1/circuit-breaker.d.ts.map +1 -0
- package/dist/resilience/v1/circuit-breaker.js +105 -0
- package/dist/resilience/v1/circuit-breaker.js.map +1 -0
- package/dist/resilience/v1/index.d.ts +17 -0
- package/dist/resilience/v1/index.d.ts.map +1 -0
- package/dist/resilience/v1/index.js +17 -0
- package/dist/resilience/v1/index.js.map +1 -0
- package/dist/resilience/v1/loop-guard.d.ts +123 -0
- package/dist/resilience/v1/loop-guard.d.ts.map +1 -0
- package/dist/resilience/v1/loop-guard.js +96 -0
- package/dist/resilience/v1/loop-guard.js.map +1 -0
- package/dist/resilience/v1/metrics.d.ts +323 -0
- package/dist/resilience/v1/metrics.d.ts.map +1 -0
- package/dist/resilience/v1/metrics.js +183 -0
- package/dist/resilience/v1/metrics.js.map +1 -0
- package/dist/resilience/v1/rate-limiter.d.ts +122 -0
- package/dist/resilience/v1/rate-limiter.d.ts.map +1 -0
- package/dist/resilience/v1/rate-limiter.js +119 -0
- package/dist/resilience/v1/rate-limiter.js.map +1 -0
- package/dist/resilience/v1/resource-limits.d.ts +146 -0
- package/dist/resilience/v1/resource-limits.d.ts.map +1 -0
- package/dist/resilience/v1/resource-limits.js +130 -0
- package/dist/resilience/v1/resource-limits.js.map +1 -0
- package/dist/review/v1/index.d.ts +7 -0
- package/dist/review/v1/index.d.ts.map +1 -0
- package/dist/review/v1/index.js +23 -0
- package/dist/review/v1/index.js.map +1 -0
- package/dist/review/v1/schema.d.ts +1284 -0
- package/dist/review/v1/schema.d.ts.map +1 -0
- package/dist/review/v1/schema.js +423 -0
- package/dist/review/v1/schema.js.map +1 -0
- package/dist/routing/v1/index.d.ts +2 -0
- package/dist/routing/v1/index.d.ts.map +1 -0
- package/dist/routing/v1/index.js +2 -0
- package/dist/routing/v1/index.js.map +1 -0
- package/dist/routing/v1/schema.d.ts +315 -0
- package/dist/routing/v1/schema.d.ts.map +1 -0
- package/dist/routing/v1/schema.js +103 -0
- package/dist/routing/v1/schema.js.map +1 -0
- package/dist/scaffold/v1/index.d.ts +7 -0
- package/dist/scaffold/v1/index.d.ts.map +1 -0
- package/dist/scaffold/v1/index.js +7 -0
- package/dist/scaffold/v1/index.js.map +1 -0
- package/dist/scaffold/v1/schema.d.ts +351 -0
- package/dist/scaffold/v1/schema.d.ts.map +1 -0
- package/dist/scaffold/v1/schema.js +238 -0
- package/dist/scaffold/v1/schema.js.map +1 -0
- package/dist/session/v1/index.d.ts +7 -0
- package/dist/session/v1/index.d.ts.map +1 -0
- package/dist/session/v1/index.js +23 -0
- package/dist/session/v1/index.js.map +1 -0
- package/dist/session/v1/schema.d.ts +1156 -0
- package/dist/session/v1/schema.d.ts.map +1 -0
- package/dist/session/v1/schema.js +315 -0
- package/dist/session/v1/schema.js.map +1 -0
- package/dist/storage/v1/index.d.ts +9 -0
- package/dist/storage/v1/index.d.ts.map +1 -0
- package/dist/storage/v1/index.js +21 -0
- package/dist/storage/v1/index.js.map +1 -0
- package/dist/storage/v1/schema.d.ts +411 -0
- package/dist/storage/v1/schema.d.ts.map +1 -0
- package/dist/storage/v1/schema.js +167 -0
- package/dist/storage/v1/schema.js.map +1 -0
- package/dist/telemetry/v1/index.d.ts +5 -0
- package/dist/telemetry/v1/index.d.ts.map +1 -0
- package/dist/telemetry/v1/index.js +5 -0
- package/dist/telemetry/v1/index.js.map +1 -0
- package/dist/telemetry/v1/schema.d.ts +747 -0
- package/dist/telemetry/v1/schema.d.ts.map +1 -0
- package/dist/telemetry/v1/schema.js +300 -0
- package/dist/telemetry/v1/schema.js.map +1 -0
- package/dist/token-budget/v1/index.d.ts +7 -0
- package/dist/token-budget/v1/index.d.ts.map +1 -0
- package/dist/token-budget/v1/index.js +25 -0
- package/dist/token-budget/v1/index.js.map +1 -0
- package/dist/token-budget/v1/schema.d.ts +588 -0
- package/dist/token-budget/v1/schema.d.ts.map +1 -0
- package/dist/token-budget/v1/schema.js +239 -0
- package/dist/token-budget/v1/schema.js.map +1 -0
- package/dist/trace/v1/index.d.ts +2 -0
- package/dist/trace/v1/index.d.ts.map +1 -0
- package/dist/trace/v1/index.js +4 -0
- package/dist/trace/v1/index.js.map +1 -0
- package/dist/trace/v1/schema.d.ts +531 -0
- package/dist/trace/v1/schema.d.ts.map +1 -0
- package/dist/trace/v1/schema.js +243 -0
- package/dist/trace/v1/schema.js.map +1 -0
- package/dist/workflow/v1/index.d.ts +3 -0
- package/dist/workflow/v1/index.d.ts.map +1 -0
- package/dist/workflow/v1/index.js +8 -0
- package/dist/workflow/v1/index.js.map +1 -0
- package/dist/workflow/v1/schema.d.ts +267 -0
- package/dist/workflow/v1/schema.d.ts.map +1 -0
- package/dist/workflow/v1/schema.js +95 -0
- package/dist/workflow/v1/schema.js.map +1 -0
- package/dist/workflow/v1/step-guard.d.ts +571 -0
- package/dist/workflow/v1/step-guard.d.ts.map +1 -0
- package/dist/workflow/v1/step-guard.js +305 -0
- package/dist/workflow/v1/step-guard.js.map +1 -0
- package/dist/workflow-templates/v1/index.d.ts +8 -0
- package/dist/workflow-templates/v1/index.d.ts.map +1 -0
- package/dist/workflow-templates/v1/index.js +8 -0
- package/dist/workflow-templates/v1/index.js.map +1 -0
- package/dist/workflow-templates/v1/schema.d.ts +714 -0
- package/dist/workflow-templates/v1/schema.d.ts.map +1 -0
- package/dist/workflow-templates/v1/schema.js +168 -0
- package/dist/workflow-templates/v1/schema.js.map +1 -0
- package/package.json +142 -0
- package/src/guard/v1/policy.schema.json +56 -0
- package/src/mcp/v1/tools.schema.json +108 -0
- package/src/memory/v1/event.schema.json +136 -0
- package/src/routing/v1/decision.schema.json +155 -0
- package/src/trace/v1/event.schema.json +197 -0
- package/src/workflow/v1/workflow.schema.json +142 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Prompt Contracts
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for MCP prompts (user-controlled templates).
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Prompt Argument Schema
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Prompt argument definition
|
|
12
|
+
*/
|
|
13
|
+
export const PromptArgumentSchema = z.object({
|
|
14
|
+
/** Argument name */
|
|
15
|
+
name: z.string().min(1),
|
|
16
|
+
/** Description of the argument */
|
|
17
|
+
description: z.string().optional(),
|
|
18
|
+
/** Whether the argument is required */
|
|
19
|
+
required: z.boolean().optional(),
|
|
20
|
+
});
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Prompt Definition Schema
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* MCP Prompt definition
|
|
26
|
+
*/
|
|
27
|
+
export const McpPromptSchema = z.object({
|
|
28
|
+
/** Unique prompt name */
|
|
29
|
+
name: z.string().min(1),
|
|
30
|
+
/** Description of what the prompt does */
|
|
31
|
+
description: z.string().optional(),
|
|
32
|
+
/** Arguments the prompt accepts */
|
|
33
|
+
arguments: z.array(PromptArgumentSchema).optional(),
|
|
34
|
+
});
|
|
35
|
+
// ============================================================================
|
|
36
|
+
// Prompt Message Schema
|
|
37
|
+
// ============================================================================
|
|
38
|
+
/**
|
|
39
|
+
* Message role
|
|
40
|
+
*/
|
|
41
|
+
export const PromptRoleSchema = z.enum(['user', 'assistant']);
|
|
42
|
+
/**
|
|
43
|
+
* Message content
|
|
44
|
+
*/
|
|
45
|
+
export const PromptContentSchema = z.object({
|
|
46
|
+
type: z.literal('text'),
|
|
47
|
+
text: z.string(),
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* Prompt message
|
|
51
|
+
*/
|
|
52
|
+
export const PromptMessageSchema = z.object({
|
|
53
|
+
role: PromptRoleSchema,
|
|
54
|
+
content: PromptContentSchema,
|
|
55
|
+
});
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Prompt List Response
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Response for prompts/list method
|
|
61
|
+
*/
|
|
62
|
+
export const PromptListResponseSchema = z.object({
|
|
63
|
+
prompts: z.array(McpPromptSchema),
|
|
64
|
+
});
|
|
65
|
+
// ============================================================================
|
|
66
|
+
// Get Prompt Response
|
|
67
|
+
// ============================================================================
|
|
68
|
+
/**
|
|
69
|
+
* Response for prompts/get method
|
|
70
|
+
*/
|
|
71
|
+
export const GetPromptResponseSchema = z.object({
|
|
72
|
+
description: z.string().optional(),
|
|
73
|
+
messages: z.array(PromptMessageSchema),
|
|
74
|
+
});
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Prompt Error Codes
|
|
77
|
+
// ============================================================================
|
|
78
|
+
/**
|
|
79
|
+
* Prompt-specific error codes
|
|
80
|
+
*/
|
|
81
|
+
export const PromptErrorCode = {
|
|
82
|
+
PROMPT_NOT_FOUND: 'PROMPT_NOT_FOUND',
|
|
83
|
+
MISSING_REQUIRED_ARGUMENT: 'MISSING_REQUIRED_ARGUMENT',
|
|
84
|
+
INVALID_ARGUMENT: 'INVALID_ARGUMENT',
|
|
85
|
+
};
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// Validation Functions
|
|
88
|
+
// ============================================================================
|
|
89
|
+
/**
|
|
90
|
+
* Validates prompt definition
|
|
91
|
+
*/
|
|
92
|
+
export function validatePrompt(data) {
|
|
93
|
+
return McpPromptSchema.parse(data);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validates prompt list response
|
|
97
|
+
*/
|
|
98
|
+
export function validatePromptListResponse(data) {
|
|
99
|
+
return PromptListResponseSchema.parse(data);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Validates get prompt response
|
|
103
|
+
*/
|
|
104
|
+
export function validateGetPromptResponse(data) {
|
|
105
|
+
return GetPromptResponseSchema.parse(data);
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Helper Functions
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Creates a prompt definition
|
|
112
|
+
*/
|
|
113
|
+
export function createPrompt(name, description, args) {
|
|
114
|
+
return {
|
|
115
|
+
name,
|
|
116
|
+
description,
|
|
117
|
+
arguments: args,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Creates a prompt message
|
|
122
|
+
*/
|
|
123
|
+
export function createPromptMessage(role, text) {
|
|
124
|
+
return {
|
|
125
|
+
role,
|
|
126
|
+
content: { type: 'text', text },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Creates a get prompt response
|
|
131
|
+
*/
|
|
132
|
+
export function createGetPromptResponse(messages, description) {
|
|
133
|
+
return {
|
|
134
|
+
description,
|
|
135
|
+
messages,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/mcp/v1/prompts/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Rate Limiting Contract
|
|
3
|
+
*
|
|
4
|
+
* Defines rate limiting schemas for MCP tools to prevent resource exhaustion
|
|
5
|
+
* from runaway agent loops or excessive tool calls.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-RL-001: Rate limits are enforced per tool
|
|
9
|
+
* - INV-RL-002: Exceeded limits return RATE_LIMITED error with retryAfter
|
|
10
|
+
* - INV-RL-003: Limits are configurable without code changes
|
|
11
|
+
* - INV-RL-004: Read tools have higher limits than mutation tools
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
/**
|
|
15
|
+
* Tool category for rate limiting purposes
|
|
16
|
+
* Different categories have different default limits
|
|
17
|
+
*/
|
|
18
|
+
export declare const ToolCategorySchema: z.ZodEnum<["execution", "mutation", "read"]>;
|
|
19
|
+
export type ToolCategory = z.infer<typeof ToolCategorySchema>;
|
|
20
|
+
/**
|
|
21
|
+
* Rate limit configuration for a single tool
|
|
22
|
+
*/
|
|
23
|
+
export declare const RateLimitConfigSchema: z.ZodObject<{
|
|
24
|
+
/** Requests per minute allowed */
|
|
25
|
+
rpm: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
/** Burst size (max requests in short window) */
|
|
27
|
+
burst: z.ZodDefault<z.ZodNumber>;
|
|
28
|
+
/** Whether rate limiting is enabled for this tool */
|
|
29
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
rpm: number;
|
|
33
|
+
burst: number;
|
|
34
|
+
}, {
|
|
35
|
+
enabled?: boolean | undefined;
|
|
36
|
+
rpm?: number | undefined;
|
|
37
|
+
burst?: number | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* Rate limit state for tracking usage
|
|
42
|
+
*/
|
|
43
|
+
export declare const RateLimitStateSchema: z.ZodObject<{
|
|
44
|
+
/** Tool name */
|
|
45
|
+
toolName: z.ZodString;
|
|
46
|
+
/** Current request count in window */
|
|
47
|
+
requestCount: z.ZodNumber;
|
|
48
|
+
/** Window start timestamp (ISO string) */
|
|
49
|
+
windowStart: z.ZodString;
|
|
50
|
+
/** Tokens available for burst */
|
|
51
|
+
burstTokens: z.ZodNumber;
|
|
52
|
+
/** Last request timestamp */
|
|
53
|
+
lastRequest: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
toolName: string;
|
|
56
|
+
requestCount: number;
|
|
57
|
+
windowStart: string;
|
|
58
|
+
burstTokens: number;
|
|
59
|
+
lastRequest?: string | undefined;
|
|
60
|
+
}, {
|
|
61
|
+
toolName: string;
|
|
62
|
+
requestCount: number;
|
|
63
|
+
windowStart: string;
|
|
64
|
+
burstTokens: number;
|
|
65
|
+
lastRequest?: string | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
export type RateLimitState = z.infer<typeof RateLimitStateSchema>;
|
|
68
|
+
/**
|
|
69
|
+
* Rate limit check result
|
|
70
|
+
*/
|
|
71
|
+
export declare const RateLimitResultSchema: z.ZodObject<{
|
|
72
|
+
/** Whether the request is allowed */
|
|
73
|
+
allowed: z.ZodBoolean;
|
|
74
|
+
/** Remaining requests in current window */
|
|
75
|
+
remaining: z.ZodNumber;
|
|
76
|
+
/** Seconds until rate limit resets */
|
|
77
|
+
resetIn: z.ZodNumber;
|
|
78
|
+
/** Seconds to wait before retrying (if not allowed) */
|
|
79
|
+
retryAfter: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
/** Current limit configuration */
|
|
81
|
+
limit: z.ZodObject<{
|
|
82
|
+
/** Requests per minute allowed */
|
|
83
|
+
rpm: z.ZodDefault<z.ZodNumber>;
|
|
84
|
+
/** Burst size (max requests in short window) */
|
|
85
|
+
burst: z.ZodDefault<z.ZodNumber>;
|
|
86
|
+
/** Whether rate limiting is enabled for this tool */
|
|
87
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
rpm: number;
|
|
91
|
+
burst: number;
|
|
92
|
+
}, {
|
|
93
|
+
enabled?: boolean | undefined;
|
|
94
|
+
rpm?: number | undefined;
|
|
95
|
+
burst?: number | undefined;
|
|
96
|
+
}>;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
limit: {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
rpm: number;
|
|
101
|
+
burst: number;
|
|
102
|
+
};
|
|
103
|
+
allowed: boolean;
|
|
104
|
+
remaining: number;
|
|
105
|
+
resetIn: number;
|
|
106
|
+
retryAfter?: number | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
limit: {
|
|
109
|
+
enabled?: boolean | undefined;
|
|
110
|
+
rpm?: number | undefined;
|
|
111
|
+
burst?: number | undefined;
|
|
112
|
+
};
|
|
113
|
+
allowed: boolean;
|
|
114
|
+
remaining: number;
|
|
115
|
+
resetIn: number;
|
|
116
|
+
retryAfter?: number | undefined;
|
|
117
|
+
}>;
|
|
118
|
+
export type RateLimitResult = z.infer<typeof RateLimitResultSchema>;
|
|
119
|
+
/**
|
|
120
|
+
* Rate limit error response
|
|
121
|
+
* INV-RL-002: Exceeded limits return RATE_LIMITED error with retryAfter
|
|
122
|
+
*/
|
|
123
|
+
export declare const RateLimitErrorSchema: z.ZodObject<{
|
|
124
|
+
code: z.ZodLiteral<"RATE_LIMITED">;
|
|
125
|
+
message: z.ZodString;
|
|
126
|
+
toolName: z.ZodString;
|
|
127
|
+
retryAfter: z.ZodNumber;
|
|
128
|
+
limit: z.ZodNumber;
|
|
129
|
+
windowSeconds: z.ZodNumber;
|
|
130
|
+
}, "strip", z.ZodTypeAny, {
|
|
131
|
+
code: "RATE_LIMITED";
|
|
132
|
+
message: string;
|
|
133
|
+
toolName: string;
|
|
134
|
+
limit: number;
|
|
135
|
+
retryAfter: number;
|
|
136
|
+
windowSeconds: number;
|
|
137
|
+
}, {
|
|
138
|
+
code: "RATE_LIMITED";
|
|
139
|
+
message: string;
|
|
140
|
+
toolName: string;
|
|
141
|
+
limit: number;
|
|
142
|
+
retryAfter: number;
|
|
143
|
+
windowSeconds: number;
|
|
144
|
+
}>;
|
|
145
|
+
export type RateLimitError = z.infer<typeof RateLimitErrorSchema>;
|
|
146
|
+
/**
|
|
147
|
+
* Default rate limits by tool category
|
|
148
|
+
* INV-RL-004: Read tools have higher limits than mutation tools
|
|
149
|
+
*/
|
|
150
|
+
export declare const DEFAULT_RATE_LIMITS: Record<ToolCategory, RateLimitConfig>;
|
|
151
|
+
/**
|
|
152
|
+
* Tool to category mapping
|
|
153
|
+
*/
|
|
154
|
+
export declare const TOOL_CATEGORIES: Record<string, ToolCategory>;
|
|
155
|
+
/**
|
|
156
|
+
* Gets the category for a tool
|
|
157
|
+
*/
|
|
158
|
+
export declare function getToolCategory(toolName: string): ToolCategory;
|
|
159
|
+
/**
|
|
160
|
+
* Gets the default rate limit for a tool based on its category
|
|
161
|
+
*/
|
|
162
|
+
export declare function getDefaultRateLimit(toolName: string): RateLimitConfig;
|
|
163
|
+
/**
|
|
164
|
+
* Creates a rate limit error response
|
|
165
|
+
*/
|
|
166
|
+
export declare function createRateLimitError(toolName: string, retryAfter: number, limit: number): RateLimitError;
|
|
167
|
+
/**
|
|
168
|
+
* Validates rate limit config
|
|
169
|
+
*/
|
|
170
|
+
export declare function validateRateLimitConfig(data: unknown): RateLimitConfig;
|
|
171
|
+
/**
|
|
172
|
+
* Safely validates rate limit config
|
|
173
|
+
*/
|
|
174
|
+
export declare function safeValidateRateLimitConfig(data: unknown): z.SafeParseReturnType<unknown, RateLimitConfig>;
|
|
175
|
+
//# sourceMappingURL=rate-limit.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.schema.d.ts","sourceRoot":"","sources":["../../../src/mcp/v1/rate-limit.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,8CAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,kCAAkC;;IAGlC,gDAAgD;;IAGhD,qDAAqD;;;;;;;;;;EAErD,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B,gBAAgB;;IAGhB,sCAAsC;;IAGtC,0CAA0C;;IAG1C,iCAAiC;;IAGjC,6BAA6B;;;;;;;;;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,qCAAqC;;IAGrC,2CAA2C;;IAG3C,sCAAsC;;IAGtC,uDAAuD;;IAGvD,kCAAkC;;QAlDlC,kCAAkC;;QAGlC,gDAAgD;;QAGhD,qDAAqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CrD,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAIrE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuCxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAGrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,cAAc,CAShB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEtE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GACZ,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAEjD"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Rate Limiting Contract
|
|
3
|
+
*
|
|
4
|
+
* Defines rate limiting schemas for MCP tools to prevent resource exhaustion
|
|
5
|
+
* from runaway agent loops or excessive tool calls.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-RL-001: Rate limits are enforced per tool
|
|
9
|
+
* - INV-RL-002: Exceeded limits return RATE_LIMITED error with retryAfter
|
|
10
|
+
* - INV-RL-003: Limits are configurable without code changes
|
|
11
|
+
* - INV-RL-004: Read tools have higher limits than mutation tools
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
/**
|
|
15
|
+
* Tool category for rate limiting purposes
|
|
16
|
+
* Different categories have different default limits
|
|
17
|
+
*/
|
|
18
|
+
export const ToolCategorySchema = z.enum([
|
|
19
|
+
'execution', // agent_run, workflow_run - most restricted
|
|
20
|
+
'mutation', // memory_store, session_create - moderate
|
|
21
|
+
'read', // memory_retrieve, agent_list - least restricted
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* Rate limit configuration for a single tool
|
|
25
|
+
*/
|
|
26
|
+
export const RateLimitConfigSchema = z.object({
|
|
27
|
+
/** Requests per minute allowed */
|
|
28
|
+
rpm: z.number().int().min(1).max(10000).default(100),
|
|
29
|
+
/** Burst size (max requests in short window) */
|
|
30
|
+
burst: z.number().int().min(1).max(1000).default(10),
|
|
31
|
+
/** Whether rate limiting is enabled for this tool */
|
|
32
|
+
enabled: z.boolean().default(true),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Rate limit state for tracking usage
|
|
36
|
+
*/
|
|
37
|
+
export const RateLimitStateSchema = z.object({
|
|
38
|
+
/** Tool name */
|
|
39
|
+
toolName: z.string(),
|
|
40
|
+
/** Current request count in window */
|
|
41
|
+
requestCount: z.number().int().min(0),
|
|
42
|
+
/** Window start timestamp (ISO string) */
|
|
43
|
+
windowStart: z.string().datetime(),
|
|
44
|
+
/** Tokens available for burst */
|
|
45
|
+
burstTokens: z.number().int().min(0),
|
|
46
|
+
/** Last request timestamp */
|
|
47
|
+
lastRequest: z.string().datetime().optional(),
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* Rate limit check result
|
|
51
|
+
*/
|
|
52
|
+
export const RateLimitResultSchema = z.object({
|
|
53
|
+
/** Whether the request is allowed */
|
|
54
|
+
allowed: z.boolean(),
|
|
55
|
+
/** Remaining requests in current window */
|
|
56
|
+
remaining: z.number().int().min(0),
|
|
57
|
+
/** Seconds until rate limit resets */
|
|
58
|
+
resetIn: z.number().int().min(0),
|
|
59
|
+
/** Seconds to wait before retrying (if not allowed) */
|
|
60
|
+
retryAfter: z.number().int().min(0).optional(),
|
|
61
|
+
/** Current limit configuration */
|
|
62
|
+
limit: RateLimitConfigSchema,
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Rate limit error response
|
|
66
|
+
* INV-RL-002: Exceeded limits return RATE_LIMITED error with retryAfter
|
|
67
|
+
*/
|
|
68
|
+
export const RateLimitErrorSchema = z.object({
|
|
69
|
+
code: z.literal('RATE_LIMITED'),
|
|
70
|
+
message: z.string(),
|
|
71
|
+
toolName: z.string(),
|
|
72
|
+
retryAfter: z.number().int().min(0),
|
|
73
|
+
limit: z.number().int(),
|
|
74
|
+
windowSeconds: z.number().int(),
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* Default rate limits by tool category
|
|
78
|
+
* INV-RL-004: Read tools have higher limits than mutation tools
|
|
79
|
+
*/
|
|
80
|
+
export const DEFAULT_RATE_LIMITS = {
|
|
81
|
+
execution: { rpm: 30, burst: 5, enabled: true },
|
|
82
|
+
mutation: { rpm: 100, burst: 20, enabled: true },
|
|
83
|
+
read: { rpm: 200, burst: 50, enabled: true },
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Tool to category mapping
|
|
87
|
+
*/
|
|
88
|
+
export const TOOL_CATEGORIES = {
|
|
89
|
+
// Execution tools - most restricted
|
|
90
|
+
agent_run: 'execution',
|
|
91
|
+
workflow_run: 'execution',
|
|
92
|
+
// Mutation tools - moderate limits
|
|
93
|
+
memory_store: 'mutation',
|
|
94
|
+
memory_delete: 'mutation',
|
|
95
|
+
session_create: 'mutation',
|
|
96
|
+
session_complete: 'mutation',
|
|
97
|
+
session_join: 'mutation',
|
|
98
|
+
session_leave: 'mutation',
|
|
99
|
+
session_fail: 'mutation',
|
|
100
|
+
agent_register: 'mutation',
|
|
101
|
+
agent_remove: 'mutation',
|
|
102
|
+
config_set: 'mutation',
|
|
103
|
+
guard_apply: 'mutation',
|
|
104
|
+
// Read tools - highest limits
|
|
105
|
+
memory_retrieve: 'read',
|
|
106
|
+
memory_search: 'read',
|
|
107
|
+
memory_list: 'read',
|
|
108
|
+
agent_list: 'read',
|
|
109
|
+
agent_get: 'read',
|
|
110
|
+
session_status: 'read',
|
|
111
|
+
session_list: 'read',
|
|
112
|
+
workflow_list: 'read',
|
|
113
|
+
workflow_describe: 'read',
|
|
114
|
+
trace_list: 'read',
|
|
115
|
+
trace_get: 'read',
|
|
116
|
+
trace_analyze: 'read',
|
|
117
|
+
guard_check: 'read',
|
|
118
|
+
guard_list: 'read',
|
|
119
|
+
config_get: 'read',
|
|
120
|
+
config_show: 'read',
|
|
121
|
+
ability_list: 'read',
|
|
122
|
+
ability_inject: 'read',
|
|
123
|
+
review_analyze: 'read',
|
|
124
|
+
review_list: 'read',
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Gets the category for a tool
|
|
128
|
+
*/
|
|
129
|
+
export function getToolCategory(toolName) {
|
|
130
|
+
return TOOL_CATEGORIES[toolName] ?? 'read';
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Gets the default rate limit for a tool based on its category
|
|
134
|
+
*/
|
|
135
|
+
export function getDefaultRateLimit(toolName) {
|
|
136
|
+
const category = getToolCategory(toolName);
|
|
137
|
+
return { ...DEFAULT_RATE_LIMITS[category] };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Creates a rate limit error response
|
|
141
|
+
*/
|
|
142
|
+
export function createRateLimitError(toolName, retryAfter, limit) {
|
|
143
|
+
return {
|
|
144
|
+
code: 'RATE_LIMITED',
|
|
145
|
+
message: `Rate limit exceeded for tool "${toolName}". Retry after ${retryAfter} seconds.`,
|
|
146
|
+
toolName,
|
|
147
|
+
retryAfter,
|
|
148
|
+
limit,
|
|
149
|
+
windowSeconds: 60,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validates rate limit config
|
|
154
|
+
*/
|
|
155
|
+
export function validateRateLimitConfig(data) {
|
|
156
|
+
return RateLimitConfigSchema.parse(data);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Safely validates rate limit config
|
|
160
|
+
*/
|
|
161
|
+
export function safeValidateRateLimitConfig(data) {
|
|
162
|
+
return RateLimitConfigSchema.safeParse(data);
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=rate-limit.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.schema.js","sourceRoot":"","sources":["../../../src/mcp/v1/rate-limit.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource Contracts Index
|
|
3
|
+
*/
|
|
4
|
+
export { McpResourceSchema, ResourceListResponseSchema, ResourceContentSchema, ResourceReadResponseSchema, ResourceErrorCode, validateResource, validateResourceListResponse, validateResourceReadResponse, createResource, createResourceContent, type McpResource, type ResourceListResponse, type ResourceContent, type ResourceReadResponse, } from './schema.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/v1/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource Contracts Index
|
|
3
|
+
*/
|
|
4
|
+
export { McpResourceSchema, ResourceListResponseSchema, ResourceContentSchema, ResourceReadResponseSchema, ResourceErrorCode, validateResource, validateResourceListResponse, validateResourceReadResponse, createResource, createResourceContent, } from './schema.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/v1/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,qBAAqB,GAKtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource Contracts
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for MCP resources (application-controlled, read-only data).
|
|
5
|
+
*
|
|
6
|
+
* Invariants:
|
|
7
|
+
* - INV-MCP-RES-001: Resources are read-only
|
|
8
|
+
* - INV-MCP-RES-002: URI patterns follow RFC 3986
|
|
9
|
+
* - INV-MCP-RES-003: Content returned as JSON text
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
/**
|
|
13
|
+
* MCP Resource definition
|
|
14
|
+
*/
|
|
15
|
+
export declare const McpResourceSchema: z.ZodObject<{
|
|
16
|
+
/** Unique resource identifier (URI format) */
|
|
17
|
+
uri: z.ZodString;
|
|
18
|
+
/** Human-readable name */
|
|
19
|
+
name: z.ZodString;
|
|
20
|
+
/** Description of the resource */
|
|
21
|
+
description: z.ZodOptional<z.ZodString>;
|
|
22
|
+
/** MIME type of resource content */
|
|
23
|
+
mimeType: z.ZodDefault<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
name: string;
|
|
26
|
+
uri: string;
|
|
27
|
+
mimeType: string;
|
|
28
|
+
description?: string | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
name: string;
|
|
31
|
+
uri: string;
|
|
32
|
+
description?: string | undefined;
|
|
33
|
+
mimeType?: string | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export type McpResource = z.infer<typeof McpResourceSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Response for resources/list method
|
|
38
|
+
*/
|
|
39
|
+
export declare const ResourceListResponseSchema: z.ZodObject<{
|
|
40
|
+
resources: z.ZodArray<z.ZodObject<{
|
|
41
|
+
/** Unique resource identifier (URI format) */
|
|
42
|
+
uri: z.ZodString;
|
|
43
|
+
/** Human-readable name */
|
|
44
|
+
name: z.ZodString;
|
|
45
|
+
/** Description of the resource */
|
|
46
|
+
description: z.ZodOptional<z.ZodString>;
|
|
47
|
+
/** MIME type of resource content */
|
|
48
|
+
mimeType: z.ZodDefault<z.ZodString>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
name: string;
|
|
51
|
+
uri: string;
|
|
52
|
+
mimeType: string;
|
|
53
|
+
description?: string | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
name: string;
|
|
56
|
+
uri: string;
|
|
57
|
+
description?: string | undefined;
|
|
58
|
+
mimeType?: string | undefined;
|
|
59
|
+
}>, "many">;
|
|
60
|
+
}, "strip", z.ZodTypeAny, {
|
|
61
|
+
resources: {
|
|
62
|
+
name: string;
|
|
63
|
+
uri: string;
|
|
64
|
+
mimeType: string;
|
|
65
|
+
description?: string | undefined;
|
|
66
|
+
}[];
|
|
67
|
+
}, {
|
|
68
|
+
resources: {
|
|
69
|
+
name: string;
|
|
70
|
+
uri: string;
|
|
71
|
+
description?: string | undefined;
|
|
72
|
+
mimeType?: string | undefined;
|
|
73
|
+
}[];
|
|
74
|
+
}>;
|
|
75
|
+
export type ResourceListResponse = z.infer<typeof ResourceListResponseSchema>;
|
|
76
|
+
/**
|
|
77
|
+
* Content item returned when reading a resource
|
|
78
|
+
*/
|
|
79
|
+
export declare const ResourceContentSchema: z.ZodObject<{
|
|
80
|
+
/** URI of the resource */
|
|
81
|
+
uri: z.ZodString;
|
|
82
|
+
/** MIME type of the content */
|
|
83
|
+
mimeType: z.ZodString;
|
|
84
|
+
/** Text content (for text-based resources) */
|
|
85
|
+
text: z.ZodOptional<z.ZodString>;
|
|
86
|
+
/** Base64-encoded binary content */
|
|
87
|
+
blob: z.ZodOptional<z.ZodString>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
uri: string;
|
|
90
|
+
mimeType: string;
|
|
91
|
+
text?: string | undefined;
|
|
92
|
+
blob?: string | undefined;
|
|
93
|
+
}, {
|
|
94
|
+
uri: string;
|
|
95
|
+
mimeType: string;
|
|
96
|
+
text?: string | undefined;
|
|
97
|
+
blob?: string | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
export type ResourceContent = z.infer<typeof ResourceContentSchema>;
|
|
100
|
+
/**
|
|
101
|
+
* Response for resources/read method
|
|
102
|
+
*/
|
|
103
|
+
export declare const ResourceReadResponseSchema: z.ZodObject<{
|
|
104
|
+
contents: z.ZodArray<z.ZodObject<{
|
|
105
|
+
/** URI of the resource */
|
|
106
|
+
uri: z.ZodString;
|
|
107
|
+
/** MIME type of the content */
|
|
108
|
+
mimeType: z.ZodString;
|
|
109
|
+
/** Text content (for text-based resources) */
|
|
110
|
+
text: z.ZodOptional<z.ZodString>;
|
|
111
|
+
/** Base64-encoded binary content */
|
|
112
|
+
blob: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, "strip", z.ZodTypeAny, {
|
|
114
|
+
uri: string;
|
|
115
|
+
mimeType: string;
|
|
116
|
+
text?: string | undefined;
|
|
117
|
+
blob?: string | undefined;
|
|
118
|
+
}, {
|
|
119
|
+
uri: string;
|
|
120
|
+
mimeType: string;
|
|
121
|
+
text?: string | undefined;
|
|
122
|
+
blob?: string | undefined;
|
|
123
|
+
}>, "many">;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
contents: {
|
|
126
|
+
uri: string;
|
|
127
|
+
mimeType: string;
|
|
128
|
+
text?: string | undefined;
|
|
129
|
+
blob?: string | undefined;
|
|
130
|
+
}[];
|
|
131
|
+
}, {
|
|
132
|
+
contents: {
|
|
133
|
+
uri: string;
|
|
134
|
+
mimeType: string;
|
|
135
|
+
text?: string | undefined;
|
|
136
|
+
blob?: string | undefined;
|
|
137
|
+
}[];
|
|
138
|
+
}>;
|
|
139
|
+
export type ResourceReadResponse = z.infer<typeof ResourceReadResponseSchema>;
|
|
140
|
+
/**
|
|
141
|
+
* Resource-specific error codes
|
|
142
|
+
*/
|
|
143
|
+
export declare const ResourceErrorCode: {
|
|
144
|
+
readonly RESOURCE_NOT_FOUND: "RESOURCE_NOT_FOUND";
|
|
145
|
+
readonly INVALID_URI: "INVALID_URI";
|
|
146
|
+
readonly READ_FAILED: "READ_FAILED";
|
|
147
|
+
};
|
|
148
|
+
export type ResourceErrorCode = (typeof ResourceErrorCode)[keyof typeof ResourceErrorCode];
|
|
149
|
+
/**
|
|
150
|
+
* Validates resource definition
|
|
151
|
+
*/
|
|
152
|
+
export declare function validateResource(data: unknown): McpResource;
|
|
153
|
+
/**
|
|
154
|
+
* Validates resource list response
|
|
155
|
+
*/
|
|
156
|
+
export declare function validateResourceListResponse(data: unknown): ResourceListResponse;
|
|
157
|
+
/**
|
|
158
|
+
* Validates resource read response
|
|
159
|
+
*/
|
|
160
|
+
export declare function validateResourceReadResponse(data: unknown): ResourceReadResponse;
|
|
161
|
+
/**
|
|
162
|
+
* Creates a resource definition
|
|
163
|
+
*/
|
|
164
|
+
export declare function createResource(uri: string, name: string, description?: string, mimeType?: string): McpResource;
|
|
165
|
+
/**
|
|
166
|
+
* Creates resource content
|
|
167
|
+
*/
|
|
168
|
+
export declare function createResourceContent(uri: string, content: unknown, mimeType?: string): ResourceContent;
|
|
169
|
+
//# sourceMappingURL=schema.d.ts.map
|