@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,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiter Contract
|
|
3
|
+
*
|
|
4
|
+
* Token bucket rate limiting to prevent API limit violations and cost overruns.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export declare const RateLimiterConfigSchema: z.ZodObject<{
|
|
8
|
+
/** Maximum requests per minute */
|
|
9
|
+
requestsPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
/** Maximum tokens per minute (for LLM APIs) */
|
|
11
|
+
tokensPerMinute: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
/** Maximum queued requests waiting for capacity */
|
|
13
|
+
maxQueueSize: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
/** Maximum time to wait in queue (ms) */
|
|
15
|
+
queueTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
/** Burst allowance (extra capacity for bursts) */
|
|
17
|
+
burstMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
queueTimeoutMs: number;
|
|
20
|
+
requestsPerMinute: number;
|
|
21
|
+
burstMultiplier: number;
|
|
22
|
+
maxQueueSize: number;
|
|
23
|
+
tokensPerMinute?: number | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
queueTimeoutMs?: number | undefined;
|
|
26
|
+
requestsPerMinute?: number | undefined;
|
|
27
|
+
tokensPerMinute?: number | undefined;
|
|
28
|
+
burstMultiplier?: number | undefined;
|
|
29
|
+
maxQueueSize?: number | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export type RateLimiterConfig = z.infer<typeof RateLimiterConfigSchema>;
|
|
32
|
+
export declare const RateLimiterStatsSchema: z.ZodObject<{
|
|
33
|
+
/** Requests allowed in current window */
|
|
34
|
+
requestsAllowed: z.ZodNumber;
|
|
35
|
+
/** Requests rejected in current window */
|
|
36
|
+
requestsRejected: z.ZodNumber;
|
|
37
|
+
/** Current queue size */
|
|
38
|
+
queueSize: z.ZodNumber;
|
|
39
|
+
/** Tokens used in current window */
|
|
40
|
+
tokensUsed: z.ZodNumber;
|
|
41
|
+
/** Available capacity (requests) */
|
|
42
|
+
availableCapacity: z.ZodNumber;
|
|
43
|
+
/** Time until next refill (ms) */
|
|
44
|
+
nextRefillMs: z.ZodNumber;
|
|
45
|
+
/** Window start time */
|
|
46
|
+
windowStart: z.ZodString;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
windowStart: string;
|
|
49
|
+
queueSize: number;
|
|
50
|
+
tokensUsed: number;
|
|
51
|
+
requestsAllowed: number;
|
|
52
|
+
requestsRejected: number;
|
|
53
|
+
availableCapacity: number;
|
|
54
|
+
nextRefillMs: number;
|
|
55
|
+
}, {
|
|
56
|
+
windowStart: string;
|
|
57
|
+
queueSize: number;
|
|
58
|
+
tokensUsed: number;
|
|
59
|
+
requestsAllowed: number;
|
|
60
|
+
requestsRejected: number;
|
|
61
|
+
availableCapacity: number;
|
|
62
|
+
nextRefillMs: number;
|
|
63
|
+
}>;
|
|
64
|
+
export type RateLimiterStats = z.infer<typeof RateLimiterStatsSchema>;
|
|
65
|
+
export declare const RateLimiterAcquireResultSchema: z.ZodDiscriminatedUnion<"acquired", [z.ZodObject<{
|
|
66
|
+
acquired: z.ZodLiteral<true>;
|
|
67
|
+
waitedMs: z.ZodNumber;
|
|
68
|
+
}, "strip", z.ZodTypeAny, {
|
|
69
|
+
acquired: true;
|
|
70
|
+
waitedMs: number;
|
|
71
|
+
}, {
|
|
72
|
+
acquired: true;
|
|
73
|
+
waitedMs: number;
|
|
74
|
+
}>, z.ZodObject<{
|
|
75
|
+
acquired: z.ZodLiteral<false>;
|
|
76
|
+
reason: z.ZodEnum<["queue-full", "timeout", "limit-exceeded"]>;
|
|
77
|
+
retryAfterMs: z.ZodOptional<z.ZodNumber>;
|
|
78
|
+
}, "strip", z.ZodTypeAny, {
|
|
79
|
+
reason: "timeout" | "queue-full" | "limit-exceeded";
|
|
80
|
+
acquired: false;
|
|
81
|
+
retryAfterMs?: number | undefined;
|
|
82
|
+
}, {
|
|
83
|
+
reason: "timeout" | "queue-full" | "limit-exceeded";
|
|
84
|
+
acquired: false;
|
|
85
|
+
retryAfterMs?: number | undefined;
|
|
86
|
+
}>]>;
|
|
87
|
+
export type RateLimiterAcquireResult = z.infer<typeof RateLimiterAcquireResultSchema>;
|
|
88
|
+
export declare const RateLimiterErrorCodes: {
|
|
89
|
+
readonly RATE_LIMITED: "RATE_LIMITER_LIMITED";
|
|
90
|
+
readonly QUEUE_FULL: "RATE_LIMITER_QUEUE_FULL";
|
|
91
|
+
readonly TIMEOUT: "RATE_LIMITER_TIMEOUT";
|
|
92
|
+
};
|
|
93
|
+
export type RateLimiterErrorCode = (typeof RateLimiterErrorCodes)[keyof typeof RateLimiterErrorCodes];
|
|
94
|
+
export declare function validateRateLimiterConfig(data: unknown): RateLimiterConfig;
|
|
95
|
+
export declare function safeValidateRateLimiterConfig(data: unknown): {
|
|
96
|
+
success: true;
|
|
97
|
+
data: RateLimiterConfig;
|
|
98
|
+
} | {
|
|
99
|
+
success: false;
|
|
100
|
+
error: z.ZodError;
|
|
101
|
+
};
|
|
102
|
+
export declare function createDefaultRateLimiterConfig(): RateLimiterConfig;
|
|
103
|
+
export declare function createRateLimiterStats(): RateLimiterStats;
|
|
104
|
+
/**
|
|
105
|
+
* Default token window duration in milliseconds (1 minute)
|
|
106
|
+
* Used for per-minute rate limiting calculations
|
|
107
|
+
*/
|
|
108
|
+
export declare const DEFAULT_TOKEN_WINDOW_MS = 60000;
|
|
109
|
+
/**
|
|
110
|
+
* Default check interval in milliseconds
|
|
111
|
+
* How often to check rate limit status in queue operations
|
|
112
|
+
*/
|
|
113
|
+
export declare const DEFAULT_CHECK_INTERVAL_MS = 100;
|
|
114
|
+
/**
|
|
115
|
+
* Time multipliers for parsing time range strings
|
|
116
|
+
*/
|
|
117
|
+
export declare const TIME_MULTIPLIERS: Record<string, number>;
|
|
118
|
+
/**
|
|
119
|
+
* Default time range in milliseconds (1 hour)
|
|
120
|
+
*/
|
|
121
|
+
export declare const DEFAULT_TIME_RANGE_MS = 3600000;
|
|
122
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/resilience/v1/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,uBAAuB;IAClC,kCAAkC;;IAGlC,+CAA+C;;IAG/C,mDAAmD;;IAGnD,yCAAyC;;IAGzC,kDAAkD;;;;;;;;;;;;;;EAElD,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE,eAAO,MAAM,sBAAsB;IACjC,yCAAyC;;IAGzC,0CAA0C;;IAG1C,yBAAyB;;IAGzB,oCAAoC;;IAGpC,oCAAoC;;IAGpC,kCAAkC;;IAGlC,wBAAwB;;;;;;;;;;;;;;;;;;EAExB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;IAUzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAMtF,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAMrE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAE1E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,OAAO,GACZ;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAIpF;AAMD,wBAAgB,8BAA8B,IAAI,iBAAiB,CAElE;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAUzD;AAOD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiter Contract
|
|
3
|
+
*
|
|
4
|
+
* Token bucket rate limiting to prevent API limit violations and cost overruns.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Configuration
|
|
9
|
+
// ============================================================================
|
|
10
|
+
export const RateLimiterConfigSchema = z.object({
|
|
11
|
+
/** Maximum requests per minute */
|
|
12
|
+
requestsPerMinute: z.number().int().min(1).max(10000).default(60),
|
|
13
|
+
/** Maximum tokens per minute (for LLM APIs) */
|
|
14
|
+
tokensPerMinute: z.number().int().min(1000).max(10000000).optional(),
|
|
15
|
+
/** Maximum queued requests waiting for capacity */
|
|
16
|
+
maxQueueSize: z.number().int().min(0).max(1000).default(100),
|
|
17
|
+
/** Maximum time to wait in queue (ms) */
|
|
18
|
+
queueTimeoutMs: z.number().int().min(0).max(300000).default(30000),
|
|
19
|
+
/** Burst allowance (extra capacity for bursts) */
|
|
20
|
+
burstMultiplier: z.number().min(1).max(5).default(1.5),
|
|
21
|
+
});
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Stats
|
|
24
|
+
// ============================================================================
|
|
25
|
+
export const RateLimiterStatsSchema = z.object({
|
|
26
|
+
/** Requests allowed in current window */
|
|
27
|
+
requestsAllowed: z.number().int().min(0),
|
|
28
|
+
/** Requests rejected in current window */
|
|
29
|
+
requestsRejected: z.number().int().min(0),
|
|
30
|
+
/** Current queue size */
|
|
31
|
+
queueSize: z.number().int().min(0),
|
|
32
|
+
/** Tokens used in current window */
|
|
33
|
+
tokensUsed: z.number().int().min(0),
|
|
34
|
+
/** Available capacity (requests) */
|
|
35
|
+
availableCapacity: z.number().min(0),
|
|
36
|
+
/** Time until next refill (ms) */
|
|
37
|
+
nextRefillMs: z.number().int().min(0),
|
|
38
|
+
/** Window start time */
|
|
39
|
+
windowStart: z.string().datetime(),
|
|
40
|
+
});
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Acquire Result
|
|
43
|
+
// ============================================================================
|
|
44
|
+
export const RateLimiterAcquireResultSchema = z.discriminatedUnion('acquired', [
|
|
45
|
+
z.object({
|
|
46
|
+
acquired: z.literal(true),
|
|
47
|
+
waitedMs: z.number().int().min(0),
|
|
48
|
+
}),
|
|
49
|
+
z.object({
|
|
50
|
+
acquired: z.literal(false),
|
|
51
|
+
reason: z.enum(['queue-full', 'timeout', 'limit-exceeded']),
|
|
52
|
+
retryAfterMs: z.number().int().min(0).optional(),
|
|
53
|
+
}),
|
|
54
|
+
]);
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Error Codes
|
|
57
|
+
// ============================================================================
|
|
58
|
+
export const RateLimiterErrorCodes = {
|
|
59
|
+
RATE_LIMITED: 'RATE_LIMITER_LIMITED',
|
|
60
|
+
QUEUE_FULL: 'RATE_LIMITER_QUEUE_FULL',
|
|
61
|
+
TIMEOUT: 'RATE_LIMITER_TIMEOUT',
|
|
62
|
+
};
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// Validation Functions
|
|
65
|
+
// ============================================================================
|
|
66
|
+
export function validateRateLimiterConfig(data) {
|
|
67
|
+
return RateLimiterConfigSchema.parse(data);
|
|
68
|
+
}
|
|
69
|
+
export function safeValidateRateLimiterConfig(data) {
|
|
70
|
+
const result = RateLimiterConfigSchema.safeParse(data);
|
|
71
|
+
if (result.success)
|
|
72
|
+
return { success: true, data: result.data };
|
|
73
|
+
return { success: false, error: result.error };
|
|
74
|
+
}
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Factory Functions
|
|
77
|
+
// ============================================================================
|
|
78
|
+
export function createDefaultRateLimiterConfig() {
|
|
79
|
+
return RateLimiterConfigSchema.parse({});
|
|
80
|
+
}
|
|
81
|
+
export function createRateLimiterStats() {
|
|
82
|
+
return {
|
|
83
|
+
requestsAllowed: 0,
|
|
84
|
+
requestsRejected: 0,
|
|
85
|
+
queueSize: 0,
|
|
86
|
+
tokensUsed: 0,
|
|
87
|
+
availableCapacity: 60, // Default RPM
|
|
88
|
+
nextRefillMs: 0,
|
|
89
|
+
windowStart: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// ============================================================================
|
|
93
|
+
// Default Constants
|
|
94
|
+
// Exported for use by implementation code to avoid hardcoding
|
|
95
|
+
// ============================================================================
|
|
96
|
+
/**
|
|
97
|
+
* Default token window duration in milliseconds (1 minute)
|
|
98
|
+
* Used for per-minute rate limiting calculations
|
|
99
|
+
*/
|
|
100
|
+
export const DEFAULT_TOKEN_WINDOW_MS = 60000;
|
|
101
|
+
/**
|
|
102
|
+
* Default check interval in milliseconds
|
|
103
|
+
* How often to check rate limit status in queue operations
|
|
104
|
+
*/
|
|
105
|
+
export const DEFAULT_CHECK_INTERVAL_MS = 100;
|
|
106
|
+
/**
|
|
107
|
+
* Time multipliers for parsing time range strings
|
|
108
|
+
*/
|
|
109
|
+
export const TIME_MULTIPLIERS = {
|
|
110
|
+
s: 1000,
|
|
111
|
+
m: 60000,
|
|
112
|
+
h: 3600000,
|
|
113
|
+
d: 86400000,
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Default time range in milliseconds (1 hour)
|
|
117
|
+
*/
|
|
118
|
+
export const DEFAULT_TIME_RANGE_MS = 3600000;
|
|
119
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/resilience/v1/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,kCAAkC;IAClC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAEjE,+CAA+C;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAEpE,mDAAmD;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAE5D,yCAAyC;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAElE,kDAAkD;IAClD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CACvD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,yCAAyC;IACzC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,0CAA0C;IAC1C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzC,yBAAyB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,oCAAoC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC,oCAAoC;IACpC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpC,kCAAkC;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAErC,wBAAwB;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAIH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IAC7E,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAClC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC3D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACjD,CAAC;CACH,CAAC,CAAC;AAIH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY,EAAE,sBAAsB;IACpC,UAAU,EAAE,yBAAyB;IACrC,OAAO,EAAE,sBAAsB;CACvB,CAAC;AAKX,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,IAAa;IAEb,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,UAAU,8BAA8B;IAC5C,OAAO,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,EAAE,EAAE,cAAc;QACrC,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,8DAA8D;AAC9D,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,QAAQ;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Limits Contract
|
|
3
|
+
*
|
|
4
|
+
* Enforces limits on tokens, time, cost, and concurrency.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export declare const ResourceLimitsConfigSchema: z.ZodObject<{
|
|
8
|
+
/** Maximum tokens per request */
|
|
9
|
+
maxTokensPerRequest: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
/** Maximum tokens per session */
|
|
11
|
+
maxTokensPerSession: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
/** Maximum duration per operation in ms */
|
|
13
|
+
maxDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
/** Maximum cost per session in dollars */
|
|
15
|
+
maxCostPerSession: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
/** Maximum concurrent requests */
|
|
17
|
+
maxConcurrentRequests: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
/** Cost per 1K input tokens (for estimation) */
|
|
19
|
+
costPer1kInputTokens: z.ZodDefault<z.ZodNumber>;
|
|
20
|
+
/** Cost per 1K output tokens (for estimation) */
|
|
21
|
+
costPer1kOutputTokens: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
maxTokensPerRequest: number;
|
|
24
|
+
maxDurationMs: number;
|
|
25
|
+
maxTokensPerSession: number;
|
|
26
|
+
maxCostPerSession: number;
|
|
27
|
+
maxConcurrentRequests: number;
|
|
28
|
+
costPer1kInputTokens: number;
|
|
29
|
+
costPer1kOutputTokens: number;
|
|
30
|
+
}, {
|
|
31
|
+
maxTokensPerRequest?: number | undefined;
|
|
32
|
+
maxDurationMs?: number | undefined;
|
|
33
|
+
maxTokensPerSession?: number | undefined;
|
|
34
|
+
maxCostPerSession?: number | undefined;
|
|
35
|
+
maxConcurrentRequests?: number | undefined;
|
|
36
|
+
costPer1kInputTokens?: number | undefined;
|
|
37
|
+
costPer1kOutputTokens?: number | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export type ResourceLimitsConfig = z.infer<typeof ResourceLimitsConfigSchema>;
|
|
40
|
+
export declare const ResourceUsageSchema: z.ZodObject<{
|
|
41
|
+
/** Session identifier */
|
|
42
|
+
sessionId: z.ZodString;
|
|
43
|
+
/** Total input tokens used */
|
|
44
|
+
inputTokens: z.ZodNumber;
|
|
45
|
+
/** Total output tokens used */
|
|
46
|
+
outputTokens: z.ZodNumber;
|
|
47
|
+
/** Total requests made */
|
|
48
|
+
requestCount: z.ZodNumber;
|
|
49
|
+
/** Total duration in ms */
|
|
50
|
+
totalDurationMs: z.ZodNumber;
|
|
51
|
+
/** Estimated cost in dollars */
|
|
52
|
+
estimatedCost: z.ZodNumber;
|
|
53
|
+
/** Current concurrent requests */
|
|
54
|
+
concurrentRequests: z.ZodNumber;
|
|
55
|
+
/** First request timestamp */
|
|
56
|
+
startedAt: z.ZodString;
|
|
57
|
+
/** Last request timestamp */
|
|
58
|
+
lastRequestAt: z.ZodOptional<z.ZodString>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
sessionId: string;
|
|
61
|
+
totalDurationMs: number;
|
|
62
|
+
startedAt: string;
|
|
63
|
+
requestCount: number;
|
|
64
|
+
outputTokens: number;
|
|
65
|
+
inputTokens: number;
|
|
66
|
+
estimatedCost: number;
|
|
67
|
+
concurrentRequests: number;
|
|
68
|
+
lastRequestAt?: string | undefined;
|
|
69
|
+
}, {
|
|
70
|
+
sessionId: string;
|
|
71
|
+
totalDurationMs: number;
|
|
72
|
+
startedAt: string;
|
|
73
|
+
requestCount: number;
|
|
74
|
+
outputTokens: number;
|
|
75
|
+
inputTokens: number;
|
|
76
|
+
estimatedCost: number;
|
|
77
|
+
concurrentRequests: number;
|
|
78
|
+
lastRequestAt?: string | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
export type ResourceUsage = z.infer<typeof ResourceUsageSchema>;
|
|
81
|
+
export declare const ResourceCheckResultSchema: z.ZodDiscriminatedUnion<"allowed", [z.ZodObject<{
|
|
82
|
+
allowed: z.ZodLiteral<true>;
|
|
83
|
+
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
allowed: true;
|
|
85
|
+
}, {
|
|
86
|
+
allowed: true;
|
|
87
|
+
}>, z.ZodObject<{
|
|
88
|
+
allowed: z.ZodLiteral<false>;
|
|
89
|
+
reason: z.ZodString;
|
|
90
|
+
limitType: z.ZodEnum<["tokens-per-request", "tokens-per-session", "duration", "cost", "concurrency"]>;
|
|
91
|
+
current: z.ZodNumber;
|
|
92
|
+
max: z.ZodNumber;
|
|
93
|
+
retryAfterMs: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
max: number;
|
|
96
|
+
reason: string;
|
|
97
|
+
allowed: false;
|
|
98
|
+
limitType: "duration" | "tokens-per-request" | "tokens-per-session" | "cost" | "concurrency";
|
|
99
|
+
current: number;
|
|
100
|
+
retryAfterMs?: number | undefined;
|
|
101
|
+
}, {
|
|
102
|
+
max: number;
|
|
103
|
+
reason: string;
|
|
104
|
+
allowed: false;
|
|
105
|
+
limitType: "duration" | "tokens-per-request" | "tokens-per-session" | "cost" | "concurrency";
|
|
106
|
+
current: number;
|
|
107
|
+
retryAfterMs?: number | undefined;
|
|
108
|
+
}>]>;
|
|
109
|
+
export type ResourceCheckResult = z.infer<typeof ResourceCheckResultSchema>;
|
|
110
|
+
export declare const ResourceRequestInfoSchema: z.ZodObject<{
|
|
111
|
+
/** Estimated input tokens */
|
|
112
|
+
estimatedInputTokens: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
/** Estimated output tokens */
|
|
114
|
+
estimatedOutputTokens: z.ZodOptional<z.ZodNumber>;
|
|
115
|
+
/** Whether this is a new concurrent request */
|
|
116
|
+
isConcurrent: z.ZodDefault<z.ZodBoolean>;
|
|
117
|
+
}, "strip", z.ZodTypeAny, {
|
|
118
|
+
isConcurrent: boolean;
|
|
119
|
+
estimatedInputTokens?: number | undefined;
|
|
120
|
+
estimatedOutputTokens?: number | undefined;
|
|
121
|
+
}, {
|
|
122
|
+
estimatedInputTokens?: number | undefined;
|
|
123
|
+
estimatedOutputTokens?: number | undefined;
|
|
124
|
+
isConcurrent?: boolean | undefined;
|
|
125
|
+
}>;
|
|
126
|
+
export type ResourceRequestInfo = z.infer<typeof ResourceRequestInfoSchema>;
|
|
127
|
+
export declare const ResourceLimitsErrorCodes: {
|
|
128
|
+
readonly TOKENS_PER_REQUEST_EXCEEDED: "RESOURCE_TOKENS_PER_REQUEST_EXCEEDED";
|
|
129
|
+
readonly TOKENS_PER_SESSION_EXCEEDED: "RESOURCE_TOKENS_PER_SESSION_EXCEEDED";
|
|
130
|
+
readonly DURATION_EXCEEDED: "RESOURCE_DURATION_EXCEEDED";
|
|
131
|
+
readonly COST_EXCEEDED: "RESOURCE_COST_EXCEEDED";
|
|
132
|
+
readonly CONCURRENCY_EXCEEDED: "RESOURCE_CONCURRENCY_EXCEEDED";
|
|
133
|
+
};
|
|
134
|
+
export type ResourceLimitsErrorCode = (typeof ResourceLimitsErrorCodes)[keyof typeof ResourceLimitsErrorCodes];
|
|
135
|
+
export declare function validateResourceLimitsConfig(data: unknown): ResourceLimitsConfig;
|
|
136
|
+
export declare function safeValidateResourceLimitsConfig(data: unknown): {
|
|
137
|
+
success: true;
|
|
138
|
+
data: ResourceLimitsConfig;
|
|
139
|
+
} | {
|
|
140
|
+
success: false;
|
|
141
|
+
error: z.ZodError;
|
|
142
|
+
};
|
|
143
|
+
export declare function createDefaultResourceLimitsConfig(): ResourceLimitsConfig;
|
|
144
|
+
export declare function createResourceUsage(sessionId: string): ResourceUsage;
|
|
145
|
+
export declare function estimateCost(inputTokens: number, outputTokens: number, config: ResourceLimitsConfig): number;
|
|
146
|
+
//# sourceMappingURL=resource-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-limits.d.ts","sourceRoot":"","sources":["../../../src/resilience/v1/resource-limits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,0BAA0B;IACrC,iCAAiC;;IAGjC,iCAAiC;;IAGjC,2CAA2C;;IAG3C,0CAA0C;;IAG1C,kCAAkC;;IAGlC,gDAAgD;;IAGhD,iDAAiD;;;;;;;;;;;;;;;;;;EAEjD,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,eAAO,MAAM,mBAAmB;IAC9B,yBAAyB;;IAGzB,8BAA8B;;IAG9B,+BAA+B;;IAG/B,0BAA0B;;IAG1B,2BAA2B;;IAG3B,gCAAgC;;IAGhC,kCAAkC;;IAGlC,8BAA8B;;IAG9B,6BAA6B;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkBpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,yBAAyB;IACpC,6BAA6B;;IAG7B,8BAA8B;;IAG9B,+CAA+C;;;;;;;;;;EAE/C,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,wBAAwB;;;;;;CAM3B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAM3E,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAEhF;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,GACZ;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAIvF;AAMD,wBAAgB,iCAAiC,IAAI,oBAAoB,CAExE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAWpE;AAMD,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,oBAAoB,GAC3B,MAAM,CAIR"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Limits Contract
|
|
3
|
+
*
|
|
4
|
+
* Enforces limits on tokens, time, cost, and concurrency.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Configuration
|
|
9
|
+
// ============================================================================
|
|
10
|
+
export const ResourceLimitsConfigSchema = z.object({
|
|
11
|
+
/** Maximum tokens per request */
|
|
12
|
+
maxTokensPerRequest: z.number().int().min(100).max(1000000).default(100000),
|
|
13
|
+
/** Maximum tokens per session */
|
|
14
|
+
maxTokensPerSession: z.number().int().min(1000).max(10000000).default(1000000),
|
|
15
|
+
/** Maximum duration per operation in ms */
|
|
16
|
+
maxDurationMs: z.number().int().min(1000).max(3600000).default(300000), // 5 min
|
|
17
|
+
/** Maximum cost per session in dollars */
|
|
18
|
+
maxCostPerSession: z.number().min(0.01).max(1000).default(10),
|
|
19
|
+
/** Maximum concurrent requests */
|
|
20
|
+
maxConcurrentRequests: z.number().int().min(1).max(100).default(5),
|
|
21
|
+
/** Cost per 1K input tokens (for estimation) */
|
|
22
|
+
costPer1kInputTokens: z.number().min(0).default(0.003),
|
|
23
|
+
/** Cost per 1K output tokens (for estimation) */
|
|
24
|
+
costPer1kOutputTokens: z.number().min(0).default(0.015),
|
|
25
|
+
});
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Usage Tracking
|
|
28
|
+
// ============================================================================
|
|
29
|
+
export const ResourceUsageSchema = z.object({
|
|
30
|
+
/** Session identifier */
|
|
31
|
+
sessionId: z.string(),
|
|
32
|
+
/** Total input tokens used */
|
|
33
|
+
inputTokens: z.number().int().min(0),
|
|
34
|
+
/** Total output tokens used */
|
|
35
|
+
outputTokens: z.number().int().min(0),
|
|
36
|
+
/** Total requests made */
|
|
37
|
+
requestCount: z.number().int().min(0),
|
|
38
|
+
/** Total duration in ms */
|
|
39
|
+
totalDurationMs: z.number().int().min(0),
|
|
40
|
+
/** Estimated cost in dollars */
|
|
41
|
+
estimatedCost: z.number().min(0),
|
|
42
|
+
/** Current concurrent requests */
|
|
43
|
+
concurrentRequests: z.number().int().min(0),
|
|
44
|
+
/** First request timestamp */
|
|
45
|
+
startedAt: z.string().datetime(),
|
|
46
|
+
/** Last request timestamp */
|
|
47
|
+
lastRequestAt: z.string().datetime().optional(),
|
|
48
|
+
});
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Check Result
|
|
51
|
+
// ============================================================================
|
|
52
|
+
export const ResourceCheckResultSchema = z.discriminatedUnion('allowed', [
|
|
53
|
+
z.object({
|
|
54
|
+
allowed: z.literal(true),
|
|
55
|
+
}),
|
|
56
|
+
z.object({
|
|
57
|
+
allowed: z.literal(false),
|
|
58
|
+
reason: z.string(),
|
|
59
|
+
limitType: z.enum([
|
|
60
|
+
'tokens-per-request',
|
|
61
|
+
'tokens-per-session',
|
|
62
|
+
'duration',
|
|
63
|
+
'cost',
|
|
64
|
+
'concurrency',
|
|
65
|
+
]),
|
|
66
|
+
current: z.number(),
|
|
67
|
+
max: z.number(),
|
|
68
|
+
retryAfterMs: z.number().int().min(0).optional(),
|
|
69
|
+
}),
|
|
70
|
+
]);
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// Request Info (for checking before request)
|
|
73
|
+
// ============================================================================
|
|
74
|
+
export const ResourceRequestInfoSchema = z.object({
|
|
75
|
+
/** Estimated input tokens */
|
|
76
|
+
estimatedInputTokens: z.number().int().min(0).optional(),
|
|
77
|
+
/** Estimated output tokens */
|
|
78
|
+
estimatedOutputTokens: z.number().int().min(0).optional(),
|
|
79
|
+
/** Whether this is a new concurrent request */
|
|
80
|
+
isConcurrent: z.boolean().default(false),
|
|
81
|
+
});
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// Error Codes
|
|
84
|
+
// ============================================================================
|
|
85
|
+
export const ResourceLimitsErrorCodes = {
|
|
86
|
+
TOKENS_PER_REQUEST_EXCEEDED: 'RESOURCE_TOKENS_PER_REQUEST_EXCEEDED',
|
|
87
|
+
TOKENS_PER_SESSION_EXCEEDED: 'RESOURCE_TOKENS_PER_SESSION_EXCEEDED',
|
|
88
|
+
DURATION_EXCEEDED: 'RESOURCE_DURATION_EXCEEDED',
|
|
89
|
+
COST_EXCEEDED: 'RESOURCE_COST_EXCEEDED',
|
|
90
|
+
CONCURRENCY_EXCEEDED: 'RESOURCE_CONCURRENCY_EXCEEDED',
|
|
91
|
+
};
|
|
92
|
+
// ============================================================================
|
|
93
|
+
// Validation Functions
|
|
94
|
+
// ============================================================================
|
|
95
|
+
export function validateResourceLimitsConfig(data) {
|
|
96
|
+
return ResourceLimitsConfigSchema.parse(data);
|
|
97
|
+
}
|
|
98
|
+
export function safeValidateResourceLimitsConfig(data) {
|
|
99
|
+
const result = ResourceLimitsConfigSchema.safeParse(data);
|
|
100
|
+
if (result.success)
|
|
101
|
+
return { success: true, data: result.data };
|
|
102
|
+
return { success: false, error: result.error };
|
|
103
|
+
}
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Factory Functions
|
|
106
|
+
// ============================================================================
|
|
107
|
+
export function createDefaultResourceLimitsConfig() {
|
|
108
|
+
return ResourceLimitsConfigSchema.parse({});
|
|
109
|
+
}
|
|
110
|
+
export function createResourceUsage(sessionId) {
|
|
111
|
+
return {
|
|
112
|
+
sessionId,
|
|
113
|
+
inputTokens: 0,
|
|
114
|
+
outputTokens: 0,
|
|
115
|
+
requestCount: 0,
|
|
116
|
+
totalDurationMs: 0,
|
|
117
|
+
estimatedCost: 0,
|
|
118
|
+
concurrentRequests: 0,
|
|
119
|
+
startedAt: new Date().toISOString(),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// ============================================================================
|
|
123
|
+
// Utility Functions
|
|
124
|
+
// ============================================================================
|
|
125
|
+
export function estimateCost(inputTokens, outputTokens, config) {
|
|
126
|
+
const inputCost = (inputTokens / 1000) * config.costPer1kInputTokens;
|
|
127
|
+
const outputCost = (outputTokens / 1000) * config.costPer1kOutputTokens;
|
|
128
|
+
return Math.round((inputCost + outputCost) * 10000) / 10000; // Round to 4 decimals
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=resource-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-limits.js","sourceRoot":"","sources":["../../../src/resilience/v1/resource-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review Contracts v1
|
|
3
|
+
*
|
|
4
|
+
* AI-powered code review with focused analysis modes.
|
|
5
|
+
*/
|
|
6
|
+
export { ReviewFocusSchema, type ReviewFocus, ReviewRequestSchema, ReviewCommentSeveritySchema, ReviewCommentSchema, ReviewSummarySchema, ReviewResultSchema, type ReviewRequest, type ReviewCommentSeverity, type ReviewComment, type ReviewSummary, type ReviewResult, SarifRuleSchema, SarifLocationSchema, SarifResultSchema, SarifOutputSchema, type SarifRule, type SarifLocation, type SarifResult, type SarifOutput, ReviewErrorCode, validateReviewRequest, safeValidateReviewRequest, validateReviewResult, safeValidateReviewResult, validateReviewComment, validateSarifOutput, calculateHealthScore, SEVERITY_ORDER, compareCommentsBySeverity, sortCommentsBySeverity, createEmptyReviewSummary, createReviewSummary, } from './schema.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/review/v1/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,iBAAiB,EACjB,KAAK,WAAW,EAEhB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAEjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,eAAe,EAEf,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EAEnB,oBAAoB,EAEpB,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EAEtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review Contracts v1
|
|
3
|
+
*
|
|
4
|
+
* AI-powered code review with focused analysis modes.
|
|
5
|
+
*/
|
|
6
|
+
export {
|
|
7
|
+
// Focus Modes
|
|
8
|
+
ReviewFocusSchema,
|
|
9
|
+
// Request/Response
|
|
10
|
+
ReviewRequestSchema, ReviewCommentSeveritySchema, ReviewCommentSchema, ReviewSummarySchema, ReviewResultSchema,
|
|
11
|
+
// SARIF Output
|
|
12
|
+
SarifRuleSchema, SarifLocationSchema, SarifResultSchema, SarifOutputSchema,
|
|
13
|
+
// Error Codes
|
|
14
|
+
ReviewErrorCode,
|
|
15
|
+
// Validation
|
|
16
|
+
validateReviewRequest, safeValidateReviewRequest, validateReviewResult, safeValidateReviewResult, validateReviewComment, validateSarifOutput,
|
|
17
|
+
// Health Score (INV-REV-OUT-002)
|
|
18
|
+
calculateHealthScore,
|
|
19
|
+
// Severity Ordering (INV-REV-OUT-001)
|
|
20
|
+
SEVERITY_ORDER, compareCommentsBySeverity, sortCommentsBySeverity,
|
|
21
|
+
// Factory Functions
|
|
22
|
+
createEmptyReviewSummary, createReviewSummary, } from './schema.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/review/v1/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACL,cAAc;AACd,iBAAiB;AAEjB,mBAAmB;AACnB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB;AAMlB,eAAe;AACf,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB;AAKjB,cAAc;AACd,eAAe;AACf,aAAa;AACb,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB;AACnB,iCAAiC;AACjC,oBAAoB;AACpB,sCAAsC;AACtC,cAAc,EACd,yBAAyB,EACzB,sBAAsB;AACtB,oBAAoB;AACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|