exaai-agent 2.0.6__tar.gz → 2.0.8__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 (149) hide show
  1. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/PKG-INFO +55 -52
  2. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/README.md +52 -49
  3. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/main.py +92 -50
  4. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tui.py +1 -1
  5. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/pyproject.toml +6 -4
  6. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/LICENSE +0 -0
  7. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/__init__.py +0 -0
  8. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/ExaaiAgent/__init__.py +0 -0
  9. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/ExaaiAgent/exaai_agent.py +0 -0
  10. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/ExaaiAgent/system_prompt.jinja +0 -0
  11. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/__init__.py +0 -0
  12. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/agent_supervisor.py +0 -0
  13. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/base_agent.py +0 -0
  14. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/scan_modes.py +0 -0
  15. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/shared_memory.py +0 -0
  16. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/agents/state.py +0 -0
  17. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/__init__.py +0 -0
  18. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/assets/tui_styles.tcss +0 -0
  19. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/cli.py +0 -0
  20. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/__init__.py +0 -0
  21. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/agents_graph_renderer.py +0 -0
  22. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/base_renderer.py +0 -0
  23. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/browser_renderer.py +0 -0
  24. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/file_edit_renderer.py +0 -0
  25. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/finish_renderer.py +0 -0
  26. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/notes_renderer.py +0 -0
  27. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/proxy_renderer.py +0 -0
  28. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/python_renderer.py +0 -0
  29. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/registry.py +0 -0
  30. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/reporting_renderer.py +0 -0
  31. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/scan_info_renderer.py +0 -0
  32. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/terminal_renderer.py +0 -0
  33. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/thinking_renderer.py +0 -0
  34. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/user_message_renderer.py +0 -0
  35. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/tool_components/web_search_renderer.py +0 -0
  36. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/interface/utils.py +0 -0
  37. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/__init__.py +0 -0
  38. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/config.py +0 -0
  39. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/fallback.py +0 -0
  40. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/llm.py +0 -0
  41. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/llm_traffic_controller.py +0 -0
  42. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/memory_compressor.py +0 -0
  43. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/output_processor.py +0 -0
  44. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/request_queue.py +0 -0
  45. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/llm/utils.py +0 -0
  46. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/README.md +0 -0
  47. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/__init__.py +0 -0
  48. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/auto_loader.py +0 -0
  49. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/cloud/.gitkeep +0 -0
  50. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/cloud/aws_cloud_security.jinja +0 -0
  51. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/coordination/root_agent.jinja +0 -0
  52. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/custom/.gitkeep +0 -0
  53. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/frameworks/fastapi.jinja +0 -0
  54. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja +0 -0
  55. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/frameworks/nextjs.jinja +0 -0
  56. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/protocols/graphql.jinja +0 -0
  57. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/reconnaissance/.gitkeep +0 -0
  58. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/technologies/firebase_firestore.jinja +0 -0
  59. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/technologies/supabase.jinja +0 -0
  60. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja +0 -0
  61. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/api_security.jinja +0 -0
  62. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja +0 -0
  63. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/broken_function_level_authorization.jinja +0 -0
  64. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja +0 -0
  65. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja +0 -0
  66. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja +0 -0
  67. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/csrf.jinja +0 -0
  68. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja +0 -0
  69. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja +0 -0
  70. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja +0 -0
  71. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja +0 -0
  72. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/idor.jinja +0 -0
  73. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/information_disclosure.jinja +0 -0
  74. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/insecure_file_uploads.jinja +0 -0
  75. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja +0 -0
  76. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/oauth_oidc.jinja +0 -0
  77. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja +0 -0
  78. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +0 -0
  79. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja +0 -0
  80. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja +0 -0
  81. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja +0 -0
  82. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja +0 -0
  83. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/rce.jinja +0 -0
  84. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/react2shell.jinja +0 -0
  85. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja +0 -0
  86. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja +0 -0
  87. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/ssrf.jinja +0 -0
  88. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/ssti.jinja +0 -0
  89. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja +0 -0
  90. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/waf_bypass.jinja +0 -0
  91. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja +0 -0
  92. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/xss.jinja +0 -0
  93. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/prompts/vulnerabilities/xxe.jinja +0 -0
  94. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/runtime/__init__.py +0 -0
  95. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/runtime/docker_runtime.py +0 -0
  96. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/runtime/runtime.py +0 -0
  97. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/runtime/tool_manager.py +0 -0
  98. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/runtime/tool_server.py +0 -0
  99. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/telemetry/__init__.py +0 -0
  100. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/telemetry/tracer.py +0 -0
  101. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/__init__.py +0 -0
  102. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/agents_graph/__init__.py +0 -0
  103. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/agents_graph/agents_graph_actions.py +0 -0
  104. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml +0 -0
  105. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/argument_parser.py +0 -0
  106. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/browser/__init__.py +0 -0
  107. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/browser/browser_actions.py +0 -0
  108. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/browser/browser_actions_schema.xml +0 -0
  109. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/browser/browser_instance.py +0 -0
  110. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/browser/tab_manager.py +0 -0
  111. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/executor.py +0 -0
  112. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/file_edit/__init__.py +0 -0
  113. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/file_edit/file_edit_actions.py +0 -0
  114. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml +0 -0
  115. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/finish/__init__.py +0 -0
  116. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/finish/finish_actions.py +0 -0
  117. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/finish/finish_actions_schema.xml +0 -0
  118. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/notes/__init__.py +0 -0
  119. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/notes/notes_actions.py +0 -0
  120. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/notes/notes_actions_schema.xml +0 -0
  121. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/proxy/__init__.py +0 -0
  122. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/proxy/proxy_actions.py +0 -0
  123. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/proxy/proxy_actions_schema.xml +0 -0
  124. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/proxy/proxy_manager.py +0 -0
  125. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/python/__init__.py +0 -0
  126. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/python/python_actions.py +0 -0
  127. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/python/python_actions_schema.xml +0 -0
  128. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/python/python_instance.py +0 -0
  129. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/python/python_manager.py +0 -0
  130. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/registry.py +0 -0
  131. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/reporting/__init__.py +0 -0
  132. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/reporting/reporting_actions.py +0 -0
  133. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/reporting/reporting_actions_schema.xml +0 -0
  134. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/response_analyzer.py +0 -0
  135. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/smart_fuzzer.py +0 -0
  136. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/terminal/__init__.py +0 -0
  137. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/terminal/terminal_actions.py +0 -0
  138. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/terminal/terminal_actions_schema.xml +0 -0
  139. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/terminal/terminal_manager.py +0 -0
  140. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/terminal/terminal_session.py +0 -0
  141. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/thinking/__init__.py +0 -0
  142. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/thinking/thinking_actions.py +0 -0
  143. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/thinking/thinking_actions_schema.xml +0 -0
  144. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/tool_prompts.py +0 -0
  145. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/vuln_validator.py +0 -0
  146. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/waf_bypass.py +0 -0
  147. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/web_search/__init__.py +0 -0
  148. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/web_search/web_search_actions.py +0 -0
  149. {exaai_agent-2.0.6 → exaai_agent-2.0.8}/exaaiagnt/tools/web_search/web_search_actions_schema.xml +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exaai-agent
