exaai-agent 2.0.9__tar.gz → 2.2.0__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.0.9 → exaai_agent-2.2.0}/PKG-INFO +72 -42
  2. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/README.md +71 -41
  3. exaai_agent-2.2.0/exaaiagnt/dashboard/server.py +99 -0
  4. exaai_agent-2.2.0/exaaiagnt/dashboard/templates/index.html +232 -0
  5. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/cli.py +62 -30
  6. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/main.py +11 -1
  7. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tui.py +12 -8
  8. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/llm.py +43 -8
  9. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/llm_traffic_controller.py +5 -3
  10. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/README.md +3 -1
  11. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/auto_loader.py +31 -0
  12. exaai_agent-2.2.0/exaaiagnt/prompts/cloud/azure_cloud_security.jinja +126 -0
  13. exaai_agent-2.2.0/exaaiagnt/prompts/cloud/gcp_cloud_security.jinja +158 -0
  14. exaai_agent-2.2.0/exaaiagnt/prompts/cloud/kubernetes_security.jinja +97 -0
  15. exaai_agent-2.2.0/exaaiagnt/prompts/vulnerabilities/prompt_injection.jinja +276 -0
  16. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/tool_manager.py +12 -3
  17. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/telemetry/tracer.py +17 -1
  18. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/__init__.py +24 -0
  19. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/executor.py +16 -4
  20. exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/__init__.py +29 -0
  21. exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/k8s_actions.py +319 -0
  22. exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/k8s_actions_schema.xml +36 -0
  23. exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/__init__.py +26 -0
  24. exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/prompt_injection_actions.py +712 -0
  25. exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/prompt_injection_actions_schema.xml +28 -0
  26. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_instance.py +16 -1
  27. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/reporting_actions.py +34 -5
  28. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/response_analyzer.py +5 -3
  29. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/smart_fuzzer.py +5 -3
  30. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/vuln_validator.py +5 -3
  31. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/web_search/web_search_actions.py +4 -2
  32. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/pyproject.toml +1 -1
  33. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/LICENSE +0 -0
  34. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/__init__.py +0 -0
  35. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/__init__.py +0 -0
  36. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/exaai_agent.py +0 -0
  37. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/system_prompt.jinja +0 -0
  38. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/__init__.py +0 -0
  39. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/agent_supervisor.py +0 -0
  40. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/base_agent.py +0 -0
  41. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/scan_modes.py +0 -0
  42. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/shared_memory.py +0 -0
  43. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/state.py +0 -0
  44. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/__init__.py +0 -0
  45. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/assets/tui_styles.tcss +0 -0
  46. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/__init__.py +0 -0
  47. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/agents_graph_renderer.py +0 -0
  48. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/base_renderer.py +0 -0
  49. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/browser_renderer.py +0 -0
  50. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/file_edit_renderer.py +0 -0
  51. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/finish_renderer.py +0 -0
  52. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/notes_renderer.py +0 -0
  53. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/proxy_renderer.py +0 -0
  54. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/python_renderer.py +0 -0
  55. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/registry.py +0 -0
  56. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/reporting_renderer.py +0 -0
  57. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/scan_info_renderer.py +0 -0
  58. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/terminal_renderer.py +0 -0
  59. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/thinking_renderer.py +0 -0
  60. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/user_message_renderer.py +0 -0
  61. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/web_search_renderer.py +0 -0
  62. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/utils.py +0 -0
  63. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/__init__.py +0 -0
  64. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/config.py +0 -0
  65. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/fallback.py +0 -0
  66. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/memory_compressor.py +0 -0
  67. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/output_processor.py +0 -0
  68. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/request_queue.py +0 -0
  69. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/utils.py +0 -0
  70. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/__init__.py +0 -0
  71. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/cloud/.gitkeep +0 -0
  72. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/cloud/aws_cloud_security.jinja +0 -0
  73. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/coordination/root_agent.jinja +0 -0
  74. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/custom/.gitkeep +0 -0
  75. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/fastapi.jinja +0 -0
  76. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja +0 -0
  77. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/nextjs.jinja +0 -0
  78. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/protocols/graphql.jinja +0 -0
  79. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/reconnaissance/.gitkeep +0 -0
  80. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/technologies/firebase_firestore.jinja +0 -0
  81. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/technologies/supabase.jinja +0 -0
  82. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja +0 -0
  83. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/api_security.jinja +0 -0
  84. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja +0 -0
  85. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/broken_function_level_authorization.jinja +0 -0
  86. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja +0 -0
  87. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja +0 -0
  88. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja +0 -0
  89. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/csrf.jinja +0 -0
  90. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja +0 -0
  91. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja +0 -0
  92. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja +0 -0
  93. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja +0 -0
  94. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/idor.jinja +0 -0
  95. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/information_disclosure.jinja +0 -0
  96. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/insecure_file_uploads.jinja +0 -0
  97. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja +0 -0
  98. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/oauth_oidc.jinja +0 -0
  99. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja +0 -0
  100. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +0 -0
  101. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja +0 -0
  102. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja +0 -0
  103. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja +0 -0
  104. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja +0 -0
  105. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/rce.jinja +0 -0
  106. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/react2shell.jinja +0 -0
  107. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja +0 -0
  108. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja +0 -0
  109. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/ssrf.jinja +0 -0
  110. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/ssti.jinja +0 -0
  111. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja +0 -0
  112. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/waf_bypass.jinja +0 -0
  113. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja +0 -0
  114. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/xss.jinja +0 -0
  115. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/xxe.jinja +0 -0
  116. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/__init__.py +0 -0
  117. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/docker_runtime.py +0 -0
  118. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/runtime.py +0 -0
  119. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/tool_server.py +0 -0
  120. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/telemetry/__init__.py +0 -0
  121. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/__init__.py +0 -0
  122. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/agents_graph_actions.py +0 -0
  123. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml +0 -0
  124. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/argument_parser.py +0 -0
  125. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/__init__.py +0 -0
  126. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_actions.py +0 -0
  127. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_actions_schema.xml +0 -0
  128. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_instance.py +0 -0
  129. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/tab_manager.py +0 -0
  130. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/__init__.py +0 -0
  131. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/file_edit_actions.py +0 -0
  132. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml +0 -0
  133. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/__init__.py +0 -0
  134. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/finish_actions.py +0 -0
  135. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/finish_actions_schema.xml +0 -0
  136. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/__init__.py +0 -0
  137. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/notes_actions.py +0 -0
  138. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/notes_actions_schema.xml +0 -0
  139. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/__init__.py +0 -0
  140. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_actions.py +0 -0
  141. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_actions_schema.xml +0 -0
  142. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_manager.py +0 -0
  143. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/__init__.py +0 -0
  144. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_actions.py +0 -0
  145. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_actions_schema.xml +0 -0
  146. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_manager.py +0 -0
  147. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/registry.py +0 -0
  148. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/__init__.py +0 -0
  149. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/reporting_actions_schema.xml +0 -0
  150. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/__init__.py +0 -0
  151. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_actions.py +0 -0
  152. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_actions_schema.xml +0 -0
  153. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_manager.py +0 -0
  154. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_session.py +0 -0
  155. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/__init__.py +0 -0
  156. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/thinking_actions.py +0 -0
  157. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/thinking_actions_schema.xml +0 -0
  158. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/tool_prompts.py +0 -0
  159. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/waf_bypass.py +0 -0
  160. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/web_search/__init__.py +0 -0
  161. {exaai_agent-2.0.9 → exaai_agent-2.2.0}/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.0.9
