proxilion 0.0.1__py3-none-any.whl

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.
Files changed (94) hide show
  1. proxilion/__init__.py +136 -0
  2. proxilion/audit/__init__.py +133 -0
  3. proxilion/audit/base_exporters.py +527 -0
  4. proxilion/audit/compliance/__init__.py +130 -0
  5. proxilion/audit/compliance/base.py +457 -0
  6. proxilion/audit/compliance/eu_ai_act.py +603 -0
  7. proxilion/audit/compliance/iso27001.py +544 -0
  8. proxilion/audit/compliance/soc2.py +491 -0
  9. proxilion/audit/events.py +493 -0
  10. proxilion/audit/explainability.py +1173 -0
  11. proxilion/audit/exporters/__init__.py +58 -0
  12. proxilion/audit/exporters/aws_s3.py +636 -0
  13. proxilion/audit/exporters/azure_storage.py +608 -0
  14. proxilion/audit/exporters/cloud_base.py +468 -0
  15. proxilion/audit/exporters/gcp_storage.py +570 -0
  16. proxilion/audit/exporters/multi_exporter.py +498 -0
  17. proxilion/audit/hash_chain.py +652 -0
  18. proxilion/audit/logger.py +543 -0
  19. proxilion/caching/__init__.py +49 -0
  20. proxilion/caching/tool_cache.py +633 -0
  21. proxilion/context/__init__.py +73 -0
  22. proxilion/context/context_window.py +556 -0
  23. proxilion/context/message_history.py +505 -0
  24. proxilion/context/session.py +735 -0
  25. proxilion/contrib/__init__.py +51 -0
  26. proxilion/contrib/anthropic.py +609 -0
  27. proxilion/contrib/google.py +1012 -0
  28. proxilion/contrib/langchain.py +641 -0
  29. proxilion/contrib/mcp.py +893 -0
  30. proxilion/contrib/openai.py +646 -0
  31. proxilion/core.py +3058 -0
  32. proxilion/decorators.py +966 -0
  33. proxilion/engines/__init__.py +287 -0
  34. proxilion/engines/base.py +266 -0
  35. proxilion/engines/casbin_engine.py +412 -0
  36. proxilion/engines/opa_engine.py +493 -0
  37. proxilion/engines/simple.py +437 -0
  38. proxilion/exceptions.py +887 -0
  39. proxilion/guards/__init__.py +54 -0
  40. proxilion/guards/input_guard.py +522 -0
  41. proxilion/guards/output_guard.py +634 -0
  42. proxilion/observability/__init__.py +198 -0
  43. proxilion/observability/cost_tracker.py +866 -0
  44. proxilion/observability/hooks.py +683 -0
  45. proxilion/observability/metrics.py +798 -0
  46. proxilion/observability/session_cost_tracker.py +1063 -0
  47. proxilion/policies/__init__.py +67 -0
  48. proxilion/policies/base.py +304 -0
  49. proxilion/policies/builtin.py +486 -0
  50. proxilion/policies/registry.py +376 -0
  51. proxilion/providers/__init__.py +201 -0
  52. proxilion/providers/adapter.py +468 -0
  53. proxilion/providers/anthropic_adapter.py +330 -0
  54. proxilion/providers/gemini_adapter.py +391 -0
  55. proxilion/providers/openai_adapter.py +294 -0
  56. proxilion/py.typed +0 -0
  57. proxilion/resilience/__init__.py +81 -0
  58. proxilion/resilience/degradation.py +615 -0
  59. proxilion/resilience/fallback.py +555 -0
  60. proxilion/resilience/retry.py +554 -0
  61. proxilion/scheduling/__init__.py +57 -0
  62. proxilion/scheduling/priority_queue.py +419 -0
  63. proxilion/scheduling/scheduler.py +459 -0
  64. proxilion/security/__init__.py +244 -0
  65. proxilion/security/agent_trust.py +968 -0
  66. proxilion/security/behavioral_drift.py +794 -0
  67. proxilion/security/cascade_protection.py +869 -0
  68. proxilion/security/circuit_breaker.py +428 -0
  69. proxilion/security/cost_limiter.py +690 -0
  70. proxilion/security/idor_protection.py +460 -0
  71. proxilion/security/intent_capsule.py +849 -0
  72. proxilion/security/intent_validator.py +495 -0
  73. proxilion/security/memory_integrity.py +767 -0
  74. proxilion/security/rate_limiter.py +509 -0
  75. proxilion/security/scope_enforcer.py +680 -0
  76. proxilion/security/sequence_validator.py +636 -0
  77. proxilion/security/trust_boundaries.py +784 -0
  78. proxilion/streaming/__init__.py +70 -0
  79. proxilion/streaming/detector.py +761 -0
  80. proxilion/streaming/transformer.py +674 -0
  81. proxilion/timeouts/__init__.py +55 -0
  82. proxilion/timeouts/decorators.py +477 -0
  83. proxilion/timeouts/manager.py +545 -0
  84. proxilion/tools/__init__.py +69 -0
  85. proxilion/tools/decorators.py +493 -0
  86. proxilion/tools/registry.py +732 -0
  87. proxilion/types.py +339 -0
  88. proxilion/validation/__init__.py +93 -0
  89. proxilion/validation/pydantic_schema.py +351 -0
  90. proxilion/validation/schema.py +651 -0
  91. proxilion-0.0.1.dist-info/METADATA +872 -0
  92. proxilion-0.0.1.dist-info/RECORD +94 -0
  93. proxilion-0.0.1.dist-info/WHEEL +4 -0
  94. proxilion-0.0.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,198 @@
