@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,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Port - Interface for LLM Provider Access
|
|
3
|
+
*
|
|
4
|
+
* This defines the contract that provider adapters implement.
|
|
5
|
+
* Application layers (CLI, MCP Server) should depend on these interfaces,
|
|
6
|
+
* not on the concrete adapter implementations.
|
|
7
|
+
*
|
|
8
|
+
* Following Ports & Adapters (Hexagonal Architecture) pattern.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
/**
|
|
12
|
+
* Message in a provider request
|
|
13
|
+
*/
|
|
14
|
+
export declare const ProviderMessageSchema: z.ZodObject<{
|
|
15
|
+
role: z.ZodEnum<["system", "user", "assistant"]>;
|
|
16
|
+
content: z.ZodString;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
role: "system" | "user" | "assistant";
|
|
19
|
+
content: string;
|
|
20
|
+
}, {
|
|
21
|
+
role: "system" | "user" | "assistant";
|
|
22
|
+
content: string;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Provider request schema
|
|
26
|
+
*/
|
|
27
|
+
export declare const ProviderRequestSchema: z.ZodObject<{
|
|
28
|
+
requestId: z.ZodString;
|
|
29
|
+
model: z.ZodString;
|
|
30
|
+
messages: z.ZodArray<z.ZodObject<{
|
|
31
|
+
role: z.ZodEnum<["system", "user", "assistant"]>;
|
|
32
|
+
content: z.ZodString;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
role: "system" | "user" | "assistant";
|
|
35
|
+
content: string;
|
|
36
|
+
}, {
|
|
37
|
+
role: "system" | "user" | "assistant";
|
|
38
|
+
content: string;
|
|
39
|
+
}>, "many">;
|
|
40
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
requestId: string;
|
|
45
|
+
messages: {
|
|
46
|
+
role: "system" | "user" | "assistant";
|
|
47
|
+
content: string;
|
|
48
|
+
}[];
|
|
49
|
+
model: string;
|
|
50
|
+
maxTokens?: number | undefined;
|
|
51
|
+
systemPrompt?: string | undefined;
|
|
52
|
+
temperature?: number | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
requestId: string;
|
|
55
|
+
messages: {
|
|
56
|
+
role: "system" | "user" | "assistant";
|
|
57
|
+
content: string;
|
|
58
|
+
}[];
|
|
59
|
+
model: string;
|
|
60
|
+
maxTokens?: number | undefined;
|
|
61
|
+
systemPrompt?: string | undefined;
|
|
62
|
+
temperature?: number | undefined;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Provider response schema
|
|
66
|
+
*/
|
|
67
|
+
export declare const ProviderResponseSchema: z.ZodObject<{
|
|
68
|
+
requestId: z.ZodString;
|
|
69
|
+
success: z.ZodBoolean;
|
|
70
|
+
content: z.ZodOptional<z.ZodString>;
|
|
71
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
72
|
+
code: z.ZodString;
|
|
73
|
+
message: z.ZodString;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
code: string;
|
|
76
|
+
message: string;
|
|
77
|
+
}, {
|
|
78
|
+
code: string;
|
|
79
|
+
message: string;
|
|
80
|
+
}>>;
|
|
81
|
+
usage: z.ZodOptional<z.ZodObject<{
|
|
82
|
+
promptTokens: z.ZodNumber;
|
|
83
|
+
completionTokens: z.ZodNumber;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
promptTokens: number;
|
|
86
|
+
completionTokens: number;
|
|
87
|
+
}, {
|
|
88
|
+
promptTokens: number;
|
|
89
|
+
completionTokens: number;
|
|
90
|
+
}>>;
|
|
91
|
+
model: z.ZodOptional<z.ZodString>;
|
|
92
|
+
finishReason: z.ZodOptional<z.ZodEnum<["stop", "length", "error"]>>;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
success: boolean;
|
|
95
|
+
requestId: string;
|
|
96
|
+
error?: {
|
|
97
|
+
code: string;
|
|
98
|
+
message: string;
|
|
99
|
+
} | undefined;
|
|
100
|
+
content?: string | undefined;
|
|
101
|
+
model?: string | undefined;
|
|
102
|
+
usage?: {
|
|
103
|
+
promptTokens: number;
|
|
104
|
+
completionTokens: number;
|
|
105
|
+
} | undefined;
|
|
106
|
+
finishReason?: "length" | "error" | "stop" | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
success: boolean;
|
|
109
|
+
requestId: string;
|
|
110
|
+
error?: {
|
|
111
|
+
code: string;
|
|
112
|
+
message: string;
|
|
113
|
+
} | undefined;
|
|
114
|
+
content?: string | undefined;
|
|
115
|
+
model?: string | undefined;
|
|
116
|
+
usage?: {
|
|
117
|
+
promptTokens: number;
|
|
118
|
+
completionTokens: number;
|
|
119
|
+
} | undefined;
|
|
120
|
+
finishReason?: "length" | "error" | "stop" | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
/**
|
|
123
|
+
* Model info schema
|
|
124
|
+
*/
|
|
125
|
+
export declare const ModelInfoSchema: z.ZodObject<{
|
|
126
|
+
modelId: z.ZodString;
|
|
127
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
128
|
+
contextLength: z.ZodOptional<z.ZodNumber>;
|
|
129
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
131
|
+
}, "strip", z.ZodTypeAny, {
|
|
132
|
+
modelId: string;
|
|
133
|
+
displayName?: string | undefined;
|
|
134
|
+
capabilities?: string[] | undefined;
|
|
135
|
+
contextLength?: number | undefined;
|
|
136
|
+
isDefault?: boolean | undefined;
|
|
137
|
+
}, {
|
|
138
|
+
modelId: string;
|
|
139
|
+
displayName?: string | undefined;
|
|
140
|
+
capabilities?: string[] | undefined;
|
|
141
|
+
contextLength?: number | undefined;
|
|
142
|
+
isDefault?: boolean | undefined;
|
|
143
|
+
}>;
|
|
144
|
+
export type ProviderMessage = z.infer<typeof ProviderMessageSchema>;
|
|
145
|
+
export type ProviderRequest = z.infer<typeof ProviderRequestSchema>;
|
|
146
|
+
export type ProviderResponse = z.infer<typeof ProviderResponseSchema>;
|
|
147
|
+
export type ModelInfo = z.infer<typeof ModelInfoSchema>;
|
|
148
|
+
/**
|
|
149
|
+
* Provider Port Interface
|
|
150
|
+
*
|
|
151
|
+
* INV-PROV-PORT-001: Implementations must validate requests before execution
|
|
152
|
+
* INV-PROV-PORT-002: Responses must match ProviderResponseSchema
|
|
153
|
+
* INV-PROV-PORT-003: Errors must not throw; return error response instead
|
|
154
|
+
*/
|
|
155
|
+
export interface ProviderPort {
|
|
156
|
+
/**
|
|
157
|
+
* Provider identifier
|
|
158
|
+
*/
|
|
159
|
+
readonly providerId: string;
|
|
160
|
+
/**
|
|
161
|
+
* Complete a request
|
|
162
|
+
* INV-PROV-PORT-003: Must not throw; returns error in response
|
|
163
|
+
*/
|
|
164
|
+
complete(request: ProviderRequest): Promise<ProviderResponse>;
|
|
165
|
+
/**
|
|
166
|
+
* Check if provider is available
|
|
167
|
+
*/
|
|
168
|
+
isAvailable(): Promise<boolean>;
|
|
169
|
+
/**
|
|
170
|
+
* Get available models
|
|
171
|
+
*/
|
|
172
|
+
getModels(): ModelInfo[];
|
|
173
|
+
/**
|
|
174
|
+
* Get provider status (open, closed, half-open for circuit breaker)
|
|
175
|
+
*/
|
|
176
|
+
getStatus(): 'open' | 'closed' | 'half-open';
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Provider Registry Port Interface
|
|
180
|
+
*
|
|
181
|
+
* INV-PROV-REG-001: getProvider returns undefined for unknown providers
|
|
182
|
+
* INV-PROV-REG-002: listProviders returns deterministic order
|
|
183
|
+
*/
|
|
184
|
+
export interface ProviderRegistryPort {
|
|
185
|
+
/**
|
|
186
|
+
* Get a provider by ID
|
|
187
|
+
* Returns undefined if not found (INV-PROV-REG-001)
|
|
188
|
+
*/
|
|
189
|
+
getProvider(providerId: string): ProviderPort | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Get the default provider
|
|
192
|
+
*/
|
|
193
|
+
getDefaultProvider(): ProviderPort | undefined;
|
|
194
|
+
/**
|
|
195
|
+
* List all provider IDs
|
|
196
|
+
* Returns deterministic order (INV-PROV-REG-002)
|
|
197
|
+
*/
|
|
198
|
+
listProviders(): string[];
|
|
199
|
+
/**
|
|
200
|
+
* Check if a provider exists
|
|
201
|
+
*/
|
|
202
|
+
hasProvider(providerId: string): boolean;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Validate a provider request
|
|
206
|
+
*/
|
|
207
|
+
export declare function validateProviderRequest(data: unknown): ProviderRequest;
|
|
208
|
+
/**
|
|
209
|
+
* Validate a provider response
|
|
210
|
+
*/
|
|
211
|
+
export declare function validateProviderResponse(data: unknown): ProviderResponse;
|
|
212
|
+
/**
|
|
213
|
+
* Safe validation for provider request
|
|
214
|
+
*/
|
|
215
|
+
export declare function safeValidateProviderRequest(data: unknown): {
|
|
216
|
+
success: true;
|
|
217
|
+
data: ProviderRequest;
|
|
218
|
+
} | {
|
|
219
|
+
success: false;
|
|
220
|
+
error: z.ZodError;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Create a success response
|
|
224
|
+
*/
|
|
225
|
+
export declare function createProviderSuccessResponse(requestId: string, content: string, options?: {
|
|
226
|
+
model?: string;
|
|
227
|
+
usage?: {
|
|
228
|
+
promptTokens: number;
|
|
229
|
+
completionTokens: number;
|
|
230
|
+
};
|
|
231
|
+
finishReason?: 'stop' | 'length';
|
|
232
|
+
}): ProviderResponse;
|
|
233
|
+
/**
|
|
234
|
+
* Create an error response
|
|
235
|
+
*/
|
|
236
|
+
export declare function createProviderErrorResponse(requestId: string, code: string, message: string): ProviderResponse;
|
|
237
|
+
//# sourceMappingURL=port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/provider/v1/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AAMH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE9D;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,SAAS,IAAI,SAAS,EAAE,CAAC;IAEzB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAE1D;;OAEG;IACH,kBAAkB,IAAI,YAAY,GAAG,SAAS,CAAC;IAE/C;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEtE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAExE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG;IAC1D,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;CACvB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAMxC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC,GACA,gBAAgB,CASlB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,gBAAgB,CAOlB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Port - Interface for LLM Provider Access
|
|
3
|
+
*
|
|
4
|
+
* This defines the contract that provider adapters implement.
|
|
5
|
+
* Application layers (CLI, MCP Server) should depend on these interfaces,
|
|
6
|
+
* not on the concrete adapter implementations.
|
|
7
|
+
*
|
|
8
|
+
* Following Ports & Adapters (Hexagonal Architecture) pattern.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Provider Request/Response Schemas
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Message in a provider request
|
|
16
|
+
*/
|
|
17
|
+
export const ProviderMessageSchema = z.object({
|
|
18
|
+
role: z.enum(['system', 'user', 'assistant']),
|
|
19
|
+
content: z.string(),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Provider request schema
|
|
23
|
+
*/
|
|
24
|
+
export const ProviderRequestSchema = z.object({
|
|
25
|
+
requestId: z.string().uuid(),
|
|
26
|
+
model: z.string().min(1),
|
|
27
|
+
messages: z.array(ProviderMessageSchema).min(1),
|
|
28
|
+
maxTokens: z.number().int().positive().optional(),
|
|
29
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
30
|
+
systemPrompt: z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Provider response schema
|
|
34
|
+
*/
|
|
35
|
+
export const ProviderResponseSchema = z.object({
|
|
36
|
+
requestId: z.string().uuid(),
|
|
37
|
+
success: z.boolean(),
|
|
38
|
+
content: z.string().optional(),
|
|
39
|
+
error: z
|
|
40
|
+
.object({
|
|
41
|
+
code: z.string(),
|
|
42
|
+
message: z.string(),
|
|
43
|
+
})
|
|
44
|
+
.optional(),
|
|
45
|
+
usage: z
|
|
46
|
+
.object({
|
|
47
|
+
promptTokens: z.number().int().nonnegative(),
|
|
48
|
+
completionTokens: z.number().int().nonnegative(),
|
|
49
|
+
})
|
|
50
|
+
.optional(),
|
|
51
|
+
model: z.string().optional(),
|
|
52
|
+
finishReason: z.enum(['stop', 'length', 'error']).optional(),
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Model info schema
|
|
56
|
+
*/
|
|
57
|
+
export const ModelInfoSchema = z.object({
|
|
58
|
+
modelId: z.string().min(1),
|
|
59
|
+
displayName: z.string().optional(),
|
|
60
|
+
contextLength: z.number().int().positive().optional(),
|
|
61
|
+
isDefault: z.boolean().optional(),
|
|
62
|
+
capabilities: z.array(z.string()).optional(),
|
|
63
|
+
});
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Validation Functions
|
|
66
|
+
// ============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Validate a provider request
|
|
69
|
+
*/
|
|
70
|
+
export function validateProviderRequest(data) {
|
|
71
|
+
return ProviderRequestSchema.parse(data);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate a provider response
|
|
75
|
+
*/
|
|
76
|
+
export function validateProviderResponse(data) {
|
|
77
|
+
return ProviderResponseSchema.parse(data);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Safe validation for provider request
|
|
81
|
+
*/
|
|
82
|
+
export function safeValidateProviderRequest(data) {
|
|
83
|
+
const result = ProviderRequestSchema.safeParse(data);
|
|
84
|
+
if (result.success) {
|
|
85
|
+
return { success: true, data: result.data };
|
|
86
|
+
}
|
|
87
|
+
return { success: false, error: result.error };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a success response
|
|
91
|
+
*/
|
|
92
|
+
export function createProviderSuccessResponse(requestId, content, options) {
|
|
93
|
+
return {
|
|
94
|
+
requestId,
|
|
95
|
+
success: true,
|
|
96
|
+
content,
|
|
97
|
+
model: options?.model,
|
|
98
|
+
usage: options?.usage,
|
|
99
|
+
finishReason: options?.finishReason ?? 'stop',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create an error response
|
|
104
|
+
*/
|
|
105
|
+
export function createProviderErrorResponse(requestId, code, message) {
|
|
106
|
+
return {
|
|
107
|
+
requestId,
|
|
108
|
+
success: false,
|
|
109
|
+
error: { code, message },
|
|
110
|
+
finishReason: 'error',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/provider/v1/port.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limit Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Provides rate limiting for provider requests using token bucket algorithm.
|
|
5
|
+
* Prevents overwhelming providers with too many requests.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-RL-001: Tokens never exceed burst capacity
|
|
9
|
+
* - INV-RL-002: Tokens refill at configured rate
|
|
10
|
+
* - INV-RL-003: Strategy (reject/queue/backoff) honored
|
|
11
|
+
* - INV-RL-004: Queue never exceeds maxQueueSize
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
/**
|
|
15
|
+
* Rate limit strategy when limit is reached
|
|
16
|
+
*/
|
|
17
|
+
export declare const RateLimitStrategySchema: z.ZodEnum<["reject", "queue", "backoff"]>;
|
|
18
|
+
export type RateLimitStrategy = z.infer<typeof RateLimitStrategySchema>;
|
|
19
|
+
/**
|
|
20
|
+
* Rate limit state
|
|
21
|
+
*/
|
|
22
|
+
export declare const RateLimitStateEnumSchema: z.ZodEnum<["normal", "throttled", "blocked"]>;
|
|
23
|
+
export type RateLimitStateEnum = z.infer<typeof RateLimitStateEnumSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* Rate limit configuration
|
|
26
|
+
*/
|
|
27
|
+
export declare const RateLimitConfigSchema: z.ZodObject<{
|
|
28
|
+
/** Requests per minute per provider */
|
|
29
|
+
requestsPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
30
|
+
/** Tokens per minute per provider */
|
|
31
|
+
tokensPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
32
|
+
/** Burst allowance multiplier (INV-RL-001) */
|
|
33
|
+
burstMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
/** Strategy when limit reached (INV-RL-003) */
|
|
35
|
+
strategy: z.ZodDefault<z.ZodEnum<["reject", "queue", "backoff"]>>;
|
|
36
|
+
/** Max queue size if strategy is 'queue' (INV-RL-004) */
|
|
37
|
+
maxQueueSize: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
/** Backoff base delay in ms */
|
|
39
|
+
backoffBaseMs: z.ZodDefault<z.ZodNumber>;
|
|
40
|
+
/** Backoff multiplier for exponential backoff */
|
|
41
|
+
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
/** Maximum backoff delay in ms */
|
|
43
|
+
maxBackoffMs: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
/** Enable token-based rate limiting */
|
|
45
|
+
enableTokenLimit: z.ZodDefault<z.ZodBoolean>;
|
|
46
|
+
/** Enable request-based rate limiting */
|
|
47
|
+
enableRequestLimit: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
backoffMultiplier: number;
|
|
50
|
+
requestsPerMinute: number;
|
|
51
|
+
tokensPerMinute: number;
|
|
52
|
+
burstMultiplier: number;
|
|
53
|
+
strategy: "queue" | "reject" | "backoff";
|
|
54
|
+
maxQueueSize: number;
|
|
55
|
+
backoffBaseMs: number;
|
|
56
|
+
maxBackoffMs: number;
|
|
57
|
+
enableTokenLimit: boolean;
|
|
58
|
+
enableRequestLimit: boolean;
|
|
59
|
+
}, {
|
|
60
|
+
backoffMultiplier?: number | undefined;
|
|
61
|
+
requestsPerMinute?: number | undefined;
|
|
62
|
+
tokensPerMinute?: number | undefined;
|
|
63
|
+
burstMultiplier?: number | undefined;
|
|
64
|
+
strategy?: "queue" | "reject" | "backoff" | undefined;
|
|
65
|
+
maxQueueSize?: number | undefined;
|
|
66
|
+
backoffBaseMs?: number | undefined;
|
|
67
|
+
maxBackoffMs?: number | undefined;
|
|
68
|
+
enableTokenLimit?: boolean | undefined;
|
|
69
|
+
enableRequestLimit?: boolean | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
export type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;
|
|
72
|
+
/**
|
|
73
|
+
* Rate limit state snapshot
|
|
74
|
+
*/
|
|
75
|
+
export declare const RateLimitStateSchema: z.ZodObject<{
|
|
76
|
+
/** Current available request tokens */
|
|
77
|
+
requestTokens: z.ZodNumber;
|
|
78
|
+
/** Current available output tokens */
|
|
79
|
+
outputTokens: z.ZodNumber;
|
|
80
|
+
/** Requests in current window */
|
|
81
|
+
requestCount: z.ZodNumber;
|
|
82
|
+
/** Tokens used in current window */
|
|
83
|
+
tokenCount: z.ZodNumber;
|
|
84
|
+
/** Start of current rate limit window */
|
|
85
|
+
windowStart: z.ZodString;
|
|
86
|
+
/** Current queue size */
|
|
87
|
+
queueSize: z.ZodNumber;
|
|
88
|
+
/** Next allowed request time (if rate limited) */
|
|
89
|
+
nextAllowedTime: z.ZodOptional<z.ZodString>;
|
|
90
|
+
/** Current state */
|
|
91
|
+
state: z.ZodEnum<["normal", "throttled", "blocked"]>;
|
|
92
|
+
/** Last refill timestamp */
|
|
93
|
+
lastRefillTime: z.ZodString;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
tokenCount: number;
|
|
96
|
+
requestCount: number;
|
|
97
|
+
windowStart: string;
|
|
98
|
+
state: "blocked" | "normal" | "throttled";
|
|
99
|
+
requestTokens: number;
|
|
100
|
+
outputTokens: number;
|
|
101
|
+
queueSize: number;
|
|
102
|
+
lastRefillTime: string;
|
|
103
|
+
nextAllowedTime?: string | undefined;
|
|
104
|
+
}, {
|
|
105
|
+
tokenCount: number;
|
|
106
|
+
requestCount: number;
|
|
107
|
+
windowStart: string;
|
|
108
|
+
state: "blocked" | "normal" | "throttled";
|
|
109
|
+
requestTokens: number;
|
|
110
|
+
outputTokens: number;
|
|
111
|
+
queueSize: number;
|
|
112
|
+
lastRefillTime: string;
|
|
113
|
+
nextAllowedTime?: string | undefined;
|
|
114
|
+
}>;
|
|
115
|
+
export type RateLimitState = z.infer<typeof RateLimitStateSchema>;
|
|
116
|
+
/**
|
|
117
|
+
* Rate limit result
|
|
118
|
+
*/
|
|
119
|
+
export declare const RateLimitResultSchema: z.ZodObject<{
|
|
120
|
+
/** Whether request is allowed */
|
|
121
|
+
allowed: z.ZodBoolean;
|
|
122
|
+
/** Wait time in ms (for backoff strategy) */
|
|
123
|
+
waitMs: z.ZodNumber;
|
|
124
|
+
/** Whether request was queued */
|
|
125
|
+
queued: z.ZodOptional<z.ZodBoolean>;
|
|
126
|
+
/** Queue position if queued */
|
|
127
|
+
queuePosition: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
/** Error code if rejected */
|
|
129
|
+
error: z.ZodOptional<z.ZodString>;
|
|
130
|
+
/** Remaining requests in window */
|
|
131
|
+
remainingRequests: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
/** Remaining tokens in window */
|
|
133
|
+
remainingTokens: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
/** Time until rate limit resets */
|
|
135
|
+
resetInMs: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
}, "strip", z.ZodTypeAny, {
|
|
137
|
+
allowed: boolean;
|
|
138
|
+
waitMs: number;
|
|
139
|
+
error?: string | undefined;
|
|
140
|
+
queued?: boolean | undefined;
|
|
141
|
+
queuePosition?: number | undefined;
|
|
142
|
+
remainingRequests?: number | undefined;
|
|
143
|
+
remainingTokens?: number | undefined;
|
|
144
|
+
resetInMs?: number | undefined;
|
|
145
|
+
}, {
|
|
146
|
+
allowed: boolean;
|
|
147
|
+
waitMs: number;
|
|
148
|
+
error?: string | undefined;
|
|
149
|
+
queued?: boolean | undefined;
|
|
150
|
+
queuePosition?: number | undefined;
|
|
151
|
+
remainingRequests?: number | undefined;
|
|
152
|
+
remainingTokens?: number | undefined;
|
|
153
|
+
resetInMs?: number | undefined;
|
|
154
|
+
}>;
|
|
155
|
+
export type RateLimitResult = z.infer<typeof RateLimitResultSchema>;
|
|
156
|
+
/**
|
|
157
|
+
* Rate limit event types
|
|
158
|
+
*/
|
|
159
|
+
export declare const RateLimitEventTypeSchema: z.ZodEnum<["rateLimit.acquired", "rateLimit.rejected", "rateLimit.queued", "rateLimit.dequeued", "rateLimit.refilled", "rateLimit.stateChanged"]>;
|
|
160
|
+
export type RateLimitEventType = z.infer<typeof RateLimitEventTypeSchema>;
|
|
161
|
+
/**
|
|
162
|
+
* Rate limit event
|
|
163
|
+
*/
|
|
164
|
+
export declare const RateLimitEventSchema: z.ZodObject<{
|
|
165
|
+
eventId: z.ZodString;
|
|
166
|
+
type: z.ZodEnum<["rateLimit.acquired", "rateLimit.rejected", "rateLimit.queued", "rateLimit.dequeued", "rateLimit.refilled", "rateLimit.stateChanged"]>;
|
|
167
|
+
providerId: z.ZodString;
|
|
168
|
+
timestamp: z.ZodString;
|
|
169
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
170
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
171
|
+
}, "strip", z.ZodTypeAny, {
|
|
172
|
+
type: "rateLimit.acquired" | "rateLimit.rejected" | "rateLimit.queued" | "rateLimit.dequeued" | "rateLimit.refilled" | "rateLimit.stateChanged";
|
|
173
|
+
timestamp: string;
|
|
174
|
+
eventId: string;
|
|
175
|
+
providerId: string;
|
|
176
|
+
details?: Record<string, unknown> | undefined;
|
|
177
|
+
requestId?: string | undefined;
|
|
178
|
+
}, {
|
|
179
|
+
type: "rateLimit.acquired" | "rateLimit.rejected" | "rateLimit.queued" | "rateLimit.dequeued" | "rateLimit.refilled" | "rateLimit.stateChanged";
|
|
180
|
+
timestamp: string;
|
|
181
|
+
eventId: string;
|
|
182
|
+
providerId: string;
|
|
183
|
+
details?: Record<string, unknown> | undefined;
|
|
184
|
+
requestId?: string | undefined;
|
|
185
|
+
}>;
|
|
186
|
+
export type RateLimitEvent = z.infer<typeof RateLimitEventSchema>;
|
|
187
|
+
/**
|
|
188
|
+
* Error codes for rate limit operations
|
|
189
|
+
*/
|
|
190
|
+
export declare const RateLimitErrorCodes: {
|
|
191
|
+
readonly RATE_LIMITED: "RATE_LIMIT_EXCEEDED";
|
|
192
|
+
readonly QUEUE_FULL: "RATE_LIMIT_QUEUE_FULL";
|
|
193
|
+
readonly TOKEN_LIMIT: "RATE_LIMIT_TOKEN_EXCEEDED";
|
|
194
|
+
readonly REQUEST_LIMIT: "RATE_LIMIT_REQUEST_EXCEEDED";
|
|
195
|
+
readonly INVALID_CONFIG: "RATE_LIMIT_INVALID_CONFIG";
|
|
196
|
+
};
|
|
197
|
+
export type RateLimitErrorCode = (typeof RateLimitErrorCodes)[keyof typeof RateLimitErrorCodes];
|
|
198
|
+
/**
|
|
199
|
+
* Validates rate limit configuration
|
|
200
|
+
*/
|
|
201
|
+
export declare function validateRateLimitConfig(data: unknown): RateLimitConfig;
|
|
202
|
+
/**
|
|
203
|
+
* Validates rate limit state
|
|
204
|
+
*/
|
|
205
|
+
export declare function validateRateLimitState(data: unknown): RateLimitState;
|
|
206
|
+
/**
|
|
207
|
+
* Creates default rate limit configuration
|
|
208
|
+
*/
|
|
209
|
+
export declare function createDefaultRateLimitConfig(): RateLimitConfig;
|
|
210
|
+
/**
|
|
211
|
+
* Creates initial rate limit state
|
|
212
|
+
*/
|
|
213
|
+
export declare function createInitialRateLimitState(config: RateLimitConfig): RateLimitState;
|
|
214
|
+
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/provider/v1/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,uBAAuB,2CAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,wBAAwB,+CAInC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,uCAAuC;;IAGvC,qCAAqC;;IAGrC,8CAA8C;;IAG9C,+CAA+C;;IAG/C,yDAAyD;;IAGzD,+BAA+B;;IAG/B,iDAAiD;;IAGjD,kCAAkC;;IAGlC,uCAAuC;;IAGvC,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;EAEzC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B,uCAAuC;;IAGvC,sCAAsC;;IAGtC,iCAAiC;;IAGjC,oCAAoC;;IAGpC,yCAAyC;;IAGzC,yBAAyB;;IAGzB,kDAAkD;;IAGlD,oBAAoB;;IAGpB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;EAE5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,iCAAiC;;IAGjC,6CAA6C;;IAG7C,iCAAiC;;IAGjC,+BAA+B;;IAG/B,6BAA6B;;IAG7B,mCAAmC;;IAGnC,iCAAiC;;IAGjC,mCAAmC;;;;;;;;;;;;;;;;;;;;EAEnC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,wBAAwB,mJAOnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;CAMtB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEtE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAEpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,eAAe,CAE9D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAYnF"}
|