@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,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Provides circuit breaker pattern for provider resilience.
|
|
5
|
+
* Prevents cascading failures when providers become unhealthy.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-CB-001: Closed state allows all requests
|
|
9
|
+
* - INV-CB-002: Open state rejects until resetTimeout elapsed
|
|
10
|
+
* - INV-CB-003: Half-open state allows limited test requests
|
|
11
|
+
* - INV-CB-004: Failure threshold triggers transition to open
|
|
12
|
+
* - INV-CB-005: Successful tests in half-open trigger transition to closed
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
/**
|
|
16
|
+
* Circuit breaker states
|
|
17
|
+
*/
|
|
18
|
+
export const CircuitStateSchema = z.enum(['closed', 'open', 'halfOpen']);
|
|
19
|
+
/**
|
|
20
|
+
* Circuit breaker configuration
|
|
21
|
+
*/
|
|
22
|
+
export const CircuitBreakerConfigSchema = z.object({
|
|
23
|
+
/** Failures before opening circuit (INV-CB-004) */
|
|
24
|
+
failureThreshold: z.number().int().min(1).max(100).default(5),
|
|
25
|
+
/** Time before attempting half-open state in ms (INV-CB-002) */
|
|
26
|
+
resetTimeoutMs: z.number().int().min(1000).max(300000).default(30000),
|
|
27
|
+
/** Number of test requests allowed in half-open state (INV-CB-003) */
|
|
28
|
+
halfOpenRequests: z.number().int().min(1).max(10).default(3),
|
|
29
|
+
/** Interval for passive health checks in ms */
|
|
30
|
+
monitorIntervalMs: z.number().int().min(1000).max(60000).default(10000),
|
|
31
|
+
/** Success threshold to close circuit from half-open */
|
|
32
|
+
successThreshold: z.number().int().min(1).max(10).default(3),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Circuit breaker state snapshot
|
|
36
|
+
*/
|
|
37
|
+
export const CircuitBreakerStateSchema = z.object({
|
|
38
|
+
/** Current circuit state */
|
|
39
|
+
state: CircuitStateSchema,
|
|
40
|
+
/** Consecutive failure count */
|
|
41
|
+
failureCount: z.number().int().min(0),
|
|
42
|
+
/** Success count in half-open state */
|
|
43
|
+
successCount: z.number().int().min(0),
|
|
44
|
+
/** Timestamp of last failure */
|
|
45
|
+
lastFailureTime: z.string().datetime().optional(),
|
|
46
|
+
/** Timestamp of last success */
|
|
47
|
+
lastSuccessTime: z.string().datetime().optional(),
|
|
48
|
+
/** Next allowed attempt time (when open) */
|
|
49
|
+
nextAttemptTime: z.string().datetime().optional(),
|
|
50
|
+
/** Time of last state transition */
|
|
51
|
+
lastTransitionTime: z.string().datetime().optional(),
|
|
52
|
+
/** Total requests since last reset */
|
|
53
|
+
totalRequests: z.number().int().min(0).default(0),
|
|
54
|
+
/** Total failures since last reset */
|
|
55
|
+
totalFailures: z.number().int().min(0).default(0),
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Circuit breaker event types
|
|
59
|
+
*/
|
|
60
|
+
export const CircuitBreakerEventTypeSchema = z.enum([
|
|
61
|
+
'circuit.opened',
|
|
62
|
+
'circuit.closed',
|
|
63
|
+
'circuit.halfOpen',
|
|
64
|
+
'circuit.requestAllowed',
|
|
65
|
+
'circuit.requestRejected',
|
|
66
|
+
'circuit.successRecorded',
|
|
67
|
+
'circuit.failureRecorded',
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Circuit breaker event
|
|
71
|
+
*/
|
|
72
|
+
export const CircuitBreakerEventSchema = z.object({
|
|
73
|
+
eventId: z.string().uuid(),
|
|
74
|
+
type: CircuitBreakerEventTypeSchema,
|
|
75
|
+
providerId: z.string(),
|
|
76
|
+
timestamp: z.string().datetime(),
|
|
77
|
+
previousState: CircuitStateSchema.optional(),
|
|
78
|
+
currentState: CircuitStateSchema,
|
|
79
|
+
details: z.record(z.unknown()).optional(),
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Error codes for circuit breaker operations
|
|
83
|
+
*/
|
|
84
|
+
export const CircuitBreakerErrorCodes = {
|
|
85
|
+
CIRCUIT_OPEN: 'CIRCUIT_BREAKER_OPEN',
|
|
86
|
+
HALF_OPEN_LIMIT: 'CIRCUIT_BREAKER_HALF_OPEN_LIMIT',
|
|
87
|
+
INVALID_CONFIG: 'CIRCUIT_BREAKER_INVALID_CONFIG',
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Validates circuit breaker configuration
|
|
91
|
+
*/
|
|
92
|
+
export function validateCircuitBreakerConfig(data) {
|
|
93
|
+
return CircuitBreakerConfigSchema.parse(data);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validates circuit breaker state
|
|
97
|
+
*/
|
|
98
|
+
export function validateCircuitBreakerState(data) {
|
|
99
|
+
return CircuitBreakerStateSchema.parse(data);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates default circuit breaker configuration
|
|
103
|
+
*/
|
|
104
|
+
export function createDefaultCircuitBreakerConfig() {
|
|
105
|
+
return CircuitBreakerConfigSchema.parse({});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Creates initial circuit breaker state (closed)
|
|
109
|
+
*/
|
|
110
|
+
export function createInitialCircuitBreakerState() {
|
|
111
|
+
return {
|
|
112
|
+
state: 'closed',
|
|
113
|
+
failureCount: 0,
|
|
114
|
+
successCount: 0,
|
|
115
|
+
totalRequests: 0,
|
|
116
|
+
totalFailures: 0,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/provider/v1/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Health Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Provides health monitoring for provider resilience.
|
|
5
|
+
* Tracks latency, error rates, and availability for intelligent routing.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-HM-001: Latency samples bounded by configured size
|
|
9
|
+
* - INV-HM-002: Error rate calculated over sliding window
|
|
10
|
+
* - INV-HM-003: Availability derived from circuit and error state
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
/**
|
|
14
|
+
* Health check configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare const HealthCheckConfigSchema: z.ZodObject<{
|
|
17
|
+
/** Interval between active health checks in ms */
|
|
18
|
+
intervalMs: z.ZodDefault<z.ZodNumber>;
|
|
19
|
+
/** Timeout for health check request in ms */
|
|
20
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
21
|
+
/** Number of latency samples to retain (INV-HM-001) */
|
|
22
|
+
latencySampleSize: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
/** Error rate threshold for unhealthy status */
|
|
24
|
+
unhealthyErrorRate: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
/** Consecutive failures for degraded status */
|
|
26
|
+
degradedThreshold: z.ZodDefault<z.ZodNumber>;
|
|
27
|
+
/** Enable active health checks */
|
|
28
|
+
enableActiveChecks: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
/** Enable passive health tracking */
|
|
30
|
+
enablePassiveTracking: z.ZodDefault<z.ZodBoolean>;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
timeoutMs: number;
|
|
33
|
+
intervalMs: number;
|
|
34
|
+
latencySampleSize: number;
|
|
35
|
+
unhealthyErrorRate: number;
|
|
36
|
+
degradedThreshold: number;
|
|
37
|
+
enableActiveChecks: boolean;
|
|
38
|
+
enablePassiveTracking: boolean;
|
|
39
|
+
}, {
|
|
40
|
+
timeoutMs?: number | undefined;
|
|
41
|
+
intervalMs?: number | undefined;
|
|
42
|
+
latencySampleSize?: number | undefined;
|
|
43
|
+
unhealthyErrorRate?: number | undefined;
|
|
44
|
+
degradedThreshold?: number | undefined;
|
|
45
|
+
enableActiveChecks?: boolean | undefined;
|
|
46
|
+
enablePassiveTracking?: boolean | undefined;
|
|
47
|
+
}>;
|
|
48
|
+
export type HealthCheckConfig = z.infer<typeof HealthCheckConfigSchema>;
|
|
49
|
+
/**
|
|
50
|
+
* Health status levels
|
|
51
|
+
*/
|
|
52
|
+
export declare const HealthLevelSchema: z.ZodEnum<["healthy", "degraded", "unhealthy", "unknown"]>;
|
|
53
|
+
export type HealthLevel = z.infer<typeof HealthLevelSchema>;
|
|
54
|
+
/**
|
|
55
|
+
* Provider health status
|
|
56
|
+
*/
|
|
57
|
+
export declare const HealthStatusSchema: z.ZodObject<{
|
|
58
|
+
/** Provider identifier */
|
|
59
|
+
providerId: z.ZodString;
|
|
60
|
+
/** Whether provider is available for requests */
|
|
61
|
+
available: z.ZodBoolean;
|
|
62
|
+
/** Overall health level */
|
|
63
|
+
level: z.ZodEnum<["healthy", "degraded", "unhealthy", "unknown"]>;
|
|
64
|
+
/** Average latency in ms */
|
|
65
|
+
latencyMs: z.ZodNumber;
|
|
66
|
+
/** P50 latency in ms */
|
|
67
|
+
latencyP50Ms: z.ZodOptional<z.ZodNumber>;
|
|
68
|
+
/** P95 latency in ms */
|
|
69
|
+
latencyP95Ms: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
/** P99 latency in ms */
|
|
71
|
+
latencyP99Ms: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
/** Error rate (0-1) */
|
|
73
|
+
errorRate: z.ZodNumber;
|
|
74
|
+
/** Consecutive failures */
|
|
75
|
+
consecutiveFailures: z.ZodNumber;
|
|
76
|
+
/** Consecutive successes */
|
|
77
|
+
consecutiveSuccesses: z.ZodNumber;
|
|
78
|
+
/** Timestamp of last health check */
|
|
79
|
+
lastCheckTime: z.ZodString;
|
|
80
|
+
/** Timestamp of last successful request */
|
|
81
|
+
lastSuccessTime: z.ZodOptional<z.ZodString>;
|
|
82
|
+
/** Timestamp of last failed request */
|
|
83
|
+
lastErrorTime: z.ZodOptional<z.ZodString>;
|
|
84
|
+
/** Last error message */
|
|
85
|
+
lastError: z.ZodOptional<z.ZodString>;
|
|
86
|
+
/** Last error code */
|
|
87
|
+
lastErrorCode: z.ZodOptional<z.ZodString>;
|
|
88
|
+
/** Circuit breaker state */
|
|
89
|
+
circuitState: z.ZodEnum<["closed", "open", "halfOpen"]>;
|
|
90
|
+
/** Rate limit state */
|
|
91
|
+
rateLimitState: z.ZodEnum<["normal", "throttled", "blocked"]>;
|
|
92
|
+
/** Total requests in monitoring window */
|
|
93
|
+
totalRequests: z.ZodNumber;
|
|
94
|
+
/** Total errors in monitoring window */
|
|
95
|
+
totalErrors: z.ZodNumber;
|
|
96
|
+
/** Uptime percentage in monitoring window */
|
|
97
|
+
uptimePercent: z.ZodOptional<z.ZodNumber>;
|
|
98
|
+
}, "strip", z.ZodTypeAny, {
|
|
99
|
+
providerId: string;
|
|
100
|
+
available: boolean;
|
|
101
|
+
level: "unknown" | "healthy" | "degraded" | "unhealthy";
|
|
102
|
+
totalRequests: number;
|
|
103
|
+
latencyMs: number;
|
|
104
|
+
errorRate: number;
|
|
105
|
+
consecutiveFailures: number;
|
|
106
|
+
consecutiveSuccesses: number;
|
|
107
|
+
lastCheckTime: string;
|
|
108
|
+
circuitState: "open" | "closed" | "halfOpen";
|
|
109
|
+
rateLimitState: "blocked" | "normal" | "throttled";
|
|
110
|
+
totalErrors: number;
|
|
111
|
+
lastSuccessTime?: string | undefined;
|
|
112
|
+
latencyP50Ms?: number | undefined;
|
|
113
|
+
latencyP95Ms?: number | undefined;
|
|
114
|
+
latencyP99Ms?: number | undefined;
|
|
115
|
+
lastErrorTime?: string | undefined;
|
|
116
|
+
lastError?: string | undefined;
|
|
117
|
+
lastErrorCode?: string | undefined;
|
|
118
|
+
uptimePercent?: number | undefined;
|
|
119
|
+
}, {
|
|
120
|
+
providerId: string;
|
|
121
|
+
available: boolean;
|
|
122
|
+
level: "unknown" | "healthy" | "degraded" | "unhealthy";
|
|
123
|
+
totalRequests: number;
|
|
124
|
+
latencyMs: number;
|
|
125
|
+
errorRate: number;
|
|
126
|
+
consecutiveFailures: number;
|
|
127
|
+
consecutiveSuccesses: number;
|
|
128
|
+
lastCheckTime: string;
|
|
129
|
+
circuitState: "open" | "closed" | "halfOpen";
|
|
130
|
+
rateLimitState: "blocked" | "normal" | "throttled";
|
|
131
|
+
totalErrors: number;
|
|
132
|
+
lastSuccessTime?: string | undefined;
|
|
133
|
+
latencyP50Ms?: number | undefined;
|
|
134
|
+
latencyP95Ms?: number | undefined;
|
|
135
|
+
latencyP99Ms?: number | undefined;
|
|
136
|
+
lastErrorTime?: string | undefined;
|
|
137
|
+
lastError?: string | undefined;
|
|
138
|
+
lastErrorCode?: string | undefined;
|
|
139
|
+
uptimePercent?: number | undefined;
|
|
140
|
+
}>;
|
|
141
|
+
export type HealthStatus = z.infer<typeof HealthStatusSchema>;
|
|
142
|
+
/**
|
|
143
|
+
* Health check result
|
|
144
|
+
*/
|
|
145
|
+
export declare const HealthCheckResultSchema: z.ZodObject<{
|
|
146
|
+
/** Check identifier */
|
|
147
|
+
checkId: z.ZodString;
|
|
148
|
+
/** Provider identifier */
|
|
149
|
+
providerId: z.ZodString;
|
|
150
|
+
/** Whether check passed */
|
|
151
|
+
success: z.ZodBoolean;
|
|
152
|
+
/** Latency of health check in ms */
|
|
153
|
+
latencyMs: z.ZodNumber;
|
|
154
|
+
/** Timestamp of check */
|
|
155
|
+
timestamp: z.ZodString;
|
|
156
|
+
/** Error message if failed */
|
|
157
|
+
error: z.ZodOptional<z.ZodString>;
|
|
158
|
+
/** Error code if failed */
|
|
159
|
+
errorCode: z.ZodOptional<z.ZodString>;
|
|
160
|
+
/** Check type */
|
|
161
|
+
checkType: z.ZodEnum<["active", "passive"]>;
|
|
162
|
+
}, "strip", z.ZodTypeAny, {
|
|
163
|
+
timestamp: string;
|
|
164
|
+
success: boolean;
|
|
165
|
+
providerId: string;
|
|
166
|
+
latencyMs: number;
|
|
167
|
+
checkId: string;
|
|
168
|
+
checkType: "active" | "passive";
|
|
169
|
+
error?: string | undefined;
|
|
170
|
+
errorCode?: string | undefined;
|
|
171
|
+
}, {
|
|
172
|
+
timestamp: string;
|
|
173
|
+
success: boolean;
|
|
174
|
+
providerId: string;
|
|
175
|
+
latencyMs: number;
|
|
176
|
+
checkId: string;
|
|
177
|
+
checkType: "active" | "passive";
|
|
178
|
+
error?: string | undefined;
|
|
179
|
+
errorCode?: string | undefined;
|
|
180
|
+
}>;
|
|
181
|
+
export type HealthCheckResult = z.infer<typeof HealthCheckResultSchema>;
|
|
182
|
+
/**
|
|
183
|
+
* Health event types
|
|
184
|
+
*/
|
|
185
|
+
export declare const HealthEventTypeSchema: z.ZodEnum<["health.check.started", "health.check.passed", "health.check.failed", "health.status.changed", "health.degraded", "health.recovered", "health.unhealthy"]>;
|
|
186
|
+
export type HealthEventType = z.infer<typeof HealthEventTypeSchema>;
|
|
187
|
+
/**
|
|
188
|
+
* Health event
|
|
189
|
+
*/
|
|
190
|
+
export declare const HealthEventSchema: z.ZodObject<{
|
|
191
|
+
eventId: z.ZodString;
|
|
192
|
+
type: z.ZodEnum<["health.check.started", "health.check.passed", "health.check.failed", "health.status.changed", "health.degraded", "health.recovered", "health.unhealthy"]>;
|
|
193
|
+
providerId: z.ZodString;
|
|
194
|
+
timestamp: z.ZodString;
|
|
195
|
+
previousLevel: z.ZodOptional<z.ZodEnum<["healthy", "degraded", "unhealthy", "unknown"]>>;
|
|
196
|
+
currentLevel: z.ZodEnum<["healthy", "degraded", "unhealthy", "unknown"]>;
|
|
197
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
198
|
+
}, "strip", z.ZodTypeAny, {
|
|
199
|
+
type: "health.check.started" | "health.check.passed" | "health.check.failed" | "health.status.changed" | "health.degraded" | "health.recovered" | "health.unhealthy";
|
|
200
|
+
timestamp: string;
|
|
201
|
+
eventId: string;
|
|
202
|
+
providerId: string;
|
|
203
|
+
currentLevel: "unknown" | "healthy" | "degraded" | "unhealthy";
|
|
204
|
+
details?: Record<string, unknown> | undefined;
|
|
205
|
+
previousLevel?: "unknown" | "healthy" | "degraded" | "unhealthy" | undefined;
|
|
206
|
+
}, {
|
|
207
|
+
type: "health.check.started" | "health.check.passed" | "health.check.failed" | "health.status.changed" | "health.degraded" | "health.recovered" | "health.unhealthy";
|
|
208
|
+
timestamp: string;
|
|
209
|
+
eventId: string;
|
|
210
|
+
providerId: string;
|
|
211
|
+
currentLevel: "unknown" | "healthy" | "degraded" | "unhealthy";
|
|
212
|
+
details?: Record<string, unknown> | undefined;
|
|
213
|
+
previousLevel?: "unknown" | "healthy" | "degraded" | "unhealthy" | undefined;
|
|
214
|
+
}>;
|
|
215
|
+
export type HealthEvent = z.infer<typeof HealthEventSchema>;
|
|
216
|
+
/**
|
|
217
|
+
* Error codes for health operations
|
|
218
|
+
*/
|
|
219
|
+
export declare const HealthErrorCodes: {
|
|
220
|
+
readonly CHECK_TIMEOUT: "HEALTH_CHECK_TIMEOUT";
|
|
221
|
+
readonly CHECK_FAILED: "HEALTH_CHECK_FAILED";
|
|
222
|
+
readonly PROVIDER_UNAVAILABLE: "HEALTH_PROVIDER_UNAVAILABLE";
|
|
223
|
+
readonly INVALID_CONFIG: "HEALTH_INVALID_CONFIG";
|
|
224
|
+
};
|
|
225
|
+
export type HealthErrorCode = (typeof HealthErrorCodes)[keyof typeof HealthErrorCodes];
|
|
226
|
+
/**
|
|
227
|
+
* Validates health check configuration
|
|
228
|
+
*/
|
|
229
|
+
export declare function validateHealthCheckConfig(data: unknown): HealthCheckConfig;
|
|
230
|
+
/**
|
|
231
|
+
* Validates health status
|
|
232
|
+
*/
|
|
233
|
+
export declare function validateHealthStatus(data: unknown): HealthStatus;
|
|
234
|
+
/**
|
|
235
|
+
* Creates default health check configuration
|
|
236
|
+
*/
|
|
237
|
+
export declare function createDefaultHealthCheckConfig(): HealthCheckConfig;
|
|
238
|
+
/**
|
|
239
|
+
* Creates initial health status (unknown)
|
|
240
|
+
*/
|
|
241
|
+
export declare function createInitialHealthStatus(providerId: string): HealthStatus;
|
|
242
|
+
/**
|
|
243
|
+
* Calculate percentile from sorted array
|
|
244
|
+
*/
|
|
245
|
+
export declare function calculatePercentile(sortedValues: number[], percentile: number): number;
|
|
246
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/provider/v1/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,kDAAkD;;IAGlD,6CAA6C;;IAG7C,uDAAuD;;IAGvD,gDAAgD;;IAGhD,+CAA+C;;IAG/C,kCAAkC;;IAGlC,qCAAqC;;;;;;;;;;;;;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,iBAAiB,4DAK5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,0BAA0B;;IAG1B,iDAAiD;;IAGjD,2BAA2B;;IAG3B,4BAA4B;;IAG5B,wBAAwB;;IAGxB,wBAAwB;;IAGxB,wBAAwB;;IAGxB,uBAAuB;;IAGvB,2BAA2B;;IAG3B,4BAA4B;;IAG5B,qCAAqC;;IAGrC,2CAA2C;;IAG3C,uCAAuC;;IAGvC,yBAAyB;;IAGzB,sBAAsB;;IAGtB,4BAA4B;;IAG5B,uBAAuB;;IAGvB,0CAA0C;;IAG1C,wCAAwC;;IAGxC,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7C,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,uBAAuB;;IAGvB,0BAA0B;;IAG1B,2BAA2B;;IAG3B,oCAAoC;;IAGpC,yBAAyB;;IAGzB,8BAA8B;;IAG9B,2BAA2B;;IAG3B,iBAAiB;;;;;;;;;;;;;;;;;;;;EAEjB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,qBAAqB,uKAQhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAEX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAE1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAEhE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,iBAAiB,CAElE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAgB1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKtF"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Health Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Provides health monitoring for provider resilience.
|
|
5
|
+
* Tracks latency, error rates, and availability for intelligent routing.
|
|
6
|
+
*
|
|
7
|
+
* Invariants:
|
|
8
|
+
* - INV-HM-001: Latency samples bounded by configured size
|
|
9
|
+
* - INV-HM-002: Error rate calculated over sliding window
|
|
10
|
+
* - INV-HM-003: Availability derived from circuit and error state
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { CircuitStateSchema } from './circuit-breaker.js';
|
|
14
|
+
import { RateLimitStateEnumSchema } from './rate-limit.js';
|
|
15
|
+
/**
|
|
16
|
+
* Health check configuration
|
|
17
|
+
*/
|
|
18
|
+
export const HealthCheckConfigSchema = z.object({
|
|
19
|
+
/** Interval between active health checks in ms */
|
|
20
|
+
intervalMs: z.number().int().min(5000).max(300000).default(30000),
|
|
21
|
+
/** Timeout for health check request in ms */
|
|
22
|
+
timeoutMs: z.number().int().min(1000).max(30000).default(5000),
|
|
23
|
+
/** Number of latency samples to retain (INV-HM-001) */
|
|
24
|
+
latencySampleSize: z.number().int().min(1).max(100).default(10),
|
|
25
|
+
/** Error rate threshold for unhealthy status */
|
|
26
|
+
unhealthyErrorRate: z.number().min(0).max(1).default(0.5),
|
|
27
|
+
/** Consecutive failures for degraded status */
|
|
28
|
+
degradedThreshold: z.number().int().min(1).max(20).default(3),
|
|
29
|
+
/** Enable active health checks */
|
|
30
|
+
enableActiveChecks: z.boolean().default(true),
|
|
31
|
+
/** Enable passive health tracking */
|
|
32
|
+
enablePassiveTracking: z.boolean().default(true),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Health status levels
|
|
36
|
+
*/
|
|
37
|
+
export const HealthLevelSchema = z.enum([
|
|
38
|
+
'healthy', // Fully operational
|
|
39
|
+
'degraded', // Experiencing issues but operational
|
|
40
|
+
'unhealthy', // Not operational
|
|
41
|
+
'unknown', // No data available
|
|
42
|
+
]);
|
|
43
|
+
/**
|
|
44
|
+
* Provider health status
|
|
45
|
+
*/
|
|
46
|
+
export const HealthStatusSchema = z.object({
|
|
47
|
+
/** Provider identifier */
|
|
48
|
+
providerId: z.string(),
|
|
49
|
+
/** Whether provider is available for requests */
|
|
50
|
+
available: z.boolean(),
|
|
51
|
+
/** Overall health level */
|
|
52
|
+
level: HealthLevelSchema,
|
|
53
|
+
/** Average latency in ms */
|
|
54
|
+
latencyMs: z.number().min(0),
|
|
55
|
+
/** P50 latency in ms */
|
|
56
|
+
latencyP50Ms: z.number().min(0).optional(),
|
|
57
|
+
/** P95 latency in ms */
|
|
58
|
+
latencyP95Ms: z.number().min(0).optional(),
|
|
59
|
+
/** P99 latency in ms */
|
|
60
|
+
latencyP99Ms: z.number().min(0).optional(),
|
|
61
|
+
/** Error rate (0-1) */
|
|
62
|
+
errorRate: z.number().min(0).max(1),
|
|
63
|
+
/** Consecutive failures */
|
|
64
|
+
consecutiveFailures: z.number().int().min(0),
|
|
65
|
+
/** Consecutive successes */
|
|
66
|
+
consecutiveSuccesses: z.number().int().min(0),
|
|
67
|
+
/** Timestamp of last health check */
|
|
68
|
+
lastCheckTime: z.string().datetime(),
|
|
69
|
+
/** Timestamp of last successful request */
|
|
70
|
+
lastSuccessTime: z.string().datetime().optional(),
|
|
71
|
+
/** Timestamp of last failed request */
|
|
72
|
+
lastErrorTime: z.string().datetime().optional(),
|
|
73
|
+
/** Last error message */
|
|
74
|
+
lastError: z.string().optional(),
|
|
75
|
+
/** Last error code */
|
|
76
|
+
lastErrorCode: z.string().optional(),
|
|
77
|
+
/** Circuit breaker state */
|
|
78
|
+
circuitState: CircuitStateSchema,
|
|
79
|
+
/** Rate limit state */
|
|
80
|
+
rateLimitState: RateLimitStateEnumSchema,
|
|
81
|
+
/** Total requests in monitoring window */
|
|
82
|
+
totalRequests: z.number().int().min(0),
|
|
83
|
+
/** Total errors in monitoring window */
|
|
84
|
+
totalErrors: z.number().int().min(0),
|
|
85
|
+
/** Uptime percentage in monitoring window */
|
|
86
|
+
uptimePercent: z.number().min(0).max(100).optional(),
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Health check result
|
|
90
|
+
*/
|
|
91
|
+
export const HealthCheckResultSchema = z.object({
|
|
92
|
+
/** Check identifier */
|
|
93
|
+
checkId: z.string().uuid(),
|
|
94
|
+
/** Provider identifier */
|
|
95
|
+
providerId: z.string(),
|
|
96
|
+
/** Whether check passed */
|
|
97
|
+
success: z.boolean(),
|
|
98
|
+
/** Latency of health check in ms */
|
|
99
|
+
latencyMs: z.number().min(0),
|
|
100
|
+
/** Timestamp of check */
|
|
101
|
+
timestamp: z.string().datetime(),
|
|
102
|
+
/** Error message if failed */
|
|
103
|
+
error: z.string().optional(),
|
|
104
|
+
/** Error code if failed */
|
|
105
|
+
errorCode: z.string().optional(),
|
|
106
|
+
/** Check type */
|
|
107
|
+
checkType: z.enum(['active', 'passive']),
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* Health event types
|
|
111
|
+
*/
|
|
112
|
+
export const HealthEventTypeSchema = z.enum([
|
|
113
|
+
'health.check.started',
|
|
114
|
+
'health.check.passed',
|
|
115
|
+
'health.check.failed',
|
|
116
|
+
'health.status.changed',
|
|
117
|
+
'health.degraded',
|
|
118
|
+
'health.recovered',
|
|
119
|
+
'health.unhealthy',
|
|
120
|
+
]);
|
|
121
|
+
/**
|
|
122
|
+
* Health event
|
|
123
|
+
*/
|
|
124
|
+
export const HealthEventSchema = z.object({
|
|
125
|
+
eventId: z.string().uuid(),
|
|
126
|
+
type: HealthEventTypeSchema,
|
|
127
|
+
providerId: z.string(),
|
|
128
|
+
timestamp: z.string().datetime(),
|
|
129
|
+
previousLevel: HealthLevelSchema.optional(),
|
|
130
|
+
currentLevel: HealthLevelSchema,
|
|
131
|
+
details: z.record(z.unknown()).optional(),
|
|
132
|
+
});
|
|
133
|
+
/**
|
|
134
|
+
* Error codes for health operations
|
|
135
|
+
*/
|
|
136
|
+
export const HealthErrorCodes = {
|
|
137
|
+
CHECK_TIMEOUT: 'HEALTH_CHECK_TIMEOUT',
|
|
138
|
+
CHECK_FAILED: 'HEALTH_CHECK_FAILED',
|
|
139
|
+
PROVIDER_UNAVAILABLE: 'HEALTH_PROVIDER_UNAVAILABLE',
|
|
140
|
+
INVALID_CONFIG: 'HEALTH_INVALID_CONFIG',
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Validates health check configuration
|
|
144
|
+
*/
|
|
145
|
+
export function validateHealthCheckConfig(data) {
|
|
146
|
+
return HealthCheckConfigSchema.parse(data);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Validates health status
|
|
150
|
+
*/
|
|
151
|
+
export function validateHealthStatus(data) {
|
|
152
|
+
return HealthStatusSchema.parse(data);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Creates default health check configuration
|
|
156
|
+
*/
|
|
157
|
+
export function createDefaultHealthCheckConfig() {
|
|
158
|
+
return HealthCheckConfigSchema.parse({});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Creates initial health status (unknown)
|
|
162
|
+
*/
|
|
163
|
+
export function createInitialHealthStatus(providerId) {
|
|
164
|
+
const now = new Date().toISOString();
|
|
165
|
+
return {
|
|
166
|
+
providerId,
|
|
167
|
+
available: false,
|
|
168
|
+
level: 'unknown',
|
|
169
|
+
latencyMs: 0,
|
|
170
|
+
errorRate: 0,
|
|
171
|
+
consecutiveFailures: 0,
|
|
172
|
+
consecutiveSuccesses: 0,
|
|
173
|
+
lastCheckTime: now,
|
|
174
|
+
circuitState: 'closed',
|
|
175
|
+
rateLimitState: 'normal',
|
|
176
|
+
totalRequests: 0,
|
|
177
|
+
totalErrors: 0,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Calculate percentile from sorted array
|
|
182
|
+
*/
|
|
183
|
+
export function calculatePercentile(sortedValues, percentile) {
|
|
184
|
+
if (sortedValues.length === 0)
|
|
185
|
+
return 0;
|
|
186
|
+
const index = Math.ceil((percentile / 100) * sortedValues.length) - 1;
|
|
187
|
+
const safeIndex = Math.max(0, Math.min(index, sortedValues.length - 1));
|
|
188
|
+
return sortedValues[safeIndex] ?? 0;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/provider/v1/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Contracts for provider resilience patterns including
|
|
5
|
+
* circuit breaker, rate limiting, and health monitoring.
|
|
6
|
+
*
|
|
7
|
+
* Also includes provider port interfaces for Ports & Adapters pattern.
|
|
8
|
+
*/
|
|
9
|
+
export { ProviderMessageSchema, ProviderRequestSchema, ProviderResponseSchema, ModelInfoSchema, validateProviderRequest, validateProviderResponse, safeValidateProviderRequest, createProviderSuccessResponse, createProviderErrorResponse, type ProviderMessage, type ProviderRequest, type ProviderResponse, type ModelInfo, type ProviderPort, type ProviderRegistryPort, } from './port.js';
|
|
10
|
+
export { CircuitStateSchema, CircuitBreakerConfigSchema, CircuitBreakerStateSchema, CircuitBreakerEventTypeSchema, CircuitBreakerEventSchema, CircuitBreakerErrorCodes, validateCircuitBreakerConfig, validateCircuitBreakerState, createDefaultCircuitBreakerConfig, createInitialCircuitBreakerState, type CircuitState, type CircuitBreakerConfig, type CircuitBreakerState, type CircuitBreakerEventType, type CircuitBreakerEvent, type CircuitBreakerErrorCode, } from './circuit-breaker.js';
|
|
11
|
+
export { RateLimitStrategySchema, RateLimitStateEnumSchema, RateLimitConfigSchema, RateLimitStateSchema, RateLimitResultSchema, RateLimitEventTypeSchema, RateLimitEventSchema, RateLimitErrorCodes, validateRateLimitConfig, validateRateLimitState, createDefaultRateLimitConfig, createInitialRateLimitState, type RateLimitStrategy, type RateLimitStateEnum, type RateLimitConfig, type RateLimitState, type RateLimitResult, type RateLimitEventType, type RateLimitEvent, type RateLimitErrorCode, } from './rate-limit.js';
|
|
12
|
+
export { HealthCheckConfigSchema, HealthLevelSchema, HealthStatusSchema, HealthCheckResultSchema, HealthEventTypeSchema, HealthEventSchema, HealthErrorCodes, validateHealthCheckConfig, validateHealthStatus, createDefaultHealthCheckConfig, createInitialHealthStatus, calculatePercentile, type HealthCheckConfig, type HealthLevel, type HealthStatus, type HealthCheckResult, type HealthEventType, type HealthEvent, type HealthErrorCode, } from './health.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,gCAAgC,EAChC,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Contract V1
|
|
3
|
+
*
|
|
4
|
+
* Contracts for provider resilience patterns including
|
|
5
|
+
* circuit breaker, rate limiting, and health monitoring.
|
|
6
|
+
*
|
|
7
|
+
* Also includes provider port interfaces for Ports & Adapters pattern.
|
|
8
|
+
*/
|
|
9
|
+
// Provider Port Interfaces
|
|
10
|
+
export { ProviderMessageSchema, ProviderRequestSchema, ProviderResponseSchema, ModelInfoSchema, validateProviderRequest, validateProviderResponse, safeValidateProviderRequest, createProviderSuccessResponse, createProviderErrorResponse, } from './port.js';
|
|
11
|
+
// Circuit Breaker
|
|
12
|
+
export { CircuitStateSchema, CircuitBreakerConfigSchema, CircuitBreakerStateSchema, CircuitBreakerEventTypeSchema, CircuitBreakerEventSchema, CircuitBreakerErrorCodes, validateCircuitBreakerConfig, validateCircuitBreakerState, createDefaultCircuitBreakerConfig, createInitialCircuitBreakerState, } from './circuit-breaker.js';
|
|
13
|
+
// Rate Limiting
|
|
14
|
+
export { RateLimitStrategySchema, RateLimitStateEnumSchema, RateLimitConfigSchema, RateLimitStateSchema, RateLimitResultSchema, RateLimitEventTypeSchema, RateLimitEventSchema, RateLimitErrorCodes, validateRateLimitConfig, validateRateLimitState, createDefaultRateLimitConfig, createInitialRateLimitState, } from './rate-limit.js';
|
|
15
|
+
// Health Monitoring
|
|
16
|
+
export { HealthCheckConfigSchema, HealthLevelSchema, HealthStatusSchema, HealthCheckResultSchema, HealthEventTypeSchema, HealthEventSchema, HealthErrorCodes, validateHealthCheckConfig, validateHealthStatus, createDefaultHealthCheckConfig, createInitialHealthStatus, calculatePercentile, } from './health.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/provider/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2BAA2B;AAC3B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,GAO5B,MAAM,WAAW,CAAC;AAEnB,kBAAkB;AAClB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,gCAAgC,GAOjC,MAAM,sBAAsB,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,GAS5B,MAAM,iBAAiB,CAAC;AAEzB,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,mBAAmB,GAQpB,MAAM,aAAa,CAAC"}
|