exaai-agent 2.2.0__tar.gz → 2.2.1__tar.gz

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 (161) hide show
  1. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/PKG-INFO +2 -1
  2. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/main.py +12 -2
  3. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tui.py +2 -2
  4. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/docker_runtime.py +9 -0
  5. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/k8s_actions.py +1 -1
  6. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/pyproject.toml +2 -1
  7. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/LICENSE +0 -0
  8. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/README.md +0 -0
  9. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/__init__.py +0 -0
  10. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/__init__.py +0 -0
  11. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/exaai_agent.py +0 -0
  12. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/system_prompt.jinja +0 -0
  13. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/__init__.py +0 -0
  14. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/agent_supervisor.py +0 -0
  15. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/base_agent.py +0 -0
  16. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/scan_modes.py +0 -0
  17. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/shared_memory.py +0 -0
  18. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/state.py +0 -0
  19. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/dashboard/server.py +0 -0
  20. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/dashboard/templates/index.html +0 -0
  21. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/__init__.py +0 -0
  22. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/assets/tui_styles.tcss +0 -0
  23. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/cli.py +0 -0
  24. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/__init__.py +0 -0
  25. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/agents_graph_renderer.py +0 -0
  26. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/base_renderer.py +0 -0
  27. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/browser_renderer.py +0 -0
  28. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/file_edit_renderer.py +0 -0
  29. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/finish_renderer.py +0 -0
  30. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/notes_renderer.py +0 -0
  31. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/proxy_renderer.py +0 -0
  32. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/python_renderer.py +0 -0
  33. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/registry.py +0 -0
  34. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/reporting_renderer.py +0 -0
  35. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/scan_info_renderer.py +0 -0
  36. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/terminal_renderer.py +0 -0
  37. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/thinking_renderer.py +0 -0
  38. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/user_message_renderer.py +0 -0
  39. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/web_search_renderer.py +0 -0
  40. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/utils.py +0 -0
  41. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/__init__.py +0 -0
  42. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/config.py +0 -0
  43. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/fallback.py +0 -0
  44. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/llm.py +0 -0
  45. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/llm_traffic_controller.py +0 -0
  46. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/memory_compressor.py +0 -0
  47. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/output_processor.py +0 -0
  48. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/request_queue.py +0 -0
  49. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/utils.py +0 -0
  50. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/README.md +0 -0
  51. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/__init__.py +0 -0
  52. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/auto_loader.py +0 -0
  53. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/.gitkeep +0 -0
  54. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/aws_cloud_security.jinja +0 -0
  55. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/azure_cloud_security.jinja +0 -0
  56. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/gcp_cloud_security.jinja +0 -0
  57. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/kubernetes_security.jinja +0 -0
  58. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/coordination/root_agent.jinja +0 -0
  59. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/custom/.gitkeep +0 -0
  60. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/fastapi.jinja +0 -0
  61. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja +0 -0
  62. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/nextjs.jinja +0 -0
  63. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/protocols/graphql.jinja +0 -0
  64. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/reconnaissance/.gitkeep +0 -0
  65. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/technologies/firebase_firestore.jinja +0 -0
  66. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/technologies/supabase.jinja +0 -0
  67. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja +0 -0
  68. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/api_security.jinja +0 -0
  69. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja +0 -0
  70. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/broken_function_level_authorization.jinja +0 -0
  71. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja +0 -0
  72. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja +0 -0
  73. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja +0 -0
  74. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/csrf.jinja +0 -0
  75. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja +0 -0
  76. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja +0 -0
  77. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja +0 -0
  78. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja +0 -0
  79. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/idor.jinja +0 -0
  80. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/information_disclosure.jinja +0 -0
  81. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/insecure_file_uploads.jinja +0 -0
  82. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja +0 -0
  83. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/oauth_oidc.jinja +0 -0
  84. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja +0 -0
  85. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +0 -0
  86. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja +0 -0
  87. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja +0 -0
  88. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prompt_injection.jinja +0 -0
  89. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja +0 -0
  90. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja +0 -0
  91. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/rce.jinja +0 -0
  92. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/react2shell.jinja +0 -0
  93. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja +0 -0
  94. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja +0 -0
  95. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/ssrf.jinja +0 -0
  96. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/ssti.jinja +0 -0
  97. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja +0 -0
  98. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/waf_bypass.jinja +0 -0
  99. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja +0 -0
  100. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/xss.jinja +0 -0
  101. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/xxe.jinja +0 -0
  102. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/__init__.py +0 -0
  103. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/runtime.py +0 -0
  104. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/tool_manager.py +0 -0
  105. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/tool_server.py +0 -0
  106. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/telemetry/__init__.py +0 -0
  107. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/telemetry/tracer.py +0 -0
  108. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/__init__.py +0 -0
  109. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/__init__.py +0 -0
  110. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions.py +0 -0
  111. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml +0 -0
  112. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/argument_parser.py +0 -0
  113. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/__init__.py +0 -0
  114. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_actions.py +0 -0
  115. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_actions_schema.xml +0 -0
  116. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_instance.py +0 -0
  117. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/tab_manager.py +0 -0
  118. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/executor.py +0 -0
  119. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/__init__.py +0 -0
  120. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/file_edit_actions.py +0 -0
  121. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml +0 -0
  122. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/__init__.py +0 -0
  123. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/finish_actions.py +0 -0
  124. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/finish_actions_schema.xml +0 -0
  125. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/__init__.py +0 -0
  126. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/k8s_actions_schema.xml +0 -0
  127. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/__init__.py +0 -0
  128. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/notes_actions.py +0 -0
  129. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/notes_actions_schema.xml +0 -0
  130. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/__init__.py +0 -0
  131. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/prompt_injection_actions.py +0 -0
  132. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/prompt_injection_actions_schema.xml +0 -0
  133. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/__init__.py +0 -0
  134. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_actions.py +0 -0
  135. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_actions_schema.xml +0 -0
  136. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_manager.py +0 -0
  137. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/__init__.py +0 -0
  138. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_actions.py +0 -0
  139. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_actions_schema.xml +0 -0
  140. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_instance.py +0 -0
  141. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_manager.py +0 -0
  142. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/registry.py +0 -0
  143. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/__init__.py +0 -0
  144. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/reporting_actions.py +0 -0
  145. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/reporting_actions_schema.xml +0 -0
  146. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/response_analyzer.py +0 -0
  147. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/smart_fuzzer.py +0 -0
  148. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/__init__.py +0 -0
  149. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_actions.py +0 -0
  150. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_actions_schema.xml +0 -0
  151. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_manager.py +0 -0
  152. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_session.py +0 -0
  153. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/__init__.py +0 -0
  154. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/thinking_actions.py +0 -0
  155. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/thinking_actions_schema.xml +0 -0
  156. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/tool_prompts.py +0 -0
  157. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/vuln_validator.py +0 -0
  158. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/waf_bypass.py +0 -0
  159. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/__init__.py +0 -0
  160. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/web_search_actions.py +0 -0
  161. {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/web_search_actions_schema.xml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exaai-agent
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -37,6 +37,7 @@ Requires-Dist: rich
37
37
  Requires-Dist: tenacity (>=9.0.0,<10.0.0)
38
38
  Requires-Dist: textual (>=4.0.0,<5.0.0)
39
39
  Requires-Dist: uvicorn
40
+ Requires-Dist: websockets (>=12.0,<13.0)
40
41
  Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
41
42
  Description-Content-Type: text/markdown
42
43
 
@@ -224,7 +224,17 @@ async def warm_up_llm() -> None:
224
224
  error_text.append("\n\n", style="white")
225
225
  error_text.append("Could not establish connection to the language model.\n", style="white")
226
226
  error_text.append("Please check your configuration and try again.\n", style="white")
227
- error_text.append(f"\nError: {e}", style="dim white")
227
+
228
+ # Enhanced error diagnosis
229
+ error_str = str(e)
230
+ if "AuthenticationError" in error_str:
231
+ error_text.append("🔍 Hint: Your API key seems invalid or expired.\n", style="bold yellow")
232
+ elif "NotFoundError" in error_str:
233
+ error_text.append(f"🔍 Hint: The model '{model_name}' was not found. Check if the model name is correct.\n", style="bold yellow")
234
+ elif "ConnectionError" in error_str:
235
+ error_text.append("🔍 Hint: Network connection failed. Check your internet or proxy settings.\n", style="bold yellow")
236
+
237
+ error_text.append(f"\nError Details: {e}", style="dim white")
228
238
 
229
239
  panel = Panel(
230
240
  error_text,
@@ -242,7 +252,7 @@ async def warm_up_llm() -> None:
242
252
 
243
253
  def get_version() -> str:
244
254
  """Get the current ExaAi version."""
245
- return "2.1.2"
255
+ return "2.2.1"
246
256
 
247
257
 
248
258
  def parse_arguments() -> argparse.Namespace:
@@ -45,7 +45,7 @@ def get_package_version() -> str:
45
45
  return pkg_version("exaai-agent")
46
46
  except PackageNotFoundError:
47
47
  # Fallback version if package not installed
48
- return "2.1.2"
48
+ return "2.2.1"
49
49
 
50
50
 
51
51
  class ChatTextArea(TextArea): # type: ignore[misc]
@@ -80,7 +80,7 @@ class SplashScreen(Static): # type: ignore[misc]
80
80
  NEON_ORANGE = "#ff8800"
81
81
  SOFT_WHITE = "#e0e0e0"
82
82
 
83
- # Enhanced ASCII Logo - ExaAi v2.1.2
83
+ # Enhanced ASCII Logo - ExaAi v2.2.1
84
84
  BANNER = r"""
85
85
  ███████╗██╗ ██╗ █████╗ █████╗ ██╗
86
86
  ██╔════╝╚██╗██╔╝██╔══██╗ ██╔══██╗██║
@@ -104,6 +104,14 @@ class DockerRuntime(AbstractRuntime):
104
104
  self._tool_server_port = tool_server_port
105
105
  self._tool_server_token = tool_server_token
106
106
 
107
+ # Mount kubeconfig if available
108
+ volumes = {}
109
+ kube_config = os.path.expanduser("~/.kube")
110
+ if os.path.exists(kube_config):
111
+ volumes[kube_config] = {'bind': '/root/.kube', 'mode': 'ro'}
112
+ # Also mount for pentester user
113
+ volumes[kube_config] = {'bind': '/home/pentester/.kube', 'mode': 'ro'}
114
+
107
115
  container = self.client.containers.run(
108
116
  EXAAI_IMAGE,
109
117
  command="sleep infinity",
@@ -114,6 +122,7 @@ class DockerRuntime(AbstractRuntime):
114
122
  f"{caido_port}/tcp": caido_port,
115
123
  f"{tool_server_port}/tcp": tool_server_port,
116
124
  },
125
+ volumes=volumes,
117
126
  cap_add=["NET_ADMIN", "NET_RAW"],
118
127
  labels={"exaai-scan-id": scan_id},
119
128
  environment={
@@ -10,7 +10,7 @@ Comprehensive security testing for Kubernetes clusters including:
10
10
  - Container vulnerability scanning integration
11
11
 
12
12
  Author: ALhilali
13
- Version: 1.0.0
13
+ Version: 2.2.1
14
14
  """
15
15
 
16
16
  import logging
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "exaai-agent"
3
- version = "2.2.0"
3
+ version = "2.2.1"
4
4
  description = "ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing"
5
5
  authors = ["ExaAi Team <mahmedhleli@gmail.com>"]
6
6
  readme = "README.md"
@@ -63,6 +63,7 @@ xmltodict = "^0.13.0"
63
63
  pyte = "^0.8.1"
64
64
  requests = "^2.32.0"
65
65
  libtmux = "^0.46.2"
66
+ websockets = "^12.0"
66
67
 
67
68
  [tool.poetry.group.dev.dependencies]
68
69
  # Type checking and static analysis
File without changes
File without changes