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.
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/PKG-INFO +72 -42
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/README.md +71 -41
- exaai_agent-2.2.0/exaaiagnt/dashboard/server.py +99 -0
- exaai_agent-2.2.0/exaaiagnt/dashboard/templates/index.html +232 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/cli.py +62 -30
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/main.py +11 -1
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tui.py +12 -8
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/llm.py +43 -8
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/llm_traffic_controller.py +5 -3
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/README.md +3 -1
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/auto_loader.py +31 -0
- exaai_agent-2.2.0/exaaiagnt/prompts/cloud/azure_cloud_security.jinja +126 -0
- exaai_agent-2.2.0/exaaiagnt/prompts/cloud/gcp_cloud_security.jinja +158 -0
- exaai_agent-2.2.0/exaaiagnt/prompts/cloud/kubernetes_security.jinja +97 -0
- exaai_agent-2.2.0/exaaiagnt/prompts/vulnerabilities/prompt_injection.jinja +276 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/tool_manager.py +12 -3
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/telemetry/tracer.py +17 -1
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/__init__.py +24 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/executor.py +16 -4
- exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/__init__.py +29 -0
- exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/k8s_actions.py +319 -0
- exaai_agent-2.2.0/exaaiagnt/tools/k8s_scanner/k8s_actions_schema.xml +36 -0
- exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/__init__.py +26 -0
- exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/prompt_injection_actions.py +712 -0
- exaai_agent-2.2.0/exaaiagnt/tools/prompt_injection/prompt_injection_actions_schema.xml +28 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_instance.py +16 -1
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/reporting_actions.py +34 -5
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/response_analyzer.py +5 -3
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/smart_fuzzer.py +5 -3
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/vuln_validator.py +5 -3
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/web_search/web_search_actions.py +4 -2
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/pyproject.toml +1 -1
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/LICENSE +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/exaai_agent.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/ExaaiAgent/system_prompt.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/agent_supervisor.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/base_agent.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/scan_modes.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/shared_memory.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/agents/state.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/assets/tui_styles.tcss +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/agents_graph_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/base_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/browser_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/file_edit_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/finish_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/notes_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/proxy_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/python_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/registry.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/reporting_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/scan_info_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/terminal_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/thinking_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/user_message_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/tool_components/web_search_renderer.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/interface/utils.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/config.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/fallback.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/memory_compressor.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/output_processor.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/request_queue.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/llm/utils.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/cloud/.gitkeep +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/cloud/aws_cloud_security.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/coordination/root_agent.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/custom/.gitkeep +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/fastapi.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/frameworks/nextjs.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/protocols/graphql.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/reconnaissance/.gitkeep +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/technologies/firebase_firestore.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/technologies/supabase.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/api_security.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/broken_function_level_authorization.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/csrf.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/idor.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/information_disclosure.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/insecure_file_uploads.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/oauth_oidc.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/rce.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/react2shell.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/ssrf.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/ssti.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/waf_bypass.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/xss.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/prompts/vulnerabilities/xxe.jinja +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/docker_runtime.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/runtime.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/runtime/tool_server.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/telemetry/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/agents_graph_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/argument_parser.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/browser_instance.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/browser/tab_manager.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/file_edit_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/finish_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/finish/finish_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/notes_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/notes/notes_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/proxy/proxy_manager.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/python/python_manager.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/registry.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/reporting/reporting_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_manager.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/terminal/terminal_session.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/__init__.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/thinking_actions.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/thinking/thinking_actions_schema.xml +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/tool_prompts.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/waf_bypass.py +0 -0
- {exaai_agent-2.0.9 → exaai_agent-2.2.0}/exaaiagnt/tools/web_search/__init__.py +0 -0
- {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
|
|
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
|
[](https://pypi.org/project/exaai-agent/)
|
|
54
54
|
[](https://pypi.org/project/exaai-agent/)
|
|
55
55
|
[](LICENSE)
|
|
56
|
-
[]()
|
|
57
57
|
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<br>
|
|
61
61
|
|
|
62
62
|
> [!TIP]
|
|
63
|
-
> **🚀 v2.1.
|
|
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.
|
|
73
|
+
## 🔥 What's New in v2.1.2
|
|
68
74
|
|
|
69
|
-
###
|
|
75
|
+
### 🤖 AI Agent Integration (OpenClaw)
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
Seamlessly integrate ExaAiAgent with your AI workforce:
|
|
72
78
|
|
|
73
|
-
- **
|
|
74
|
-
- Auto-
|
|
75
|
-
-
|
|
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
|
-
###
|
|
83
|
+
### ⚓ Kubernetes & Cloud Security (Updated)
|
|
79
84
|
|
|
80
|
-
|
|
85
|
+
Expanded coverage for cloud-native infrastructure:
|
|
81
86
|
|
|
82
|
-
- **
|
|
83
|
-
- **Azure**: Blob
|
|
84
|
-
- **GCP**: Cloud Storage, Service Account
|
|
85
|
-
- **
|
|
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
|
-
###
|
|
92
|
+
### 🛡️ Smart Security Tools
|
|
88
93
|
|
|
89
94
|
| Tool | Capability |
|
|
90
95
|
|------|------------|
|
|
91
|
-
| **Smart Fuzzer** |
|
|
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
|
|
94
|
-
| **WAF Bypass** | Multi-layer bypass
|
|
98
|
+
| **Vuln Validator** | PoC generation with false positive reduction |
|
|
99
|
+
| **WAF Bypass** | Multi-layer bypass for Cloudflare, Akamai, AWS WAF |
|
|
95
100
|
|
|
96
|
-
### ⚡ CLI
|
|
101
|
+
### ⚡ CLI & Stability
|
|
97
102
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
106
|
-
|
|
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:
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
[](https://pypi.org/project/exaai-agent/)
|
|
12
12
|
[](https://pypi.org/project/exaai-agent/)
|
|
13
13
|
[](LICENSE)
|
|
14
|
-
[]()
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<br>
|
|
19
19
|
|
|
20
20
|
> [!TIP]
|
|
21
|
-
> **🚀 v2.1.
|
|
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.
|
|
31
|
+
## 🔥 What's New in v2.1.2
|
|
26
32
|
|
|
27
|
-
###
|
|
33
|
+
### 🤖 AI Agent Integration (OpenClaw)
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
Seamlessly integrate ExaAiAgent with your AI workforce:
|
|
30
36
|
|
|
31
|
-
- **
|
|
32
|
-
- Auto-
|
|
33
|
-
-
|
|
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
|
-
###
|
|
41
|
+
### ⚓ Kubernetes & Cloud Security (Updated)
|
|
37
42
|
|
|
38
|
-
|
|
43
|
+
Expanded coverage for cloud-native infrastructure:
|
|
39
44
|
|
|
40
|
-
- **
|
|
41
|
-
- **Azure**: Blob
|
|
42
|
-
- **GCP**: Cloud Storage, Service Account
|
|
43
|
-
- **
|
|
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
|
-
###
|
|
50
|
+
### 🛡️ Smart Security Tools
|
|
46
51
|
|
|
47
52
|
| Tool | Capability |
|
|
48
53
|
|------|------------|
|
|
49
|
-
| **Smart Fuzzer** |
|
|
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
|
|
52
|
-
| **WAF Bypass** | Multi-layer bypass
|
|
56
|
+
| **Vuln Validator** | PoC generation with false positive reduction |
|
|
57
|
+
| **WAF Bypass** | Multi-layer bypass for Cloudflare, Akamai, AWS WAF |
|
|
53
58
|
|
|
54
|
-
### ⚡ CLI
|
|
59
|
+
### ⚡ CLI & Stability
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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:
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|