exaai-agent 2.2.0__tar.gz → 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/PKG-INFO +2 -1
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/main.py +12 -2
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tui.py +2 -2
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/docker_runtime.py +9 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/k8s_actions.py +1 -1
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/pyproject.toml +2 -1
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/LICENSE +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/README.md +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/exaai_agent.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/ExaaiAgent/system_prompt.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/agent_supervisor.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/base_agent.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/scan_modes.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/shared_memory.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/agents/state.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/dashboard/server.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/dashboard/templates/index.html +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/assets/tui_styles.tcss +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/cli.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/agents_graph_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/base_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/browser_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/file_edit_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/finish_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/notes_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/proxy_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/python_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/registry.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/reporting_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/scan_info_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/terminal_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/thinking_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/user_message_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/web_search_renderer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/utils.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/config.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/fallback.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/llm.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/llm_traffic_controller.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/memory_compressor.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/output_processor.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/request_queue.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/llm/utils.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/README.md +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/auto_loader.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/.gitkeep +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/aws_cloud_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/azure_cloud_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/gcp_cloud_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/cloud/kubernetes_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/coordination/root_agent.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/custom/.gitkeep +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/fastapi.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/nextjs.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/protocols/graphql.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/reconnaissance/.gitkeep +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/technologies/firebase_firestore.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/technologies/supabase.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/api_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/broken_function_level_authorization.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/csrf.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/idor.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/information_disclosure.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/insecure_file_uploads.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/oauth_oidc.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prompt_injection.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/rce.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/react2shell.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/ssrf.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/ssti.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/waf_bypass.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/xss.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/xxe.jinja +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/runtime.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/tool_manager.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/runtime/tool_server.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/telemetry/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/telemetry/tracer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/argument_parser.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/browser_instance.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/browser/tab_manager.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/executor.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/file_edit_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/finish_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/finish/finish_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/k8s_scanner/k8s_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/notes_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/notes/notes_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/prompt_injection_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/prompt_injection_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/proxy/proxy_manager.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_instance.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/python/python_manager.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/registry.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/reporting_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/reporting_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/response_analyzer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/smart_fuzzer.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_manager.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_session.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/thinking_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/thinking_actions_schema.xml +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/tool_prompts.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/vuln_validator.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/waf_bypass.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/__init__.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/web_search_actions.py +0 -0
- {exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/web_search_actions_schema.xml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exaai-agent
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.1
|
|
4
4
|
Summary: ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -37,6 +37,7 @@ Requires-Dist: rich
|
|
|
37
37
|
Requires-Dist: tenacity (>=9.0.0,<10.0.0)
|
|
38
38
|
Requires-Dist: textual (>=4.0.0,<5.0.0)
|
|
39
39
|
Requires-Dist: uvicorn
|
|
40
|
+
Requires-Dist: websockets (>=12.0,<13.0)
|
|
40
41
|
Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
|
|
41
42
|
Description-Content-Type: text/markdown
|
|
42
43
|
|
|
@@ -224,7 +224,17 @@ async def warm_up_llm() -> None:
|
|
|
224
224
|
error_text.append("\n\n", style="white")
|
|
225
225
|
error_text.append("Could not establish connection to the language model.\n", style="white")
|
|
226
226
|
error_text.append("Please check your configuration and try again.\n", style="white")
|
|
227
|
-
|
|
227
|
+
|
|
228
|
+
# Enhanced error diagnosis
|
|
229
|
+
error_str = str(e)
|
|
230
|
+
if "AuthenticationError" in error_str:
|
|
231
|
+
error_text.append("🔍 Hint: Your API key seems invalid or expired.\n", style="bold yellow")
|
|
232
|
+
elif "NotFoundError" in error_str:
|
|
233
|
+
error_text.append(f"🔍 Hint: The model '{model_name}' was not found. Check if the model name is correct.\n", style="bold yellow")
|
|
234
|
+
elif "ConnectionError" in error_str:
|
|
235
|
+
error_text.append("🔍 Hint: Network connection failed. Check your internet or proxy settings.\n", style="bold yellow")
|
|
236
|
+
|
|
237
|
+
error_text.append(f"\nError Details: {e}", style="dim white")
|
|
228
238
|
|
|
229
239
|
panel = Panel(
|
|
230
240
|
error_text,
|
|
@@ -242,7 +252,7 @@ async def warm_up_llm() -> None:
|
|
|
242
252
|
|
|
243
253
|
def get_version() -> str:
|
|
244
254
|
"""Get the current ExaAi version."""
|
|
245
|
-
return "2.1
|
|
255
|
+
return "2.2.1"
|
|
246
256
|
|
|
247
257
|
|
|
248
258
|
def parse_arguments() -> argparse.Namespace:
|
|
@@ -45,7 +45,7 @@ def get_package_version() -> str:
|
|
|
45
45
|
return pkg_version("exaai-agent")
|
|
46
46
|
except PackageNotFoundError:
|
|
47
47
|
# Fallback version if package not installed
|
|
48
|
-
return "2.1
|
|
48
|
+
return "2.2.1"
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class ChatTextArea(TextArea): # type: ignore[misc]
|
|
@@ -80,7 +80,7 @@ class SplashScreen(Static): # type: ignore[misc]
|
|
|
80
80
|
NEON_ORANGE = "#ff8800"
|
|
81
81
|
SOFT_WHITE = "#e0e0e0"
|
|
82
82
|
|
|
83
|
-
# Enhanced ASCII Logo - ExaAi v2.1
|
|
83
|
+
# Enhanced ASCII Logo - ExaAi v2.2.1
|
|
84
84
|
BANNER = r"""
|
|
85
85
|
███████╗██╗ ██╗ █████╗ █████╗ ██╗
|
|
86
86
|
██╔════╝╚██╗██╔╝██╔══██╗ ██╔══██╗██║
|
|
@@ -104,6 +104,14 @@ class DockerRuntime(AbstractRuntime):
|
|
|
104
104
|
self._tool_server_port = tool_server_port
|
|
105
105
|
self._tool_server_token = tool_server_token
|
|
106
106
|
|
|
107
|
+
# Mount kubeconfig if available
|
|
108
|
+
volumes = {}
|
|
109
|
+
kube_config = os.path.expanduser("~/.kube")
|
|
110
|
+
if os.path.exists(kube_config):
|
|
111
|
+
volumes[kube_config] = {'bind': '/root/.kube', 'mode': 'ro'}
|
|
112
|
+
# Also mount for pentester user
|
|
113
|
+
volumes[kube_config] = {'bind': '/home/pentester/.kube', 'mode': 'ro'}
|
|
114
|
+
|
|
107
115
|
container = self.client.containers.run(
|
|
108
116
|
EXAAI_IMAGE,
|
|
109
117
|
command="sleep infinity",
|
|
@@ -114,6 +122,7 @@ class DockerRuntime(AbstractRuntime):
|
|
|
114
122
|
f"{caido_port}/tcp": caido_port,
|
|
115
123
|
f"{tool_server_port}/tcp": tool_server_port,
|
|
116
124
|
},
|
|
125
|
+
volumes=volumes,
|
|
117
126
|
cap_add=["NET_ADMIN", "NET_RAW"],
|
|
118
127
|
labels={"exaai-scan-id": scan_id},
|
|
119
128
|
environment={
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "exaai-agent"
|
|
3
|
-
version = "2.2.
|
|
3
|
+
version = "2.2.1"
|
|
4
4
|
description = "ExaAi - Advanced AI Security Agent for Comprehensive Penetration Testing"
|
|
5
5
|
authors = ["ExaAi Team <mahmedhleli@gmail.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -63,6 +63,7 @@ xmltodict = "^0.13.0"
|
|
|
63
63
|
pyte = "^0.8.1"
|
|
64
64
|
requests = "^2.32.0"
|
|
65
65
|
libtmux = "^0.46.2"
|
|
66
|
+
websockets = "^12.0"
|
|
66
67
|
|
|
67
68
|
[tool.poetry.group.dev.dependencies]
|
|
68
69
|
# Type checking and static analysis
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/agents_graph_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/base_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/browser_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/file_edit_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/finish_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/notes_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/proxy_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/python_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/reporting_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/scan_info_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/terminal_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/thinking_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/user_message_renderer.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/interface/tool_components/web_search_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/frameworks/modern_js_frameworks.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/technologies/firebase_firestore.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/advanced_recon.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/api_security.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/authentication_jwt.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/business_logic.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cache_poisoning.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/cloud_security.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/deserialization.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/graphql_security.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/high_impact_bugs.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/http_smuggling.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/mass_assignment.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/open_redirect.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/post_exploitation.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/privilege_escalation.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prompt_injection.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/prototype_pollution.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/race_conditions.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/reconnaissance_osint.jinja
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/sql_injection.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/subdomain_takeover.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/prompts/vulnerabilities/websocket_security.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions.py
RENAMED
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/agents_graph/agents_graph_actions_schema.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/file_edit/file_edit_actions_schema.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/prompt_injection/prompt_injection_actions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/reporting/reporting_actions_schema.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/terminal/terminal_actions_schema.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/thinking/thinking_actions_schema.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{exaai_agent-2.2.0 → exaai_agent-2.2.1}/exaaiagnt/tools/web_search/web_search_actions_schema.xml
RENAMED
|
File without changes
|