3
- Version: 2.0.6
4
- Summary: ExaaiAgnt - Advanced AI Security Agent for Comprehensive Penetration Testing
3
+ Version: 2.0.8
4
+ Summary: ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
7
7
  Keywords: cybersecurity,security,vulnerability,scanner,pentest,agent,ai,cli
8
- Author: ExaaiAgnt Team
8
+ Author: ExaAi Team
9
9
  Author-email: mahmedhleli@gmail.com
10
10
  Requires-Python: >=3.12,<4.0
11
11
  Classifier: Development Status :: 3 - Alpha
@@ -53,48 +53,58 @@ 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.0.4-00d4ff.svg)]()
56
+ [![Version](https://img.shields.io/badge/version-2.1.0-00d4ff.svg)]()
57
57
 
58
58
  </div>
59
59
 
60
60
  <br>
61
61
 
62
62
  > [!TIP]
63
- > **v2.0.4 Released!** Agent Supervisor, WAF Bypass, Scan Modes, Shared Memory, 80% Token Reduction!
63
+ > **🚀 v2.1.0 Released!** React2Shell Detection (CVE-2025-55182), Cloud Security Testing, Smart Fuzzing, and CLI improvements with `exaai` command!
64
64
 
65
65
  ---
66
66
 
67
- ## 🔥 What's New in v2.0.4
67
+ ## 🔥 What's New in v2.1.0
68
68
 
69
- | Feature | Description |
70
- |---------|-------------|
71
- | 🛡️ **Agent Supervisor** | Self-healing, heartbeat, auto-recovery, priority levels |
72
- | 🧠 **Shared Memory** | Inter-agent coordination, URL deduplication |
73
- | 🎭 **Scan Modes** | Stealth (10/min) • Standard (60/min) • Aggressive (300/min) |
74
- | 🔓 **WAF Bypass** | Cloudflare, Akamai, Imperva detection & bypass |
75
- | ⚡ **80% Less Tokens** | Smart output processing, summarization |
69
+ ### 🚨 React2Shell Detection (CVE-2025-55182)
76
70
 
77
- ---
71
+ New critical vulnerability scanner for **React Server Components**:
72
+
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
77
+
78
+ ### ☁️ AWS & Cloud Security
78
79
 
79
- ## 🔥 What's New in v2.0.0
80
+ Comprehensive cloud infrastructure testing:
80
81
 
81
- ### Smart Auto-Module Loading
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
82
86
 
83
- ExaAiAgent now **automatically detects** the target type and loads relevant security modules:
87
+ ### Smart Security Tools
84
88
 
85
- - GraphQL endpoints `graphql_security` auto-loaded
86
- - WebSocket URLs → `websocket_security` auto-loaded
87
- - OAuth/Auth endpoints `oauth_oidc` auto-loaded
89
+ | Tool | Capability |
90
+ |------|------------|
91
+ | **Smart Fuzzer** | Context-aware payloads, parameter type detection |
92
+ | **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 |
88
95
 
89
- ### 🛡️ 5 New Security Modules
96
+ ### CLI Improvements
97
+
98
+ ```bash
99
+ # New command (shorter!)
100
+ exaai --target https://example.com
90
101
 
91
- | Module | Focus |
92
- |--------|-------|
93
- | `graphql_security` | Introspection, Batching, DoS, Injection |
94
- | `websocket_security` | CSWSH, Injection, Race Conditions |
95
- | `oauth_oidc` | Redirect URI, Token Attacks, PKCE |
96
- | `waf_bypass` | Encoding, Headers, Request Smuggling |
97
- | `subdomain_takeover` | AWS, Azure, GitHub, Heroku takeover |
102
+ # Version check
103
+ exaai --version
104
+
105
+ # TUI mode
106
+ exaai tui
107
+ ```
98
108
 
99
109
  ---
100
110
 
@@ -158,7 +168,7 @@ export EXAAI_LLM="ollama/llama3"
158
168
  export LLM_API_BASE="http://localhost:11434"
159
169
 
160
170
  # Run your first security assessment (auto-detects modules!)
161
- exaaiagnt --target https://your-app.com
171
+ exaai --target https://your-app.com
162
172
  ```
163
173
 
164
174
  > [!NOTE]
@@ -212,46 +222,46 @@ Advanced multi-agent orchestration for comprehensive security testing:
212
222
 
213
223
  ```bash
214
224
  # Scan a local codebase
215
- exaaiagnt --target ./app-directory
225
+ exaai --target ./app-directory
216
226
 
217
227
  # Security review of a GitHub repository
218
- exaaiagnt --target https://github.com/org/repo
228
+ exaai --target https://github.com/org/repo
219
229
 
220
230
  # Black-box web application assessment
221
- exaaiagnt --target https://your-app.com
231
+ exaai --target https://your-app.com
222
232
  ```
223
233
 
224
234
  ### Smart Auto-Loading (New in v2.0!)
225
235
 
226
236
  ```bash
227
237
  # GraphQL endpoint - auto-loads graphql_security
228
- exaaiagnt --target https://api.example.com/graphql
238
+ exaai --target https://api.example.com/graphql
229
239
 
230
240
  # WebSocket - auto-loads websocket_security
231
- exaaiagnt --target wss://chat.example.com/socket
241
+ exaai --target wss://chat.example.com/socket
232
242
 
233
243
  # OAuth endpoint - auto-loads oauth_oidc
234
- exaaiagnt --target https://auth.example.com/oauth/authorize
244
+ exaai --target https://auth.example.com/oauth/authorize
235
245
 
236
246
  # Subdomain recon - auto-loads subdomain_takeover
237
- exaaiagnt --target example.com --instruction "enumerate subdomains"
247
+ exaai --target example.com --instruction "enumerate subdomains"
238
248
  ```
239
249
 
240
250
  ### Advanced Testing Scenarios
241
251
 
242
252
  ```bash
243
253
  # Grey-box authenticated testing
244
- exaaiagnt --target https://your-app.com --instruction "Perform authenticated testing using credentials: user:pass"
254
+ exaai --target https://your-app.com --instruction "Perform authenticated testing using credentials: user:pass"
245
255
 
246
256
  # Multi-target testing (source code + deployed app)
247
- exaaiagnt -t https://github.com/org/app -t https://your-app.com
257
+ exaai -t https://github.com/org/app -t https://your-app.com
248
258
 
249
259
  # With specific modules (overrides auto-detection)
250
- exaaiagnt --target https://api.example.com --prompt-modules graphql_security waf_bypass
260
+ exaai --target https://api.example.com --prompt-modules graphql_security waf_bypass
251
261
 
252
262
  # Lightweight mode (reduced token consumption)
253
263
  export EXAAI_LIGHTWEIGHT_MODE=true
254
- exaaiagnt --target https://example.com --instruction "quick security scan"
264
+ exaai --target https://example.com --instruction "quick security scan"
255
265
  ```
256
266
 
257
267
  ### 🤖 Headless Mode
@@ -259,13 +269,13 @@ exaaiagnt --target https://example.com --instruction "quick security scan"
259
269
  Run ExaAiAgent programmatically without interactive UI:
260
270
 
261
271
  ```bash
262
- exaaiagnt -n --target https://your-app.com
272
+ exaai -n --target https://your-app.com
263
273
  ```
264
274
 
265
275
  ### 🔄 CI/CD (GitHub Actions)
266
276
 
267
277
  ```yaml
268
- name: exaaiagnt-security-test
278
+ name: exaai-security-test
269
279
 
270
280
  on:
271
281
  pull_request:
@@ -283,7 +293,7 @@ jobs:
283
293
  env:
284
294
  EXAAI_LLM: ${{ secrets.EXAAI_LLM }}
285
295
  LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
286
- run: exaaiagnt -n -t ./
296
+ run: exaai -n -t ./
287
297
  ```
288
298
 
289
299
  ### ⚙️ Configuration
@@ -334,20 +344,13 @@ export PERPLEXITY_API_KEY="key" # For search capabilities
334
344
 
335
345
  ## 🆕 Changelog
336
346
 
337
- ### v2.0.4 (Latest)
338
-
339
- - 🛡️ **Agent Supervisor** - Self-healing with heartbeat & auto-recovery
340
- - 🧠 **Shared Memory** - Inter-agent coordination, URL deduplication
341
- - 🎭 **Scan Modes** - Stealth / Standard / Aggressive
342
- - 🔓 **WAF Bypass** - Cloudflare, Akamai, Imperva detection & bypass
343
- - ⚡ **80% Token Reduction** - Smart output processing
344
-
345
- ### v2.0.0
347
+ ### v2.0.0 (Latest)
346
348
 
347
349
  - ✨ **Smart Auto-Module Loading** - Automatically detects target type
348
350
  - ⚡ **Token Optimization** - Lightweight mode & task scaling
349
351
  - 🛡️ **5 New Security Modules** - GraphQL, WebSocket, OAuth, WAF, Subdomain
350
352
  - 🎨 **New UI/Branding** - Fresh ExaAi logo with Cyan/Purple theme
353
+ - 📊 **Improved Performance** - Reduced unnecessary LLM calls
351
354
 
352
355
  ### v1.0.0
353
356
 
@@ -11,48 +11,58 @@
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.0.4-00d4ff.svg)]()
14
+ [![Version](https://img.shields.io/badge/version-2.1.0-00d4ff.svg)]()
15
15
 
16
16
  </div>
17
17
 
18
18
  <br>
19
19
 
20
20
  > [!TIP]
21
- > **v2.0.4 Released!** Agent Supervisor, WAF Bypass, Scan Modes, Shared Memory, 80% Token Reduction!
21
+ > **🚀 v2.1.0 Released!** React2Shell Detection (CVE-2025-55182), Cloud Security Testing, Smart Fuzzing, and CLI improvements with `exaai` command!
22
22
 
23
23
  ---
24
24
 
25
- ## 🔥 What's New in v2.0.4
25
+ ## 🔥 What's New in v2.1.0
26
26
 
27
- | Feature | Description |
28
- |---------|-------------|
29
- | 🛡️ **Agent Supervisor** | Self-healing, heartbeat, auto-recovery, priority levels |
30
- | 🧠 **Shared Memory** | Inter-agent coordination, URL deduplication |
31
- | 🎭 **Scan Modes** | Stealth (10/min) • Standard (60/min) • Aggressive (300/min) |
32
- | 🔓 **WAF Bypass** | Cloudflare, Akamai, Imperva detection & bypass |
33
- | ⚡ **80% Less Tokens** | Smart output processing, summarization |
27
+ ### 🚨 React2Shell Detection (CVE-2025-55182)
34
28
 
35
- ---
29
+ New critical vulnerability scanner for **React Server Components**:
30
+
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
35
+
36
+ ### ☁️ AWS & Cloud Security
36
37
 
37
- ## 🔥 What's New in v2.0.0
38
+ Comprehensive cloud infrastructure testing:
38
39
 
39
- ### Smart Auto-Module Loading
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
40
44
 
41
- ExaAiAgent now **automatically detects** the target type and loads relevant security modules:
45
+ ### Smart Security Tools
42
46
 
43
- - GraphQL endpoints `graphql_security` auto-loaded
44
- - WebSocket URLs → `websocket_security` auto-loaded
45
- - OAuth/Auth endpoints `oauth_oidc` auto-loaded
47
+ | Tool | Capability |
48
+ |------|------------|
49
+ | **Smart Fuzzer** | Context-aware payloads, parameter type detection |
50
+ | **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 |
46
53
 
47
- ### 🛡️ 5 New Security Modules
54
+ ### CLI Improvements
55
+
56
+ ```bash
57
+ # New command (shorter!)
58
+ exaai --target https://example.com
48
59
 
49
- | Module | Focus |
50
- |--------|-------|
51
- | `graphql_security` | Introspection, Batching, DoS, Injection |
52
- | `websocket_security` | CSWSH, Injection, Race Conditions |
53
- | `oauth_oidc` | Redirect URI, Token Attacks, PKCE |
54
- | `waf_bypass` | Encoding, Headers, Request Smuggling |
55
- | `subdomain_takeover` | AWS, Azure, GitHub, Heroku takeover |
60
+ # Version check
61
+ exaai --version
62
+
63
+ # TUI mode
64
+ exaai tui
65
+ ```
56
66
 
57
67
  ---
58
68
 
@@ -116,7 +126,7 @@ export EXAAI_LLM="ollama/llama3"
116
126
  export LLM_API_BASE="http://localhost:11434"
117
127
 
118
128
  # Run your first security assessment (auto-detects modules!)
119
- exaaiagnt --target https://your-app.com
129
+ exaai --target https://your-app.com
120
130
  ```
121
131
 
122
132
  > [!NOTE]
@@ -170,46 +180,46 @@ Advanced multi-agent orchestration for comprehensive security testing:
170
180
 
171
181
  ```bash
172
182
  # Scan a local codebase
173
- exaaiagnt --target ./app-directory
183
+ exaai --target ./app-directory
174
184
 
175
185
  # Security review of a GitHub repository
176
- exaaiagnt --target https://github.com/org/repo
186
+ exaai --target https://github.com/org/repo
177
187
 
178
188
  # Black-box web application assessment
179
- exaaiagnt --target https://your-app.com
189
+ exaai --target https://your-app.com
180
190
  ```
181
191
 
182
192
  ### Smart Auto-Loading (New in v2.0!)
183
193
 
184
194
  ```bash
185
195
  # GraphQL endpoint - auto-loads graphql_security
186
- exaaiagnt --target https://api.example.com/graphql
196
+ exaai --target https://api.example.com/graphql
187
197
 
188
198
  # WebSocket - auto-loads websocket_security
189
- exaaiagnt --target wss://chat.example.com/socket
199
+ exaai --target wss://chat.example.com/socket
190
200
 
191
201
  # OAuth endpoint - auto-loads oauth_oidc
192
- exaaiagnt --target https://auth.example.com/oauth/authorize
202
+ exaai --target https://auth.example.com/oauth/authorize
193
203
 
194
204
  # Subdomain recon - auto-loads subdomain_takeover
195
- exaaiagnt --target example.com --instruction "enumerate subdomains"
205
+ exaai --target example.com --instruction "enumerate subdomains"
196
206
  ```
197
207
 
198
208
  ### Advanced Testing Scenarios
199
209
 
200
210
  ```bash
201
211
  # Grey-box authenticated testing
202
- exaaiagnt --target https://your-app.com --instruction "Perform authenticated testing using credentials: user:pass"
212
+ exaai --target https://your-app.com --instruction "Perform authenticated testing using credentials: user:pass"
203
213
 
204
214
  # Multi-target testing (source code + deployed app)
205
- exaaiagnt -t https://github.com/org/app -t https://your-app.com
215
+ exaai -t https://github.com/org/app -t https://your-app.com
206
216
 
207
217
  # With specific modules (overrides auto-detection)
208
- exaaiagnt --target https://api.example.com --prompt-modules graphql_security waf_bypass
218
+ exaai --target https://api.example.com --prompt-modules graphql_security waf_bypass
209
219
 
210
220
  # Lightweight mode (reduced token consumption)
211
221
  export EXAAI_LIGHTWEIGHT_MODE=true
212
- exaaiagnt --target https://example.com --instruction "quick security scan"
222
+ exaai --target https://example.com --instruction "quick security scan"
213
223
  ```
214
224
 
215
225
  ### 🤖 Headless Mode
@@ -217,13 +227,13 @@ exaaiagnt --target https://example.com --instruction "quick security scan"
217
227
  Run ExaAiAgent programmatically without interactive UI:
218
228
 
219
229
  ```bash
220
- exaaiagnt -n --target https://your-app.com
230
+ exaai -n --target https://your-app.com
221
231
  ```
222
232
 
223
233
  ### 🔄 CI/CD (GitHub Actions)
224
234
 
225
235
  ```yaml
226
- name: exaaiagnt-security-test
236
+ name: exaai-security-test
227
237
 
228
238
  on:
229
239
  pull_request:
@@ -241,7 +251,7 @@ jobs:
241
251
  env:
242
252
  EXAAI_LLM: ${{ secrets.EXAAI_LLM }}
243
253
  LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
244
- run: exaaiagnt -n -t ./
254
+ run: exaai -n -t ./
245
255
  ```
246
256
 
247
257
  ### ⚙️ Configuration
@@ -292,20 +302,13 @@ export PERPLEXITY_API_KEY="key" # For search capabilities
292
302
 
293
303
  ## 🆕 Changelog
294
304
 
295
- ### v2.0.4 (Latest)
296
-
297
- - 🛡️ **Agent Supervisor** - Self-healing with heartbeat & auto-recovery
298
- - 🧠 **Shared Memory** - Inter-agent coordination, URL deduplication
299
- - 🎭 **Scan Modes** - Stealth / Standard / Aggressive
300
- - 🔓 **WAF Bypass** - Cloudflare, Akamai, Imperva detection & bypass
301
- - ⚡ **80% Token Reduction** - Smart output processing
302
-
303
- ### v2.0.0
305
+ ### v2.0.0 (Latest)
304
306
 
305
307
  - ✨ **Smart Auto-Module Loading** - Automatically detects target type
306
308
  - ⚡ **Token Optimization** - Lightweight mode & task scaling
307
309
  - 🛡️ **5 New Security Modules** - GraphQL, WebSocket, OAuth, WAF, Subdomain
308
310
  - 🎨 **New UI/Branding** - Fresh ExaAi logo with Cyan/Purple theme
311
+ - 📊 **Improved Performance** - Reduced unnecessary LLM calls
309
312
 
310
313
  ### v1.0.0
311
314
 
@@ -240,69 +240,77 @@ async def warm_up_llm() -> None:
240
240
  sys.exit(1)
241
241
 
242
242
 
243
+ def get_version() -> str:
244
+ """Get the current ExaAi version."""
245
+ return "2.1.0"
246
+
247
+
243
248
  def parse_arguments() -> argparse.Namespace:
244
249
  parser = argparse.ArgumentParser(
245
- description="ExaaiAgnt - Advanced AI Cybersecurity Penetration Testing Tool",
250
+ description="ExaAi - Advanced AI Cybersecurity Penetration Testing Tool",
246
251
  formatter_class=argparse.RawDescriptionHelpFormatter,
247
252
  epilog="""
248
253
  Examples:
254
+ # Launch TUI interface
255
+ exaai tui
256
+
257
+ # Show version
258
+ exaai --version
259
+
249
260
  # Web application penetration test
250
- exaaiagnt --target https://example.com
261
+ exaai --target https://example.com
262
+ exaai -t https://example.com
251
263
 
252
264
  # GitHub repository analysis
253
- exaaiagnt --target https://github.com/user/repo
254
- exaaiagnt --target git@github.com:user/repo.git
265
+ exaai --target https://github.com/user/repo
255
266
 
256
267
  # Local code analysis
257
- exaaiagnt --target ./my-project
268
+ exaai --target ./my-project
258
269
 
259
270
  # Domain penetration test
260
- exaaiagnt --target example.com
261
-
262
- # IP address penetration test
263
- exaaiagnt --target 192.168.1.42
271
+ exaai --target example.com
264
272
 
265
- # Multiple targets (e.g., white-box testing with source and deployed app)
266
- exaaiagnt --target https://github.com/user/repo --target https://example.com
267
- exaaiagnt --target ./my-project --target https://staging.example.com --target https://prod.example.com
273
+ # Multiple targets
274
+ exaai -t https://github.com/user/repo -t https://example.com
268
275
 
269
- # Custom instructions (inline)
270
- exaaiagnt --target example.com --instruction "Focus on authentication vulnerabilities"
271
-
272
- # Custom instructions (from file)
273
- exaaiagnt --target example.com --instruction ./instructions.txt
274
- exaaiagnt --target https://app.com --instruction /path/to/detailed_instructions.md
276
+ # Custom instructions
277
+ exaai -t example.com -i "Focus on authentication vulnerabilities"
278
+ exaai -t example.com --instruction ./instructions.txt
275
279
  """,
276
280
  )
277
281
 
282
+ # Add version flag
283
+ parser.add_argument(
284
+ "-V",
285
+ "--version",
286
+ action="version",
287
+ version=f"ExaAi v{get_version()}",
288
+ )
289
+
290
+ # Main arguments (same as before, just renamed command)
278
291
  parser.add_argument(
279
292
  "-t",
280
293
  "--target",
281
294
  type=str,
282
- required=True,
283
295
  action="append",
284
296
  help="Target to test (URL, repository, local directory path, domain name, or IP address). "
285
297
  "Can be specified multiple times for multi-target scans.",
286
298
  )
287
299
  parser.add_argument(
300
+ "-i",
288
301
  "--instruction",
289
302
  type=str,
290
303
  help="Custom instructions for the penetration test. This can be "
291
304
  "specific vulnerability types to focus on (e.g., 'Focus on IDOR and XSS'), "
292
305
  "testing approaches (e.g., 'Perform thorough authentication testing'), "
293
- "test credentials (e.g., 'Use the following credentials to access the app: "
294
- "admin:password123'), "
295
- "or areas of interest (e.g., 'Check login API endpoint for security issues'). "
296
- "You can also provide a path to a file containing detailed instructions "
297
- "(e.g., '--instruction ./instructions.txt').",
306
+ "or test credentials (e.g., 'Use the following credentials: admin:password123'). "
307
+ "You can also provide a path to a file containing detailed instructions.",
298
308
  )
299
-
300
309
  parser.add_argument(
301
310
  "--run-name",
302
311
  type=str,
303
312
  help="Custom name for this penetration test run",
304
313
  )
305
-
306
314
  parser.add_argument(
307
315
  "-n",
308
316
  "--non-interactive",
@@ -312,37 +320,56 @@ Examples:
312
320
  "Default is interactive mode with TUI."
313
321
  ),
314
322
  )
323
+
324
+ # TUI subcommand (optional - for launching TUI without target)
325
+ subparsers = parser.add_subparsers(dest="command")
326
+ subparsers.add_parser("tui", help="Launch the interactive TUI interface without a target")
315
327
 
316
328
  args = parser.parse_args()
317
329
 
318
- if args.instruction:
319
- instruction_path = Path(args.instruction)
320
- if instruction_path.exists() and instruction_path.is_file():
330
+ # Handle TUI command - launch directly without target
331
+ if args.command == "tui":
332
+ args.target = None
333
+ args.targets_info = []
334
+ args.instruction = None
335
+ args.run_name = None
336
+ args.non_interactive = False
337
+ args.local_sources = []
338
+ return args
339
+
340
+ # Handle scan command or legacy direct target
341
+ if args.command == "scan" or args.target:
342
+ if not args.target:
343
+ parser.error("--target is required for scanning. Use 'exaai tui' to launch TUI without a target.")
344
+
345
+ if args.instruction:
346
+ instruction_path = Path(args.instruction)
347
+ if instruction_path.exists() and instruction_path.is_file():
348
+ try:
349
+ with instruction_path.open(encoding="utf-8") as f:
350
+ args.instruction = f.read().strip()
351
+ if not args.instruction:
352
+ parser.error(f"Instruction file '{instruction_path}' is empty")
353
+ except Exception as e: # noqa: BLE001
354
+ parser.error(f"Failed to read instruction file '{instruction_path}': {e}")
355
+
356
+ args.targets_info = []
357
+ for target in args.target:
321
358
  try:
322
- with instruction_path.open(encoding="utf-8") as f:
323
- args.instruction = f.read().strip()
324
- if not args.instruction:
325
- parser.error(f"Instruction file '{instruction_path}' is empty")
326
- except Exception as e: # noqa: BLE001
327
- parser.error(f"Failed to read instruction file '{instruction_path}': {e}")
328
-
329
- args.targets_info = []
330
- for target in args.target:
331
- try:
332
- target_type, target_dict = infer_target_type(target)
359
+ target_type, target_dict = infer_target_type(target)
333
360
 
334
- if target_type == "local_code":
335
- display_target = target_dict.get("target_path", target)
336
- else:
337
- display_target = target
361
+ if target_type == "local_code":
362
+ display_target = target_dict.get("target_path", target)
363
+ else:
364
+ display_target = target
338
365
 
339
- args.targets_info.append(
340
- {"type": target_type, "details": target_dict, "original": display_target}
341
- )
342
- except ValueError:
343
- parser.error(f"Invalid target '{target}'")
366
+ args.targets_info.append(
367
+ {"type": target_type, "details": target_dict, "original": display_target}
368
+ )
369
+ except ValueError:
370
+ parser.error(f"Invalid target '{target}'")
344
371
 
345
- assign_workspace_subdirs(args.targets_info)
372
+ assign_workspace_subdirs(args.targets_info)
346
373
 
347
374
  return args
348
375
 
@@ -464,6 +491,21 @@ def main() -> None:
464
491
 
465
492
  args = parse_arguments()
466
493
 
494
+ # Handle TUI-only mode (no target needed)
495
+ if args.command == "tui" or (not args.target and not args.command):
496
+ check_docker_installed()
497
+ pull_docker_image()
498
+ validate_environment()
499
+ asyncio.run(warm_up_llm())
500
+
501
+ # Launch TUI directly without scanning
502
+ args.run_name = "interactive_session"
503
+ args.targets_info = []
504
+ args.local_sources = []
505
+ asyncio.run(run_tui(args))
506
+ return
507
+
508
+ # Handle scan mode (target required)
467
509
  check_docker_installed()
468
510
  pull_docker_image()
469
511
 
@@ -104,7 +104,7 @@ class SplashScreen(Static): # type: ignore[misc]
104
104
  self._animation_step = 0
105
105
  self._animation_timer: Timer | None = None
106
106
  self._panel_static: Static | None = None
107
- self._version = "2.0.4"
107
+ self._version = "2.1.0"
108
108
 
109
109
  def compose(self) -> ComposeResult:
110
110
  self._version = get_package_version()
@@ -1,8 +1,8 @@
1
1
  [tool.poetry]
2
2
  name = "exaai-agent"
3
- version = "2.0.6"
4
- description = "ExaaiAgnt - Advanced AI Security Agent for Comprehensive Penetration Testing"
5
- authors = ["ExaaiAgnt Team <mahmedhleli@gmail.com>"]
3
+ version = "2.0.8"
4
+ description = "ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing"
5
+ authors = ["ExaAi Team <mahmedhleli@gmail.com>"]
6
6
  readme = "README.md"
7
7
  license = "Apache-2.0"
8
8
  keywords = [
@@ -39,7 +39,9 @@ include = [
39
39
  ]
40
40
 
41
41
  [tool.poetry.scripts]
42
- exaaiagnt = "exaaiagnt.interface.main:main"
42
+ exaai = "exaaiagnt.interface.main:main"
43
+ exaaiagent = "exaaiagnt.interface.main:main"
44
+ ExaAiAgent = "exaaiagnt.interface.main:main"
43
45
 
44
46
  [tool.poetry.dependencies]
45
47
  python = "^3.12"
File without changes