1
+ """
2
+ Observability components for Proxilion.
3
+
4
+ This module provides visibility into agent operations:
5
+ - Token usage and cost tracking
6
+ - Budget enforcement and cost-based rate limiting
7
+ - Usage analytics and summaries
8
+ - Metrics and observability hooks
9
+
10
+ Cost Tracking Example:
11
+ >>> from proxilion.observability import CostTracker, BudgetPolicy
12
+ >>>
13
+ >>> # Create cost tracker with budget policy
14
+ >>> tracker = CostTracker(
15
+ ... budget_policy=BudgetPolicy(
16
+ ... max_cost_per_request=1.00,
17
+ ... max_cost_per_user_per_day=50.00,
18
+ ... )
19
+ ... )
20
+ >>>
21
+ >>> # Record usage
22
+ >>> record = tracker.record_usage(
23
+ ... model="claude-sonnet-4-20250514",
24
+ ... input_tokens=1000,
25
+ ... output_tokens=500,
26
+ ... user_id="user_123",
27
+ ... )
28
+ >>> print(f"Cost: ${record.cost_usd:.4f}")
29
+
30
+ Metrics Example:
31
+ >>> from proxilion.observability import (
32
+ ... ObservabilityHooks,
33
+ ... InMemoryMetricHook,
34
+ ... emit_counter,
35
+ ... emit_timing,
36
+ ... )
37
+ >>>
38
+ >>> # Set up metrics hook
39
+ >>> hooks = ObservabilityHooks.get_instance()
40
+ >>> memory_hook = InMemoryMetricHook()
41
+ >>> hooks.add_metric_hook(memory_hook)
42
+ >>>
43
+ >>> # Emit metrics
44
+ >>> emit_counter("proxilion.auth.requests", tags={"user": "alice"})
45
+ >>> emit_timing("proxilion.auth.latency_ms", 45.2, tags={"tool": "search"})
46
+ >>>
47
+ >>> # Check recorded metrics
48
+ >>> memory_hook.get_counter("proxilion.auth.requests", {"user": "alice"})
49
+ 1.0
50
+
51
+ Standard Metrics:
52
+ Proxilion emits the following standard metrics:
53
+
54
+ Authorization:
55
+ - proxilion.auth.requests: Total authorization requests
56
+ - proxilion.auth.allowed: Allowed requests
57
+ - proxilion.auth.denied: Denied requests
58
+ - proxilion.auth.latency_ms: Authorization check latency
59
+
60
+ Rate Limiting:
61
+ - proxilion.rate_limit.requests: Total rate limit checks
62
+ - proxilion.rate_limit.exceeded: Rate limit exceeded events
63
+
64
+ Tool Execution:
65
+ - proxilion.tool.calls: Total tool calls
66
+ - proxilion.tool.latency_ms: Tool execution latency
67
+ - proxilion.tool.errors: Tool execution errors
68
+
69
+ Cost:
70
+ - proxilion.cost.usd: Total cost in USD
71
+ - proxilion.tokens.input: Input tokens processed
72
+ - proxilion.tokens.output: Output tokens generated
73
+ """
74
+
75
+ from proxilion.observability.cost_tracker import (
76
+ DEFAULT_PRICING,
77
+ BudgetPolicy,
78
+ CostSummary,
79
+ CostTracker,
80
+ ModelPricing,
81
+ UsageRecord,
82
+ create_cost_tracker,
83
+ )
84
+ from proxilion.observability.hooks import (
85
+ METRIC_AUTH_ALLOWED,
86
+ METRIC_AUTH_DENIED,
87
+ METRIC_AUTH_LATENCY,
88
+ # Standard metric names
89
+ METRIC_AUTH_REQUESTS,
90
+ METRIC_CIRCUIT_BREAKER_CLOSED,
91
+ METRIC_CIRCUIT_BREAKER_HALF_OPEN,
92
+ METRIC_CIRCUIT_BREAKER_OPEN,
93
+ METRIC_COST_USD,
94
+ METRIC_RATE_LIMIT_EXCEEDED,
95
+ METRIC_RATE_LIMIT_REQUESTS,
96
+ METRIC_TOKENS_INPUT,
97
+ METRIC_TOKENS_OUTPUT,
98
+ METRIC_TOOL_CALLS,
99
+ METRIC_TOOL_ERRORS,
100
+ METRIC_TOOL_LATENCY,
101
+ HistogramStats,
102
+ InMemoryMetricHook,
103
+ # Built-in hooks
104
+ LoggingMetricHook,
105
+ MetricHook,
106
+ # Core classes
107
+ MetricType,
108
+ ObservabilityHooks,
109
+ # Convenience functions
110
+ emit_counter,
111
+ emit_gauge,
112
+ emit_histogram,
113
+ emit_timing,
114
+ )
115
+
116
+ # Real-time metrics and alerts
117
+ from proxilion.observability.metrics import (
118
+ Alert,
119
+ AlertManager,
120
+ AlertRule,
121
+ EventType,
122
+ MetricsCollector,
123
+ MetricType as SecurityMetricType,
124
+ PrometheusExporter,
125
+ SecurityEvent,
126
+ )
127
+
128
+ # Session-based cost tracking
129
+ from proxilion.observability.session_cost_tracker import (
130
+ AgentCostProfile,
131
+ AlertSeverity,
132
+ AlertType,
133
+ CostAlert,
134
+ Session,
135
+ SessionCostTracker,
136
+ SessionState,
137
+ SessionSummary,
138
+ create_session_cost_tracker,
139
+ )
140
+
141
+ __all__ = [
142
+ # Cost tracking
143
+ "BudgetPolicy",
144
+ "CostSummary",
145
+ "CostTracker",
146
+ "ModelPricing",
147
+ "UsageRecord",
148
+ "DEFAULT_PRICING",
149
+ "create_cost_tracker",
150
+ # Metrics - Core classes
151
+ "MetricType",
152
+ "MetricHook",
153
+ "ObservabilityHooks",
154
+ "HistogramStats",
155
+ # Metrics - Built-in hooks
156
+ "LoggingMetricHook",
157
+ "InMemoryMetricHook",
158
+ # Metrics - Convenience functions
159
+ "emit_counter",
160
+ "emit_gauge",
161
+ "emit_histogram",
162
+ "emit_timing",
163
+ # Metrics - Standard metric names
164
+ "METRIC_AUTH_REQUESTS",
165
+ "METRIC_AUTH_ALLOWED",
166
+ "METRIC_AUTH_DENIED",
167
+ "METRIC_AUTH_LATENCY",
168
+ "METRIC_RATE_LIMIT_REQUESTS",
169
+ "METRIC_RATE_LIMIT_EXCEEDED",
170
+ "METRIC_TOOL_CALLS",
171
+ "METRIC_TOOL_LATENCY",
172
+ "METRIC_TOOL_ERRORS",
173
+ "METRIC_COST_USD",
174
+ "METRIC_TOKENS_INPUT",
175
+ "METRIC_TOKENS_OUTPUT",
176
+ "METRIC_CIRCUIT_BREAKER_OPEN",
177
+ "METRIC_CIRCUIT_BREAKER_HALF_OPEN",
178
+ "METRIC_CIRCUIT_BREAKER_CLOSED",
179
+ # Real-time metrics and alerts
180
+ "MetricsCollector",
181
+ "AlertManager",
182
+ "AlertRule",
183
+ "PrometheusExporter",
184
+ "SecurityEvent",
185
+ "Alert",
186
+ "EventType",
187
+ "SecurityMetricType",
188
+ # Session cost tracking
189
+ "AgentCostProfile",
190
+ "AlertSeverity",
191
+ "AlertType",
192
+ "CostAlert",
193
+ "Session",
194
+ "SessionCostTracker",
195
+ "SessionState",
196
+ "SessionSummary",
197
+ "create_session_cost_tracker",
198
+ ]