exaai-agent 2.0.8__py3-none-any.whl → 2.0.9__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exaai-agent
3
- Version: 2.0.8
3
+ Version: 2.0.9
4
4
  Summary: ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -33,11 +33,11 @@ exaaiagnt/interface/utils.py,sha256=xp6eDOC8C0c3cjt791S_jBDs1B-xp_ydIb74QnMLEt8,
33
33
  exaaiagnt/llm/__init__.py,sha256=hUVixjSSIUtwIP2I5D_9e6Kdxhhunnajgxx_2DEYNww,1095
34
34
  exaaiagnt/llm/config.py,sha256=HQ0skwQxtHwiDLDWBCU1Fp4UoQ8tbrTNQw9s7JGVaiY,3303
35
35
  exaaiagnt/llm/fallback.py,sha256=oPS0PGRxEHnyyBgS4yP9zdwSf4JFJh4dYZ3g8OFwWEE,11413
36
- exaaiagnt/llm/llm.py,sha256=EEPte4O37YVhCrJleHS8uU5eaYw_WDXKIEwlK2USJgE,18606
37
- exaaiagnt/llm/llm_traffic_controller.py,sha256=HZ0OZcbfr5XLVSpuW8EQLn3gQht3rjY1n6SGRFpBZa0,12187
36
+ exaaiagnt/llm/llm.py,sha256=D9VnU73ffz7GhotGqQ5RZDufQ8xPKz8aouU23oW0kPY,18664
37
+ exaaiagnt/llm/llm_traffic_controller.py,sha256=HkblT8OI3RcUdxT9kvyeNsUhowAGf1FZkhid_PdS998,12215
38
38
  exaaiagnt/llm/memory_compressor.py,sha256=_At7e5QlDv2vrUDUJMEwm4CjNJ2uGYQsOBhiHiQvVr8,7054
39
39
  exaaiagnt/llm/output_processor.py,sha256=JC3TtzYj9DJhJRuKzz_VV3WIwAyYhUdZeY1N9c4SzVw,13568
40
- exaaiagnt/llm/request_queue.py,sha256=niwJVzWyvNcOl9uVYABO55c6ZReMxY_GIUhKXh946dI,9195
40
+ exaaiagnt/llm/request_queue.py,sha256=2H-jEcI1krY8U8oMoULu-1y6kEV84enI36QLUkTLKm0,9198
41
41
  exaaiagnt/llm/utils.py,sha256=0Z0r6qo9IfUSOJt5FJsq3X-veXrA8A09frc2VIy-aS4,2540
42
42
  exaaiagnt/prompts/README.md,sha256=Svgjx8pO1W0aVzC9z0Fxs88-NBA1whEqU8zrGBDqO0M,3813
43
43
  exaaiagnt/prompts/__init__.py,sha256=nUs1powNe_6sWmM5_KkAIxZj97t5IiMMgNrL39WwUjg,5042
@@ -143,8 +143,8 @@ exaaiagnt/tools/waf_bypass.py,sha256=71oPWnDHjn2EHi6I1SluZCKfqfXkA5j61oIkL5kNoSw
143
143
  exaaiagnt/tools/web_search/__init__.py,sha256=m5PCHXqeNVraLRLNIbh54Z2N4Y_75d-ftqwyq3dbCd0,70
144
144
  exaaiagnt/tools/web_search/web_search_actions.py,sha256=jmlN2uIq8lRbhRnyaMQkC-44jhpfkLQZ_byYNlNNlOY,3111
145
145
  exaaiagnt/tools/web_search/web_search_actions_schema.xml,sha256=Ihc3Gv4LaPI_MzBbwZOt3y4pwg9xmtl8KfPNvFihEP4,4805