3
+ Version: 2.2.0
4
4
  Summary: ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -53,57 +53,60 @@ Description-Content-Type: text/markdown
53
53
  [![Python](https://img.shields.io/pypi/pyversions/exaai-agent?color=3776AB)](https://pypi.org/project/exaai-agent/)
54
54
  [![PyPI](https://img.shields.io/pypi/v/exaai-agent?color=10b981)](https://pypi.org/project/exaai-agent/)
55
55
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
56
- [![Version](https://img.shields.io/badge/version-2.1.0-00d4ff.svg)]()
56
+ [![Version](https://img.shields.io/badge/version-2.1.2-00d4ff.svg)]()
57
57
 
58
58
  </div>
59
59
 
60
60
  <br>
61
61
 
62
62
  > [!TIP]
63
- > **🚀 v2.1.0 Released!** React2Shell Detection (CVE-2025-55182), Cloud Security Testing, Smart Fuzzing, and CLI improvements with `exaai` command!
63
+ > **🚀 v2.1.2 Released!** Now supports **AI Agent Integration (OpenClaw)**, Kubernetes Security, Azure/GCP modules, and Prompt Injection detection.
64
+ >
65
+ > 🤖 **Connect Your Agent:** You can now control ExaAiAgent via any AI agent (OpenClaw, etc).
66
+ > Just send this command to your agent:
67
+ > ```
68
+ > Read https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/SKILL.md and follow the instructions to join ExaAiAgent
69
+ > ```
64
70
 
65
71
  ---
66
72
 
67
- ## 🔥 What's New in v2.1.0
73
+ ## 🔥 What's New in v2.1.2
68
74
 
69
- ### 🚨 React2Shell Detection (CVE-2025-55182)
75
+ ### 🤖 AI Agent Integration (OpenClaw)
70
76
 
71
- New critical vulnerability scanner for **React Server Components**:
77
+ Seamlessly integrate ExaAiAgent with your AI workforce:
72
78
 
73
- - **CVSS 10.0** - Unauthenticated RCE via RSC Flight protocol
74
- - Auto-detects Next.js 15.x/16.x, React 19.x applications
75
- - Complete exploitation methodology and PoC generation
76
- - WAF bypass techniques included
79
+ - **Agent Control**: Control scans via OpenClaw or any agent framework
80
+ - **Auto-Discovery**: Agents can read `SKILL.md` to self-onboard
81
+ - **Output Optimization**: Tools now output cleaner data (no ANSI codes) for LLM consumption
77
82
 
78
- ### ☁️ AWS & Cloud Security
83
+ ### Kubernetes & Cloud Security (Updated)
79
84
 
80
- Comprehensive cloud infrastructure testing:
85
+ Expanded coverage for cloud-native infrastructure:
81
86
 
82
- - **AWS**: EC2 Metadata SSRF, S3 buckets, IAM escalation, Lambda
83
- - **Azure**: Blob storage, Managed Identity, Azure AD
84
- - **GCP**: Cloud Storage, Service Account abuse
85
- - **Kubernetes**: RBAC, Secrets, Pod escape
87
+ - **Kubernetes**: Deep RBAC auditing, Pod Security Standards (PSS), Network Policy checks
88
+ - **Azure**: Blob Storage, Entra ID (Azure AD), Key Vault auditing
89
+ - **GCP**: Cloud Storage, IAM, Service Account key leaks
90
+ - **Prompt Injection**: Dedicated scanner for AI/LLM applications
86
91
 
87
- ### Smart Security Tools
92
+ ### 🛡️ Smart Security Tools
88
93
 
89
94
  | Tool | Capability |
90
95
  |------|------------|
91
- | **Smart Fuzzer** | Context-aware payloads, parameter type detection |
96
+ | **Smart Fuzzer** | Thread-safe, context-aware fuzzing with rate limiting |
92
97
  | **Response Analyzer** | SQL errors, stack traces, sensitive data detection |
93
- | **Vuln Validator** | PoC generation, CVSS scoring, remediation advice |
94
- | **WAF Bypass** | Multi-layer bypass techniques |
98
+ | **Vuln Validator** | PoC generation with false positive reduction |
99
+ | **WAF Bypass** | Multi-layer bypass for Cloudflare, Akamai, AWS WAF |
95
100
 
96
- ### ⚡ CLI Improvements
101
+ ### ⚡ CLI & Stability
97
102
 
98
- ```bash
99
- # New command (shorter!)
100
- exaai --target https://example.com
101
-
102
- # Version check
103
- exaai --version
103
+ - **Thread-Safety**: Fixed race conditions in async scans
104
+ - **Resource Management**: Auto-shutdown and cleanup of background processes
105
+ - **Installation**: Robust `install.sh` for Linux/macOS (bash/zsh/fish)
104
106
 
105
- # TUI mode
106
- exaai tui
107
+ ```bash
108
+ # New install script
109
+ curl -sSL https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/install.sh | bash
107
110
  ```
108
111
 
109
112
  ---
@@ -146,6 +149,10 @@ ExaAiAgent is an elite AI-powered cybersecurity agent that acts like a real pene
146
149
 
147
150
  ```bash
148
151
  # Install ExaAiAgent
152
+
153
+ # Method 1: Automated Script (Recommended)
154
+ pip install exaai-agent
155
+ # Method 2: pipx
149
156
  pipx install exaai-agent
150
157
 
151
158
  # Configure your AI provider (choose one)
@@ -287,7 +294,7 @@ jobs:
287
294
  - uses: actions/checkout@v4
288
295
 
289
296
  - name: Install ExaAiAgent
290
- run: pipx install exaai-agent
297
+ run: curl -sSL https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/install.sh | bash
291
298
 
292
299
  - name: Run ExaAiAgent
293
300
  env:
@@ -339,26 +346,49 @@ export PERPLEXITY_API_KEY="key" # For search capabilities
339
346
  | `oauth_oidc` | OAuth2/OIDC flaws |
340
347
  | `waf_bypass` | WAF bypass techniques |
341
348
  | `subdomain_takeover` | Subdomain takeover |
349
+ | `prompt_injection` | AI/LLM prompt injection attacks |
350
+ | `kubernetes_security` | **NEW!** K8s RBAC & Pod Security auditing |
342
351
 
343
352
  ---
344
353
 
345
354
  ## 🆕 Changelog
346
355
 
347
- ### v2.0.0 (Latest)
356
+ ### v2.1.2 (Latest)
357
+ - **AI Agent Integration**: OpenClaw/Agent compatibility
358
+ - **Stability Fixes**: ToolManager thread-safety, Resource cleanup
359
+ - **DevEx**: New `install.sh` script, improved logging
360
+
361
+ ### v2.1.0
362
+ - **New Modules**: K8s, Azure, GCP, Prompt Injection
363
+ - **React2Shell**: CVE-2025-55182 detection
364
+ - **Auto-Discovery**: Improved target detection
365
+
366
+ ---
367
+
368
+ ## 🛠️ Troubleshooting
348
369
 
349
- - **Smart Auto-Module Loading** - Automatically detects target type
350
- - ⚡ **Token Optimization** - Lightweight mode & task scaling
351
- - 🛡️ **5 New Security Modules** - GraphQL, WebSocket, OAuth, WAF, Subdomain
352
- - 🎨 **New UI/Branding** - Fresh ExaAi logo with Cyan/Purple theme
353
- - 📊 **Improved Performance** - Reduced unnecessary LLM calls
370
+ ### 🔧 Troubleshooting
354
371
 
355
- ### v1.0.0
372
+ #### Problem: "LLM Connection Failed" or Model Not Found
373
+ Modern models (like `gemini-3-pro-preview`) require the latest version of `litellm` to be recognized correctly.
356
374
 
357
- - Multi-LLM Load Balancing
358
- - Enhanced Context Management
359
- - Specialized Agents
360
- - Advanced Prompts
361
- - Improved Reporting
375
+ **Solution: Update LiteLLM**
376
+ ```bash
377
+ pip install -U litellm
378
+ ```
379
+
380
+ **Linux/Debian Users (Externally Managed Environment):**
381
+ If you encounter permission errors or "externally-managed-environment", you may need to use a virtual environment (`venv`) or force a user install:
382
+
383
+ ```bash
384
+ # Option 1: Virtual Environment (Recommended for Servers)
385
+ python3 -m venv venv
386
+ source venv/bin/activate
387
+ pip install exaai-agent
388
+
389
+ # Option 2: Force User Install
390
+ pip install -U litellm --user --break-system-packages
391
+ ```
362
392
 
363
393
  ---
364
394
 
@@ -11,57 +11,60 @@
11
11
  [![Python](https://img.shields.io/pypi/pyversions/exaai-agent?color=3776AB)](https://pypi.org/project/exaai-agent/)
12
12
  [![PyPI](https://img.shields.io/pypi/v/exaai-agent?color=10b981)](https://pypi.org/project/exaai-agent/)
13
13
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
14
- [![Version](https://img.shields.io/badge/version-2.1.0-00d4ff.svg)]()
14
+ [![Version](https://img.shields.io/badge/version-2.1.2-00d4ff.svg)]()
15
15
 
16
16
  </div>
17
17
 
18
18
  <br>
19
19
 
20
20
  > [!TIP]
21
- > **🚀 v2.1.0 Released!** React2Shell Detection (CVE-2025-55182), Cloud Security Testing, Smart Fuzzing, and CLI improvements with `exaai` command!
21
+ > **🚀 v2.1.2 Released!** Now supports **AI Agent Integration (OpenClaw)**, Kubernetes Security, Azure/GCP modules, and Prompt Injection detection.
22
+ >
23
+ > 🤖 **Connect Your Agent:** You can now control ExaAiAgent via any AI agent (OpenClaw, etc).
24
+ > Just send this command to your agent:
25
+ > ```
26
+ > Read https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/SKILL.md and follow the instructions to join ExaAiAgent
27
+ > ```
22
28
 
23
29
  ---
24
30
 
25
- ## 🔥 What's New in v2.1.0
31
+ ## 🔥 What's New in v2.1.2
26
32
 
27
- ### 🚨 React2Shell Detection (CVE-2025-55182)
33
+ ### 🤖 AI Agent Integration (OpenClaw)
28
34
 
29
- New critical vulnerability scanner for **React Server Components**:
35
+ Seamlessly integrate ExaAiAgent with your AI workforce:
30
36
 
31
- - **CVSS 10.0** - Unauthenticated RCE via RSC Flight protocol
32
- - Auto-detects Next.js 15.x/16.x, React 19.x applications
33
- - Complete exploitation methodology and PoC generation
34
- - WAF bypass techniques included
37
+ - **Agent Control**: Control scans via OpenClaw or any agent framework
38
+ - **Auto-Discovery**: Agents can read `SKILL.md` to self-onboard
39
+ - **Output Optimization**: Tools now output cleaner data (no ANSI codes) for LLM consumption
35
40
 
36
- ### ☁️ AWS & Cloud Security
41
+ ### Kubernetes & Cloud Security (Updated)
37
42
 
38
- Comprehensive cloud infrastructure testing:
43
+ Expanded coverage for cloud-native infrastructure:
39
44
 
40
- - **AWS**: EC2 Metadata SSRF, S3 buckets, IAM escalation, Lambda
41
- - **Azure**: Blob storage, Managed Identity, Azure AD
42
- - **GCP**: Cloud Storage, Service Account abuse
43
- - **Kubernetes**: RBAC, Secrets, Pod escape
45
+ - **Kubernetes**: Deep RBAC auditing, Pod Security Standards (PSS), Network Policy checks
46
+ - **Azure**: Blob Storage, Entra ID (Azure AD), Key Vault auditing
47
+ - **GCP**: Cloud Storage, IAM, Service Account key leaks
48
+ - **Prompt Injection**: Dedicated scanner for AI/LLM applications
44
49
 
45
- ### Smart Security Tools
50
+ ### 🛡️ Smart Security Tools
46
51
 
47
52
  | Tool | Capability |
48
53
  |------|------------|
49
- | **Smart Fuzzer** | Context-aware payloads, parameter type detection |
54
+ | **Smart Fuzzer** | Thread-safe, context-aware fuzzing with rate limiting |
50
55
  | **Response Analyzer** | SQL errors, stack traces, sensitive data detection |
51
- | **Vuln Validator** | PoC generation, CVSS scoring, remediation advice |
52
- | **WAF Bypass** | Multi-layer bypass techniques |
56
+ | **Vuln Validator** | PoC generation with false positive reduction |
57
+ | **WAF Bypass** | Multi-layer bypass for Cloudflare, Akamai, AWS WAF |
53
58
 
54
- ### ⚡ CLI Improvements
59
+ ### ⚡ CLI & Stability
55
60
 
56
- ```bash
57
- # New command (shorter!)
58
- exaai --target https://example.com
59
-
60
- # Version check
61
- exaai --version
61
+ - **Thread-Safety**: Fixed race conditions in async scans
62
+ - **Resource Management**: Auto-shutdown and cleanup of background processes
63
+ - **Installation**: Robust `install.sh` for Linux/macOS (bash/zsh/fish)
62
64
 
63
- # TUI mode
64
- exaai tui
65
+ ```bash
66
+ # New install script
67
+ curl -sSL https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/install.sh | bash
65
68
  ```
66
69
 
67
70
  ---
@@ -104,6 +107,10 @@ ExaAiAgent is an elite AI-powered cybersecurity agent that acts like a real pene
104
107
 
105
108
  ```bash
106
109
  # Install ExaAiAgent
110
+
111
+ # Method 1: Automated Script (Recommended)
112
+ pip install exaai-agent
113
+ # Method 2: pipx
107
114
  pipx install exaai-agent
108
115
 
109
116
  # Configure your AI provider (choose one)
@@ -245,7 +252,7 @@ jobs:
245
252
  - uses: actions/checkout@v4
246
253
 
247
254
  - name: Install ExaAiAgent
248
- run: pipx install exaai-agent
255
+ run: curl -sSL https://raw.githubusercontent.com/hleliofficiel/ExaAiAgent/main/install.sh | bash
249
256
 
250
257
  - name: Run ExaAiAgent
251
258
  env:
@@ -297,26 +304,49 @@ export PERPLEXITY_API_KEY="key" # For search capabilities
297
304
  | `oauth_oidc` | OAuth2/OIDC flaws |
298
305
  | `waf_bypass` | WAF bypass techniques |
299
306
  | `subdomain_takeover` | Subdomain takeover |
307
+ | `prompt_injection` | AI/LLM prompt injection attacks |
308
+ | `kubernetes_security` | **NEW!** K8s RBAC & Pod Security auditing |
300
309
 
301
310
  ---
302
311
 
303
312
  ## 🆕 Changelog
304
313
 
305
- ### v2.0.0 (Latest)
314
+ ### v2.1.2 (Latest)
315
+ - **AI Agent Integration**: OpenClaw/Agent compatibility
316
+ - **Stability Fixes**: ToolManager thread-safety, Resource cleanup
317
+ - **DevEx**: New `install.sh` script, improved logging
318
+
319
+ ### v2.1.0
320
+ - **New Modules**: K8s, Azure, GCP, Prompt Injection
321
+ - **React2Shell**: CVE-2025-55182 detection
322
+ - **Auto-Discovery**: Improved target detection
323
+
324
+ ---
325
+
326
+ ## 🛠️ Troubleshooting
306
327
 
307
- - **Smart Auto-Module Loading** - Automatically detects target type
308
- - ⚡ **Token Optimization** - Lightweight mode & task scaling
309
- - 🛡️ **5 New Security Modules** - GraphQL, WebSocket, OAuth, WAF, Subdomain
310
- - 🎨 **New UI/Branding** - Fresh ExaAi logo with Cyan/Purple theme
311
- - 📊 **Improved Performance** - Reduced unnecessary LLM calls
328
+ ### 🔧 Troubleshooting
312
329
 
313
- ### v1.0.0
330
+ #### Problem: "LLM Connection Failed" or Model Not Found
331
+ Modern models (like `gemini-3-pro-preview`) require the latest version of `litellm` to be recognized correctly.
314
332
 
315
- - Multi-LLM Load Balancing
316
- - Enhanced Context Management
317
- - Specialized Agents
318
- - Advanced Prompts
319
- - Improved Reporting
333
+ **Solution: Update LiteLLM**
334
+ ```bash
335
+ pip install -U litellm
336
+ ```
337
+
338
+ **Linux/Debian Users (Externally Managed Environment):**
339
+ If you encounter permission errors or "externally-managed-environment", you may need to use a virtual environment (`venv`) or force a user install:
340
+
341
+ ```bash
342
+ # Option 1: Virtual Environment (Recommended for Servers)
343
+ python3 -m venv venv
344
+ source venv/bin/activate
345
+ pip install exaai-agent
346
+
347
+ # Option 2: Force User Install
348
+ pip install -U litellm --user --break-system-packages
349
+ ```
320
350
 
321
351
  ---
322
352
 
@@ -0,0 +1,99 @@
1
+ from fastapi import FastAPI, WebSocket, WebSocketDisconnect
2
+ from fastapi.staticfiles import StaticFiles
3
+ from fastapi.responses import HTMLResponse
4
+ import uvicorn
5
+ import json
6
+ import asyncio
7
+ import logging
8
+ from typing import List, Dict, Any
9
+ import os
10
+
11
+ from exaaiagnt.telemetry.tracer import get_global_tracer
12
+
13
+ app = FastAPI(title="ExaAi Live Dashboard")
14
+
15
+ # Serve static files
16
+ static_dir = os.path.join(os.path.dirname(__file__), "static")
17
+ app.mount("/static", StaticFiles(directory=static_dir), name="static")
18
+
19
+ class ConnectionManager:
20
+ def __init__(self):
21
+ self.active_connections: List[WebSocket] = []
22
+
23
+ async def connect(self, websocket: WebSocket):
24
+ await websocket.accept()
25
+ self.active_connections.append(websocket)
26
+
27
+ def disconnect(self, websocket: WebSocket):
28
+ self.active_connections.remove(websocket)
29
+
30
+ async def broadcast(self, message: str):
31
+ for connection in self.active_connections:
32
+ try:
33
+ await connection.send_text(message)
34
+ except Exception:
35
+ pass
36
+
37
+ manager = ConnectionManager()
38
+
39
+ @app.get("/")
40
+ async def get_dashboard():
41
+ html_path = os.path.join(os.path.dirname(__file__), "templates", "index.html")
42
+ with open(html_path, "r") as f:
43
+ return HTMLResponse(content=f.read())
44
+
45
+ @app.get("/api/stats")
46
+ async def get_stats():
47
+ tracer = get_global_tracer()
48
+ if not tracer:
49
+ return {"status": "Waiting for agent..."}
50
+
51
+ return {
52
+ "agents_count": len(tracer.agents),
53
+ "vulnerabilities": len(tracer.vulnerability_reports),
54
+ "tool_calls": len(tracer.tool_executions),
55
+ "start_time": tracer.start_time,
56
+ "run_name": tracer.run_name
57
+ }
58
+
59
+ @app.get("/api/vulnerabilities")
60
+ async def get_vulns():
61
+ tracer = get_global_tracer()
62
+ if not tracer:
63
+ return []
64
+ return tracer.vulnerability_reports
65
+
66
+ @app.websocket("/ws")
67
+ async def websocket_endpoint(websocket: WebSocket):
68
+ await manager.connect(websocket)
69
+ try:
70
+ while True:
71
+ # Send updates every second
72
+ tracer = get_global_tracer()
73
+ if tracer:
74
+ data = {
75
+ "agents": tracer.agents,
76
+ "stats": {
77
+ "active": sum(1 for a in tracer.agents.values() if a.get("status") == "running"),
78
+ "completed": sum(1 for a in tracer.agents.values() if a.get("status") == "completed"),
79
+ "failed": sum(1 for a in tracer.agents.values() if a.get("status") == "failed"),
80
+ },
81
+ "recent_logs": tracer.chat_messages[-10:] if tracer.chat_messages else []
82
+ }
83
+ await websocket.send_json(data)
84
+ await asyncio.sleep(1)
85
+ except WebSocketDisconnect:
86
+ manager.disconnect(websocket)
87
+ except Exception as e:
88
+ logging.error(f"WebSocket error: {e}")
89
+ manager.disconnect(websocket)
90
+
91
+ def start_dashboard(host="0.0.0.0", port=8000):
92
+ """Start the dashboard server in a background thread or process."""
93
+ config = uvicorn.Config(app, host=host, port=port, log_level="error")
94
+ server = uvicorn.Server(config)
95
+ # We'll run this in a thread from the main agent
96
+ import threading
97
+ t = threading.Thread(target=server.run, daemon=True)
98
+ t.start()
99
+ return t