1"""Constants for AI Governance."""
2
3from __future__ import annotations
4
5import importlib.metadata
6
7try:
8 __version__: str = importlib.metadata.version("lexigram-ai-governance")
9except ImportError:
10 __version__ = "0.0.0"
11
12
13# Environment variable prefix
14ENV_PREFIX: str = "LEX_AI_GOVERNANCE__"
15ENV_NESTED_DELIMITER: str = "__"
16
17# Budget defaults
18DEFAULT_SOFT_LIMIT_PCT: float = 0.8
19"""Default soft-limit threshold as a fraction of monthly budget."""
20
21MAX_MONTHLY_BUDGET: float = 100_000.0
22"""Safety ceiling for monthly budget configuration."""
23
24# Rate-limit defaults
25DEFAULT_RPM_LIMIT: int = 60
26"""Default requests-per-minute limit when RPM enforcement is enabled."""
27
28DEFAULT_TPM_LIMIT: int = 100_000
29"""Default tokens-per-minute limit when TPM enforcement is enabled."""
30
31RPM_WINDOW_SECONDS: float = 60.0
32"""Sliding window size in seconds for RPM tracking."""
33
34# Persistence
35SPEND_TTL_SECONDS: int = 32 * 24 * 3600
36"""TTL for monthly spend records in persistence backends (~32 days)."""
37
38
39__all__ = [
40 "DEFAULT_RPM_LIMIT",
41 "DEFAULT_SOFT_LIMIT_PCT",
42 "DEFAULT_TPM_LIMIT",
43 "ENV_NESTED_DELIMITER",
44 "ENV_PREFIX",
45 "MAX_MONTHLY_BUDGET",
46 "RPM_WINDOW_SECONDS",
47 "SPEND_TTL_SECONDS",
48 "__version__",
49]