146
- exaai_agent-2.0.8.dist-info/METADATA,sha256=DQPnhLMYY4bBopzTdAK7M_jMZS1jcZZrIyx-k8pCqSQ,11959
147
- exaai_agent-2.0.8.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
148
- exaai_agent-2.0.8.dist-info/entry_points.txt,sha256=iLSTRDSjN8Zyc2Wo6WXmr4MtyEWkdqtZ1j_Hx73MiUs,137
149
- exaai_agent-2.0.8.dist-info/licenses/LICENSE,sha256=RV6IGl0sWdfbbtJmjPr1w_qwGyGt2jv02PXsAzN_kNs,11460
150
- exaai_agent-2.0.8.dist-info/RECORD,,
146
+ exaai_agent-2.0.9.dist-info/METADATA,sha256=LCoSJoucmT-AzVO6DLNcH8PNZEZLP6k45QJaMNO-6fc,11959
147
+ exaai_agent-2.0.9.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
148
+ exaai_agent-2.0.9.dist-info/entry_points.txt,sha256=iLSTRDSjN8Zyc2Wo6WXmr4MtyEWkdqtZ1j_Hx73MiUs,137
149
+ exaai_agent-2.0.9.dist-info/licenses/LICENSE,sha256=RV6IGl0sWdfbbtJmjPr1w_qwGyGt2jv02PXsAzN_kNs,11460
150
+ exaai_agent-2.0.9.dist-info/RECORD,,
exaaiagnt/llm/llm.py CHANGED
@@ -17,6 +17,7 @@ from litellm.utils import supports_prompt_caching
17
17
 
18
18
  from exaaiagnt.llm.config import LLMConfig
19
19
  from exaaiagnt.llm.memory_compressor import MemoryCompressor
20
+ from exaaiagnt.llm.request_queue import get_global_queue
20
21
  from exaaiagnt.llm.llm_traffic_controller import get_traffic_controller, RequestPriority
21
22
  from exaaiagnt.llm.utils import _truncate_to_first_function, parse_tool_invocations
22
23
  from exaaiagnt.prompts import load_prompt_modules
@@ -73,8 +73,8 @@ class AdaptiveLLMController:
73
73
  # Rate limiting state
74
74
  self._last_request_time = 0.0
75
75
  self._consecutive_rate_limits = 0
76
- self._base_delay = 2.0 # Base delay between requests
77
- self._current_delay = 2.0
76
+ self._base_delay = 4.0 # Base delay between requests
77
+ self._current_delay = 4.0
78
78
  self._max_delay = 30.0
79
79
 
80
80
  # Statistics
@@ -88,8 +88,8 @@ class AdaptiveLLMController:
88
88
  self._tool_execution_lock = asyncio.Lock()
89
89
 
90
90
  # Configuration
91
- self._max_retries = 3
92
- self._rate_limit_wait = 6.0 # Wait time after rate limit
91
+ self._max_retries = 10 # Increased for Gemini
92
+ self._rate_limit_wait = 15.0 # Longer wait after rate limit
93
93
  self._enable_verbose_logging = False
94
94
 
95
95
  self._initialized = True
@@ -65,8 +65,8 @@ class LLMRequestQueue:
65
65
 
66
66
  def __init__(
67
67
  self,
68
- max_concurrent: int = 4,
69
- delay_between_requests: float = 2.0,
68
+ max_concurrent: int = 2,
69
+ delay_between_requests: float = 4.0,
70
70
  request_timeout: int = 300,
71
71
  ):
72
72
  # Load configuration from environment
@@ -161,8 +161,8 @@ class LLMRequestQueue:
161
161
  self._semaphore.release()
162
162
 
163
163
  @retry(
164
- stop=stop_after_attempt(10), # Increased from 7 to 10
165
- wait=wait_exponential(multiplier=2, min=5, max=120), # Better backoff
164
+ stop=stop_after_attempt(15), # Increased for rate limits
165
+ wait=wait_exponential(multiplier=3, min=10, max=180), # Longer delays
166
166
  retry=retry_if_exception(should_retry_exception),
167
167
  before_sleep=before_sleep_log(logger, logging.WARNING),
168
168
  reraise=True,