holmesgpt 0.15.0__tar.gz → 0.16.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.
Potentially problematic release.
This version of holmesgpt might be problematic. Click here for more details.
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/PKG-INFO +4 -2
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/README.md +3 -1
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/__init__.py +1 -1
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/common/env_vars.py +8 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/llm.py +28 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/supabase_dal.py +33 -42
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tool_calling_llm.py +92 -223
- holmesgpt-0.16.0/holmes/core/tools_utils/tool_context_window_limiter.py +57 -0
- holmesgpt-0.16.0/holmes/core/truncation/compaction.py +59 -0
- holmesgpt-0.16.0/holmes/core/truncation/input_context_window_limiter.py +218 -0
- holmesgpt-0.16.0/holmes/plugins/prompts/conversation_history_compaction.jinja2 +88 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/investigator/core_investigation.py +20 -11
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/robusta/robusta.py +35 -8
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/robusta/robusta_instructions.jinja2 +4 -3
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/stream.py +1 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/pyproject.toml +2 -1
- holmesgpt-0.15.0/holmes/core/performance_timing.py +0 -72
- holmesgpt-0.15.0/holmes/core/tools_utils/tool_context_window_limiter.py +0 -64
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/LICENSE.txt +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/.git_archival.json +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/clients/robusta_client.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/common/openshift.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/config.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/config.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/conversations.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/feedback.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/investigation.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/investigation_structured_output.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/issue.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/models.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/openai_formatting.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/prompt.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/resource_instruction.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/runbooks.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/safeguards.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/todo_tasks_formatter.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tools.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tools_utils/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tools_utils/token_counting.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tools_utils/tool_executor.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tools_utils/toolset_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/toolset_manager.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/tracing.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/transformers/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/transformers/base.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/transformers/llm_summarize.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/transformers/registry.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/transformers/transformer.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/core/truncation/dal_truncation_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/interactive.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/main.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/destinations/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/destinations/slack/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/destinations/slack/plugin.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/interfaces.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_ai_safety.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_current_date_time.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_default_log_prompt.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_fetch_logs.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_general_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_global_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_permission_errors.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_runbook_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/_toolsets_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_ask.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_ask_conversation.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_ask_for_issue_conversation.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_investigation.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_post_processing.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/generic_ticket.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/investigation_output_format.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/investigation_procedure.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/kubernetes_workload_ask.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/prompts/kubernetes_workload_chat.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/CLAUDE.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/README.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/catalog.json +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/jira.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/kube-prometheus-stack.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/networking/dns_troubleshooting_instructions.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/runbooks/upgrade/upgrade_troubleshooting_instructions.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/github/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/jira/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/opsgenie/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/pagerduty/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/prometheus/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/prometheus/models.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/sources/prometheus/plugin.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/aks-node-health.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/aks.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/argocd.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/aws.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/apis/alert_monitoring_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/apis/azure_sql_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/apis/connection_failure_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/apis/connection_monitoring_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/apis/storage_analysis_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/azure_base_toolset.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/azure_sql_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/azure_sql_toolset.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/install.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/analyze_connection_failures.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_connections.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_health_status.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_performance.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_storage.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/get_active_alerts.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/get_slow_queries.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/get_top_cpu_queries.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/get_top_data_io_queries.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/tools/get_top_log_io_queries.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/azure_sql/utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/argocd/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/argocd/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/aws/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/aws/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/azure/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/azure/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/bash_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/bash_toolset.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/common/bash.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/common/bash_command.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/common/config.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/common/stringify.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/common/validators.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/docker/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/docker/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/helm/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/helm/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/constants.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_describe.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_events.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_get.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_logs.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_run.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/kubectl/kubectl_top.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/parse_command.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/base64_util.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/cut.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/grep/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/head.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/jq.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/sed.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/sort.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/tail.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/tr.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/uniq.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/bash/utilities/wc.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/cilium.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/confluence.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/consts.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/coralogix/api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/coralogix/toolset_coralogix_logs.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/coralogix/utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_general_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_metrics_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_rds_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/datadog_traces_formatter.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/instructions_datadog_traces.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/toolset_datadog_general.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/toolset_datadog_logs.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/toolset_datadog_metrics.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/toolset_datadog_rds.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/datadog/toolset_datadog_traces.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/docker.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/git.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/base_grafana_toolset.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/common.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/grafana_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/grafana_tempo_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/loki_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/toolset_grafana.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/toolset_grafana_loki.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/toolset_grafana_tempo.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/grafana/trace_parser.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/helm.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/internet/internet.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/internet/notion.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/investigator/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/investigator/investigator_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/investigator/model.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/kafka.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/kubernetes.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/kubernetes_logs.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/kubernetes_logs.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/logging_utils/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/logging_utils/logging_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/logging_utils/types.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/mcp/toolset_mcp.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/newrelic/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/newrelic/new_relic_api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/newrelic/newrelic.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/newrelic/newrelic.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_logs.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_ppl_query_docs.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_query_assist.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_query_assist_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_traces.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_traces_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/opensearch/opensearch_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/prometheus/prometheus.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/prometheus/prometheus_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/prometheus/utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/rabbitmq/api.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/rabbitmq/rabbitmq_instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/rabbitmq/toolset_rabbitmq.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/robusta/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/runbook/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/runbook/runbook_fetcher.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/service_discovery.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/servicenow/install.md +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/servicenow/instructions.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/servicenow/servicenow.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/slab.yaml +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/toolsets/utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/plugins/utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/__init__.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/cache.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/cert_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/colors.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/config_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/console/consts.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/console/logging.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/console/result.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/default_toolset_installation_guide.jinja2 +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/definitions.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/env.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/file_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/global_instructions.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/holmes_status.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/holmes_sync_toolsets.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/keygen_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/llms.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/markdown_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/pydantic_utils.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/sentry_helper.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/utils/tags.py +0 -0
- {holmesgpt-0.15.0 → holmesgpt-0.16.0}/holmes/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: holmesgpt
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.0
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Natan Yellin
|
|
6
6
|
Author-email: natan@robusta.dev
|
|
@@ -58,7 +58,9 @@ Description-Content-Type: text/markdown
|
|
|
58
58
|
|
|
59
59
|
HolmesGPT is an AI agent for investigating problems in your cloud, finding the root cause, and suggesting remediations. It has dozens of built-in integrations for cloud providers, observability tools, and on-call systems.
|
|
60
60
|
|
|
61
|
-
HolmesGPT
|
|
61
|
+
>🎉 **HolmesGPT is now a CNCF Sandbox Project!** We're thrilled to be part of the Cloud Native Computing Foundation. [Learn more about our journey](https://github.com/cncf/sandbox/issues/392#issuecomment-3380007501).
|
|
62
|
+
|
|
63
|
+
Find more about HolmesGPT's maintainers and adopters [here](./ADOPTERS.md).
|
|
62
64
|
|
|
63
65
|
<p align="center">
|
|
64
66
|
<a href="#how-it-works"><strong>How it Works</strong></a> |
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
HolmesGPT is an AI agent for investigating problems in your cloud, finding the root cause, and suggesting remediations. It has dozens of built-in integrations for cloud providers, observability tools, and on-call systems.
|
|
5
5
|
|
|
6
|
-
HolmesGPT
|
|
6
|
+
>🎉 **HolmesGPT is now a CNCF Sandbox Project!** We're thrilled to be part of the Cloud Native Computing Foundation. [Learn more about our journey](https://github.com/cncf/sandbox/issues/392#issuecomment-3380007501).
|
|
7
|
+
|
|
8
|
+
Find more about HolmesGPT's maintainers and adopters [here](./ADOPTERS.md).
|
|
7
9
|
|
|
8
10
|
<p align="center">
|
|
9
11
|
<a href="#how-it-works"><strong>How it Works</strong></a> |
|
|
@@ -100,4 +100,12 @@ MAX_EVIDENCE_DATA_CHARACTERS_BEFORE_TRUNCATION = int(
|
|
|
100
100
|
os.environ.get("MAX_EVIDENCE_DATA_CHARACTERS_BEFORE_TRUNCATION", 3000)
|
|
101
101
|
)
|
|
102
102
|
|
|
103
|
+
ENABLE_CONVERSATION_HISTORY_COMPACTION = load_bool(
|
|
104
|
+
"ENABLE_CONVERSATION_HISTORY_COMPACTION", default=True
|
|
105
|
+
)
|
|
106
|
+
|
|
103
107
|
DISABLE_PROMETHEUS_TOOLSET = load_bool("DISABLE_PROMETHEUS_TOOLSET", False)
|
|
108
|
+
|
|
109
|
+
RESET_REPEATED_TOOL_CALL_CHECK_AFTER_COMPACTION = load_bool(
|
|
110
|
+
"RESET_REPEATED_TOOL_CALL_CHECK_AFTER_COMPACTION", True
|
|
111
|
+
)
|
|
@@ -26,6 +26,8 @@ from holmes.common.env_vars import (
|
|
|
26
26
|
ROBUSTA_API_ENDPOINT,
|
|
27
27
|
THINKING,
|
|
28
28
|
EXTRA_HEADERS,
|
|
29
|
+
TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT,
|
|
30
|
+
TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_TOKENS,
|
|
29
31
|
)
|
|
30
32
|
from holmes.core.supabase_dal import SupabaseDal
|
|
31
33
|
from holmes.utils.env import environ_get_safe_int, replace_env_vars_values
|
|
@@ -41,6 +43,13 @@ MODEL_LIST_FILE_LOCATION = os.environ.get(
|
|
|
41
43
|
|
|
42
44
|
OVERRIDE_MAX_OUTPUT_TOKEN = environ_get_safe_int("OVERRIDE_MAX_OUTPUT_TOKEN")
|
|
43
45
|
OVERRIDE_MAX_CONTENT_SIZE = environ_get_safe_int("OVERRIDE_MAX_CONTENT_SIZE")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_context_window_compaction_threshold_pct() -> int:
|
|
49
|
+
"""Get the compaction threshold percentage at runtime to support test overrides."""
|
|
50
|
+
return environ_get_safe_int("CONTEXT_WINDOW_COMPACTION_THRESHOLD_PCT", default="95")
|
|
51
|
+
|
|
52
|
+
|
|
44
53
|
ROBUSTA_AI_MODEL_NAME = "Robusta"
|
|
45
54
|
|
|
46
55
|
|
|
@@ -50,6 +59,7 @@ class TokenCountMetadata(BaseModel):
|
|
|
50
59
|
system_tokens: int
|
|
51
60
|
user_tokens: int
|
|
52
61
|
tools_to_call_tokens: int
|
|
62
|
+
assistant_tokens: int
|
|
53
63
|
other_tokens: int
|
|
54
64
|
|
|
55
65
|
|
|
@@ -90,6 +100,19 @@ class LLM:
|
|
|
90
100
|
def get_maximum_output_token(self) -> int:
|
|
91
101
|
pass
|
|
92
102
|
|
|
103
|
+
def get_max_token_count_for_single_tool(self) -> int:
|
|
104
|
+
if (
|
|
105
|
+
0 < TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT
|
|
106
|
+
and TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT <= 100
|
|
107
|
+
):
|
|
108
|
+
context_window_size = self.get_context_window_size()
|
|
109
|
+
calculated_max_tokens = int(
|
|
110
|
+
context_window_size * TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT // 100
|
|
111
|
+
)
|
|
112
|
+
return min(calculated_max_tokens, TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_TOKENS)
|
|
113
|
+
else:
|
|
114
|
+
return TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_TOKENS
|
|
115
|
+
|
|
93
116
|
@abstractmethod
|
|
94
117
|
def count_tokens(
|
|
95
118
|
self, messages: list[dict], tools: Optional[list[dict[str, Any]]] = None
|
|
@@ -279,6 +302,7 @@ class DefaultLLM(LLM):
|
|
|
279
302
|
total_tokens = 0
|
|
280
303
|
tools_tokens = 0
|
|
281
304
|
system_tokens = 0
|
|
305
|
+
assistant_tokens = 0
|
|
282
306
|
user_tokens = 0
|
|
283
307
|
other_tokens = 0
|
|
284
308
|
tools_to_call_tokens = 0
|
|
@@ -296,6 +320,8 @@ class DefaultLLM(LLM):
|
|
|
296
320
|
user_tokens += token_count
|
|
297
321
|
elif role == "tool":
|
|
298
322
|
tools_tokens += token_count
|
|
323
|
+
elif role == "assistant":
|
|
324
|
+
assistant_tokens += token_count
|
|
299
325
|
else:
|
|
300
326
|
# although this should not be needed,
|
|
301
327
|
# it is defensive code so that all tokens are accounted for
|
|
@@ -320,6 +346,7 @@ class DefaultLLM(LLM):
|
|
|
320
346
|
tools_tokens=tools_tokens,
|
|
321
347
|
tools_to_call_tokens=tools_to_call_tokens,
|
|
322
348
|
other_tokens=other_tokens,
|
|
349
|
+
assistant_tokens=assistant_tokens,
|
|
323
350
|
)
|
|
324
351
|
|
|
325
352
|
def get_litellm_corrected_name_for_robusta_ai(self) -> str:
|
|
@@ -544,6 +571,7 @@ class LLMModelRegistry:
|
|
|
544
571
|
return
|
|
545
572
|
|
|
546
573
|
account_id, token = self.dal.get_ai_credentials()
|
|
574
|
+
|
|
547
575
|
robusta_models: RobustaModelsResponse | None = fetch_robusta_models(
|
|
548
576
|
account_id, token
|
|
549
577
|
)
|
|
@@ -237,70 +237,61 @@ class SupabaseDal:
|
|
|
237
237
|
logging.exception("Supabase error while retrieving efficiency data")
|
|
238
238
|
return None
|
|
239
239
|
|
|
240
|
-
def
|
|
241
|
-
self,
|
|
240
|
+
def get_configuration_changes_metadata(
|
|
241
|
+
self,
|
|
242
|
+
start_datetime: str,
|
|
243
|
+
end_datetime: str,
|
|
244
|
+
limit: int = 100,
|
|
245
|
+
workload: Optional[str] = None,
|
|
246
|
+
ns: Optional[str] = None,
|
|
242
247
|
) -> Optional[List[Dict]]:
|
|
243
248
|
if not self.enabled:
|
|
244
249
|
return []
|
|
245
250
|
|
|
246
251
|
try:
|
|
247
|
-
|
|
252
|
+
query = (
|
|
248
253
|
self.client.table(ISSUES_TABLE)
|
|
249
|
-
.select(
|
|
254
|
+
.select(
|
|
255
|
+
"id",
|
|
256
|
+
"title",
|
|
257
|
+
"subject_name",
|
|
258
|
+
"subject_namespace",
|
|
259
|
+
"subject_type",
|
|
260
|
+
"description",
|
|
261
|
+
"starts_at",
|
|
262
|
+
"ends_at",
|
|
263
|
+
)
|
|
250
264
|
.eq("account_id", self.account_id)
|
|
251
265
|
.eq("cluster", self.cluster)
|
|
252
266
|
.eq("finding_type", "configuration_change")
|
|
253
267
|
.gte("creation_date", start_datetime)
|
|
254
268
|
.lte("creation_date", end_datetime)
|
|
255
|
-
.
|
|
269
|
+
.limit(limit)
|
|
256
270
|
)
|
|
257
|
-
if not len(changes_response.data):
|
|
258
|
-
return None
|
|
259
271
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
272
|
+
if workload:
|
|
273
|
+
query.eq("subject_name", workload)
|
|
274
|
+
if ns:
|
|
275
|
+
query.eq("subject_namespace", ns)
|
|
263
276
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
change_data_response = (
|
|
267
|
-
self.client.table(EVIDENCE_TABLE)
|
|
268
|
-
.select("*")
|
|
269
|
-
.eq("account_id", self.account_id)
|
|
270
|
-
.in_("issue_id", changes_ids)
|
|
271
|
-
.not_.in_("enrichment_type", ENRICHMENT_BLACKLIST)
|
|
272
|
-
.execute()
|
|
273
|
-
)
|
|
274
|
-
if not len(change_data_response.data):
|
|
277
|
+
res = query.execute()
|
|
278
|
+
if not res.data:
|
|
275
279
|
return None
|
|
276
280
|
|
|
277
|
-
truncate_evidences_entities_if_necessary(change_data_response.data)
|
|
278
|
-
|
|
279
281
|
except Exception:
|
|
280
|
-
logging.exception("Supabase error while retrieving change
|
|
282
|
+
logging.exception("Supabase error while retrieving change data")
|
|
281
283
|
return None
|
|
282
284
|
|
|
283
|
-
changes_data = []
|
|
284
|
-
change_data_map = {
|
|
285
|
-
change["issue_id"]: change for change in change_data_response.data
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
for change in changes_response.data:
|
|
289
|
-
change_content = change_data_map.get(change["id"])
|
|
290
|
-
if change_content:
|
|
291
|
-
changes_data.append(
|
|
292
|
-
{
|
|
293
|
-
"change": change_content["data"],
|
|
294
|
-
"evidence_id": change_content["id"],
|
|
295
|
-
**change,
|
|
296
|
-
}
|
|
297
|
-
)
|
|
298
|
-
|
|
299
285
|
logging.debug(
|
|
300
|
-
"Change history for %s-%s: %s",
|
|
286
|
+
"Change history metadata for %s-%s workload %s in ns %s: %s",
|
|
287
|
+
start_datetime,
|
|
288
|
+
end_datetime,
|
|
289
|
+
workload,
|
|
290
|
+
ns,
|
|
291
|
+
res.data,
|
|
301
292
|
)
|
|
302
293
|
|
|
303
|
-
return
|
|
294
|
+
return res.data
|
|
304
295
|
|
|
305
296
|
def unzip_evidence_file(self, data):
|
|
306
297
|
try:
|