holmesgpt 0.14.1a0__py3-none-any.whl → 0.14.3a0__py3-none-any.whl

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.

Files changed (73) hide show
  1. holmes/__init__.py +1 -1
  2. holmes/clients/robusta_client.py +5 -2
  3. holmes/common/env_vars.py +8 -2
  4. holmes/config.py +4 -7
  5. holmes/core/conversations.py +12 -2
  6. holmes/core/feedback.py +191 -0
  7. holmes/core/llm.py +52 -10
  8. holmes/core/models.py +101 -1
  9. holmes/core/supabase_dal.py +23 -9
  10. holmes/core/tool_calling_llm.py +206 -16
  11. holmes/core/tools.py +20 -7
  12. holmes/core/tools_utils/token_counting.py +13 -0
  13. holmes/core/tools_utils/tool_context_window_limiter.py +45 -23
  14. holmes/core/tools_utils/tool_executor.py +11 -6
  15. holmes/core/toolset_manager.py +7 -3
  16. holmes/core/truncation/dal_truncation_utils.py +23 -0
  17. holmes/interactive.py +146 -14
  18. holmes/plugins/prompts/_fetch_logs.jinja2 +13 -1
  19. holmes/plugins/runbooks/__init__.py +6 -1
  20. holmes/plugins/toolsets/__init__.py +11 -4
  21. holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py +9 -20
  22. holmes/plugins/toolsets/azure_sql/tools/analyze_connection_failures.py +2 -3
  23. holmes/plugins/toolsets/azure_sql/tools/analyze_database_connections.py +2 -3
  24. holmes/plugins/toolsets/azure_sql/tools/analyze_database_health_status.py +6 -4
  25. holmes/plugins/toolsets/azure_sql/tools/analyze_database_performance.py +6 -4
  26. holmes/plugins/toolsets/azure_sql/tools/analyze_database_storage.py +2 -3
  27. holmes/plugins/toolsets/azure_sql/tools/get_active_alerts.py +6 -4
  28. holmes/plugins/toolsets/azure_sql/tools/get_slow_queries.py +2 -3
  29. holmes/plugins/toolsets/azure_sql/tools/get_top_cpu_queries.py +2 -3
  30. holmes/plugins/toolsets/azure_sql/tools/get_top_data_io_queries.py +2 -3
  31. holmes/plugins/toolsets/azure_sql/tools/get_top_log_io_queries.py +2 -3
  32. holmes/plugins/toolsets/bash/bash_toolset.py +4 -7
  33. holmes/plugins/toolsets/cilium.yaml +284 -0
  34. holmes/plugins/toolsets/datadog/datadog_api.py +490 -24
  35. holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2 +21 -10
  36. holmes/plugins/toolsets/datadog/toolset_datadog_general.py +333 -199
  37. holmes/plugins/toolsets/datadog/toolset_datadog_logs.py +181 -9
  38. holmes/plugins/toolsets/datadog/toolset_datadog_metrics.py +80 -22
  39. holmes/plugins/toolsets/datadog/toolset_datadog_rds.py +5 -8
  40. holmes/plugins/toolsets/datadog/toolset_datadog_traces.py +7 -12
  41. holmes/plugins/toolsets/git.py +14 -12
  42. holmes/plugins/toolsets/grafana/grafana_tempo_api.py +23 -42
  43. holmes/plugins/toolsets/grafana/toolset_grafana.py +2 -3
  44. holmes/plugins/toolsets/grafana/toolset_grafana_loki.py +2 -1
  45. holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py +21 -39
  46. holmes/plugins/toolsets/internet/internet.py +2 -3
  47. holmes/plugins/toolsets/internet/notion.py +2 -3
  48. holmes/plugins/toolsets/investigator/core_investigation.py +7 -9
  49. holmes/plugins/toolsets/kafka.py +7 -18
  50. holmes/plugins/toolsets/logging_utils/logging_api.py +80 -4
  51. holmes/plugins/toolsets/mcp/toolset_mcp.py +2 -3
  52. holmes/plugins/toolsets/newrelic/__init__.py +0 -0
  53. holmes/plugins/toolsets/newrelic/new_relic_api.py +125 -0
  54. holmes/plugins/toolsets/newrelic/newrelic.jinja2 +41 -0
  55. holmes/plugins/toolsets/newrelic/newrelic.py +211 -0
  56. holmes/plugins/toolsets/opensearch/opensearch.py +5 -12
  57. holmes/plugins/toolsets/opensearch/opensearch_traces.py +3 -6
  58. holmes/plugins/toolsets/prometheus/prometheus.py +808 -419
  59. holmes/plugins/toolsets/prometheus/prometheus_instructions.jinja2 +27 -11
  60. holmes/plugins/toolsets/rabbitmq/toolset_rabbitmq.py +3 -6
  61. holmes/plugins/toolsets/robusta/robusta.py +4 -9
  62. holmes/plugins/toolsets/runbook/runbook_fetcher.py +93 -13
  63. holmes/plugins/toolsets/servicenow/servicenow.py +5 -10
  64. holmes/utils/sentry_helper.py +1 -1
  65. holmes/utils/stream.py +22 -7
  66. holmes/version.py +34 -14
  67. {holmesgpt-0.14.1a0.dist-info → holmesgpt-0.14.3a0.dist-info}/METADATA +7 -9
  68. {holmesgpt-0.14.1a0.dist-info → holmesgpt-0.14.3a0.dist-info}/RECORD +71 -65
  69. holmes/core/tools_utils/data_types.py +0 -81
  70. holmes/plugins/toolsets/newrelic.py +0 -231
  71. {holmesgpt-0.14.1a0.dist-info → holmesgpt-0.14.3a0.dist-info}/LICENSE.txt +0 -0
  72. {holmesgpt-0.14.1a0.dist-info → holmesgpt-0.14.3a0.dist-info}/WHEEL +0 -0
  73. {holmesgpt-0.14.1a0.dist-info → holmesgpt-0.14.3a0.dist-info}/entry_points.txt +0 -0
@@ -1,40 +1,42 @@
1
1
  holmes/.git_archival.json,sha256=PbwdO7rNhEJ4ALiO12DPPb81xNAIsVxCA0m8OrVoqsk,182
2
- holmes/__init__.py,sha256=OFoM3xT5ywcINPQEn7FPjCRqsbs5mD59bkMe-DZri1k,263
3
- holmes/clients/robusta_client.py,sha256=kSmKXBw9Y16i7XmpnpS90fbbLQ_T5FtMIZMyTPoL9Uk,1410
4
- holmes/common/env_vars.py,sha256=y61QXRmu80iAtUU7cp30wjCrs_rwHNRS-kZaSyuzJcI,3312
2
+ holmes/__init__.py,sha256=Xkcdfkht6ggBl_hP1QR015rQn_M9AemtEWj2KaFd9X4,263
3
+ holmes/clients/robusta_client.py,sha256=rWst1PANJaIsprp3jZ7RV5UpttM_YLBGQ8B5noZqvgg,1532
4
+ holmes/common/env_vars.py,sha256=p9xO7bDjyPNJr7S4OO-GkMR1RYaj4aWxTtcy5JTzJKU,3521
5
5
  holmes/common/openshift.py,sha256=akbQ0GpnmuzXOqTcotpTDQSDKIROypS9mgPOprUgkCw,407
6
- holmes/config.py,sha256=r51n38hEAAphE37WUklPVY1-ELaWsXs78nD-3LYbJJQ,21781
6
+ holmes/config.py,sha256=uwSbVxWvXp5B4XRk9GkMMcQG8tgFfrYj7PRex-qn54w,21743
7
7
  holmes/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  holmes/core/config.py,sha256=9QGIXeYff9FPWa91as2OkRO2SupHzfNQZWzfNC4Vl-8,113
9
- holmes/core/conversations.py,sha256=krkcIe5Sl4JIGp5CfQrR74JYLnxis8ifKu09mOA5fAI,21428
9
+ holmes/core/conversations.py,sha256=iSfYBD88fO-irkCKqy3wm7CV1wn8g89e5GxJlpdn1MA,21723
10
+ holmes/core/feedback.py,sha256=Gu69ghRYGSCPDgFA77xOB5RPbVdQX-9Qpv4yVVegL4g,6793
10
11
  holmes/core/investigation.py,sha256=HrRi1-myPF7ndOwwZ4Sv8iUbvPkrd5M02RPhZzln7NM,5900
11
12
  holmes/core/investigation_structured_output.py,sha256=sNxyqmsElQ-B22OlzTOrJtfrlipjyidcTU07idOBO7w,10570
12
13
  holmes/core/issue.py,sha256=dbctGv8KHAXC1SeOMkEP-BudJ50u7kA8jLN5FN_d808,2426
13
- holmes/core/llm.py,sha256=7XLeFBh70knopL8OEuCgAycF-rFb4-9qFZDAgkkZCtw,21009
14
- holmes/core/models.py,sha256=n3HTxSvm1-JstkRkL8KMZ1mz5zecMqmMzQe2ECmnQ1E,6082
14
+ holmes/core/llm.py,sha256=UQ2Ml4hJS1YDidCaU1Rz6km3qcgycjz-cuuo2coSPxw,22773
15
+ holmes/core/models.py,sha256=xFHFutZWoIaQWSeuq1PiYPw9SGkDrQsQ9qYXuk60EEU,9096
15
16
  holmes/core/openai_formatting.py,sha256=wL0Fq6lDePIKR5viitQz9ZWCQZZkHZHmEUqPIsOoFns,4077
16
17
  holmes/core/performance_timing.py,sha256=MTbTiiX2jjPmW7PuNA2eYON40eWsHPryR1ap_KlwZ_E,2217
17
18
  holmes/core/prompt.py,sha256=YkztY4gsobXys0fHxcwgngZBR2xDtBSYryY7HRnTxCQ,3025
18
19
  holmes/core/resource_instruction.py,sha256=rduue_t8iQi1jbWc3-k3jX867W1Fvc6Tah5uOJk35Mc,483
19
20
  holmes/core/runbooks.py,sha256=Oj5ICmiGgaq57t4erPzQDvHQ0rMGj1nhiiYhl8peH3Q,939
20
21
  holmes/core/safeguards.py,sha256=XrKgmMoJxSROfoSOW6t6QEG2MFppzC20Nyn1HA5G4Go,4935
21
- holmes/core/supabase_dal.py,sha256=cZgvdbmphihzOZrA9bKtVnxyiGqK5XqMeCQC3_uf2fs,21732
22
+ holmes/core/supabase_dal.py,sha256=KSNwGz1v5dZAk_sDme1JCrPTJKc2fwApKQQu_U_r3cM,22433
22
23
  holmes/core/todo_tasks_formatter.py,sha256=USyJZcoX6zoxID1UV-abAKdaWFYLO6QJd-UKryJAurI,1487
23
- holmes/core/tool_calling_llm.py,sha256=fwxgaLek42t_g2sxhsZN_WyDYLv6Q79yE9O1AMYqFwk,42234
24
- holmes/core/tools.py,sha256=YotCnCnmrNYh_SMqD1GFeDOmU_s8kucNJEVRLhfQOqw,31539
24
+ holmes/core/tool_calling_llm.py,sha256=YUUFmoTDw11ERC78gg2jTRZ6t9Dy_ba8wQiyJeJWL0k,50206
25
+ holmes/core/tools.py,sha256=IOBmRdwTKeHvbvxlcT8xYJmBLcNI9CGP_iwrI-WhVio,31786
25
26
  holmes/core/tools_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- holmes/core/tools_utils/data_types.py,sha256=vvY0Vx45xTmLhu-RYI4xVJkhPtdg-W8xhFpsnesOMU0,2534
27
- holmes/core/tools_utils/tool_context_window_limiter.py,sha256=OZBz6lNnEIlCRGVGn_De6fw3tPuxE4UHlE52Z8Ni568,1736
28
- holmes/core/tools_utils/tool_executor.py,sha256=O0oMWSpiOClEMVJhPHi2AaZK9GI_FHq0OeNcAEoPV30,2395
27
+ holmes/core/tools_utils/token_counting.py,sha256=3WTAgi19uK1IbtwivtSibiZWwqdtZeOOgZCVFRxUJG8,406
28
+ holmes/core/tools_utils/tool_context_window_limiter.py,sha256=LoehZXp2C2ptoxbfZzzCe_t02iQOdhz-eM0k159ZIb8,2605
29
+ holmes/core/tools_utils/tool_executor.py,sha256=pUkddbm_kgYdfhR1w5IbnSmwG56kvA4VadzBV8OqG8g,2632
29
30
  holmes/core/tools_utils/toolset_utils.py,sha256=SvWzen8Fg_TB_6Idw1hK0nCPrJL40ueWVMfsv8Kh2RY,2363
30
- holmes/core/toolset_manager.py,sha256=jAONcxFJhi9WPdDh8zZiHU-_pMCV2jFVgX6XgPWvnSo,25686
31
+ holmes/core/toolset_manager.py,sha256=UqAUfjY09SAGirOHzyQwpOu2wxQUzU0F1STw8w-1abw,25878
31
32
  holmes/core/tracing.py,sha256=o1vTLCbnFvBOVnQKqRaj4HDNYGYAd4ub2IgkV1E3qY4,9130
32
33
  holmes/core/transformers/__init__.py,sha256=kCwmx-IQ6BpGpMpnm563ecl5Ik1nx4lhKb2y3KAKF7I,600
33
34
  holmes/core/transformers/base.py,sha256=FHUocHIS_oUBLWMiibdAuKY0Lpz5xY2ICji6DbmP2Do,1500
34
35
  holmes/core/transformers/llm_summarize.py,sha256=ZEJn3DElzMZLCCHNIzlCozllM2CmQ-JyXiqaGO7dAw4,6407
35
36
  holmes/core/transformers/registry.py,sha256=x8kKRXJvc_tJO2RvNGyoVXt6rFgG4S_ZcTG8p_OXYH0,3771
36
37
  holmes/core/transformers/transformer.py,sha256=rfT84Oq6qJyryevZGFKEbo1VSxinK4FBWUw_HpJ72xE,1028
37
- holmes/interactive.py,sha256=l1kh0ABXO_RWIzkEuLkedM-73k1ezENAvXMrgNeqsKA,41836
38
+ holmes/core/truncation/dal_truncation_utils.py,sha256=I69I7Jac1kTtpxDRMe8O3IPN8Au0bZJqI8gXwW-GMaI,776
39
+ holmes/interactive.py,sha256=bXP9qRsClwW0AlxNDWHJfJTeEwGByAoNUfL4cypJjtg,46767
38
40
  holmes/main.py,sha256=cz3i9YZkvXWTK8pk5O-LfAM5AsYcOcTEKYnbvpVY5ns,35001
39
41
  holmes/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
42
  holmes/plugins/destinations/__init__.py,sha256=vMYwTfA5nQ05us5Rzbaoe0R5C8Navo6ENVZhojtACTk,98
@@ -45,7 +47,7 @@ holmes/plugins/prompts/__init__.py,sha256=sOUHbHFQ6tYX7XWLi-Ak87cOQB1E889X5X8kWJ
45
47
  holmes/plugins/prompts/_ai_safety.jinja2,sha256=IoVdOXHnkGwLaiuUzMczEdoahyrKhkdYvyDmz9Oewxw,2262
46
48
  holmes/plugins/prompts/_current_date_time.jinja2,sha256=KynAvkQFqf_SXjqVY77nB8z4RgN7gti4SBSq1H7moHs,354
47
49
  holmes/plugins/prompts/_default_log_prompt.jinja2,sha256=Tqw8CD2ZMStXIfMdYaoZT_d-FvQ_PMg6-knqag-YEgc,1478
48
- holmes/plugins/prompts/_fetch_logs.jinja2,sha256=-rM-bYRGOlQa0KlheCXR4b0UcED1F7nHnHgnsqbx_PM,3988
50
+ holmes/plugins/prompts/_fetch_logs.jinja2,sha256=penrJcRCfr8geKWNSQc-jdJ52dV-bEb1kxO6QB90dzw,5088
49
51
  holmes/plugins/prompts/_general_instructions.jinja2,sha256=0RB5TFGqhbQ-xNt2_oHXJjvMIBLThuRDusBbbEruy2w,5777
50
52
  holmes/plugins/prompts/_global_instructions.jinja2,sha256=d_c-BtDhU_Rmx637TPAyzlIIim8ZAxy7JK3V4GV8IWI,1359
51
53
  holmes/plugins/prompts/_permission_errors.jinja2,sha256=gIMQx-zaTnuEv7SkQVC_GvxsR5R85fLuDZnJIKWcm5A,480
@@ -63,7 +65,7 @@ holmes/plugins/prompts/kubernetes_workload_ask.jinja2,sha256=C6iclMZ9n64nUvvc28W
63
65
  holmes/plugins/prompts/kubernetes_workload_chat.jinja2,sha256=rjB6mAHk2SDg2cwZp5vp66ihCer17BE6o8Ezr2zGQE4,1770
64
66
  holmes/plugins/runbooks/CLAUDE.md,sha256=WYjf-ZvKmfrShmhTHplLscIpIB1j2TrrG6C_LR63XR0,5511
65
67
  holmes/plugins/runbooks/README.md,sha256=dPrAO4bZGGW1C3FFaUm_adPMrb72DSSmbUkRSwqNK4U,2585
66
- holmes/plugins/runbooks/__init__.py,sha256=2_39h7qZYhh0a7I2-OrvswF0Y8F7nWqI5zD_dgt_wsk,3333
68
+ holmes/plugins/runbooks/__init__.py,sha256=UdOCVYnsjAywI-tVGCjTC8lFbgdyL1KfkFxUq94HsoY,3521
67
69
  holmes/plugins/runbooks/catalog.json,sha256=GvrpVpk0AIm9HZ3dlh6FI_CVzHoCGJPvZggOMaL_WKs,436
68
70
  holmes/plugins/runbooks/jira.yaml,sha256=o24IL7Cb-Mv5X-cAj8Ik4KmEmY7bf98zBkMP5r39ong,777
69
71
  holmes/plugins/runbooks/kube-prometheus-stack.yaml,sha256=adzr0vxvQZHJ_HYzYl5NdmjrTpVByx9h-3abpaFUo-Y,743
@@ -76,12 +78,12 @@ holmes/plugins/sources/pagerduty/__init__.py,sha256=LYoN1dkUg7NCx7g-gdSomTTJhHyB
76
78
  holmes/plugins/sources/prometheus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
79
  holmes/plugins/sources/prometheus/models.py,sha256=9TcDIRLWZQhwjYGfRZFP_2fGweCn4G5xvYrLoXiQZTc,2904
78
80
  holmes/plugins/sources/prometheus/plugin.py,sha256=oBmuOwNM67suy6HmasUnyVOlBq9-mAxLZLlUzRHIggg,5941
79
- holmes/plugins/toolsets/__init__.py,sha256=gBsTeiDyOas213SMERuX2TvLUMvhwivwRXNEC3Eqj_Q,7473
81
+ holmes/plugins/toolsets/__init__.py,sha256=ydF9jawE6cn8lDpyYhqSCxlvj6eAywLyUoo1bI9wDrE,7589
80
82
  holmes/plugins/toolsets/aks-node-health.yaml,sha256=37Dvk4D0ez1GQlt91MQkI0pZ5RLtUEFAOxDXDCVzb-g,5995
81
83
  holmes/plugins/toolsets/aks.yaml,sha256=_XwrMSsghFnCqlbsZvVfwF3qgQFnxi47AC5Oavi2YC0,9532
82
84
  holmes/plugins/toolsets/argocd.yaml,sha256=lbRIooJIkpumNdRgoDRHTjNb9PvFTfjQcT0iWU2x8mg,3932
83
85
  holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2,sha256=iyft4EwvYcImI_YrMte8_BTJZXGV6i0k84g3oKXR23k,988
84
- holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py,sha256=GgHgKO1l0dbonLhuRSW5lp-fzWwRxnrtiCtUdvLY5t8,15713
86
+ holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py,sha256=1FlArSlvS6XobEr5A-4J_VNwCIbmB4ZwFA9O0l4XRK8,15678
85
87
  holmes/plugins/toolsets/aws.yaml,sha256=AM5MizvfHeGFoCRr6kf3Wcd6y_EAhSDqtZajTFrLVfE,4475
86
88
  holmes/plugins/toolsets/azure_sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
89
  holmes/plugins/toolsets/azure_sql/apis/alert_monitoring_api.py,sha256=DSrKzzE6lofynViYr0SGaQrWjePpzbfdt3DcplbFGek,26397
@@ -94,16 +96,16 @@ holmes/plugins/toolsets/azure_sql/azure_sql_instructions.jinja2,sha256=GvuxActao
94
96
  holmes/plugins/toolsets/azure_sql/azure_sql_toolset.py,sha256=l87m6mieP8-uTpj_NDRXbom43YP4b6TzOhnGyvn4r8c,8069
95
97
  holmes/plugins/toolsets/azure_sql/install.md,sha256=eBhdG-OG9HhbrEGvI31aAHRPWwBQne6H95mvBROqZ_s,1585
96
98
  holmes/plugins/toolsets/azure_sql/tools/__init__.py,sha256=lEYFZ5X0mHdqwmi6XXTlM1qA7sBYsuQwVCXmluo-L34,25
97
- holmes/plugins/toolsets/azure_sql/tools/analyze_connection_failures.py,sha256=blboxIOFzT2FtmZyXsipQkIzeuB_sWcl1aqHKdxjf-k,13377
98
- holmes/plugins/toolsets/azure_sql/tools/analyze_database_connections.py,sha256=ZQ-04ZyzK_aJ9KVQecmoVPsPSQumnytxZVh-46J1NSY,10473
99
- holmes/plugins/toolsets/azure_sql/tools/analyze_database_health_status.py,sha256=XqXRZQ-jVkUcl3hUak6_2rjMbhPpOs3esiBxHCVEj60,8313
100
- holmes/plugins/toolsets/azure_sql/tools/analyze_database_performance.py,sha256=VI0PkqUh9myjRuUwMDq-Ukv0rwNFxJjRQ2gx9TUgWBg,10684
101
- holmes/plugins/toolsets/azure_sql/tools/analyze_database_storage.py,sha256=Bxwe7KCobpw7zjz5Xzhb5cXUborbJwbHC0pnnUXneZk,16014
102
- holmes/plugins/toolsets/azure_sql/tools/get_active_alerts.py,sha256=NtymL59uc0svIYUQLtPAggkaJob0ta3pJP6-cEIGeIA,9406
103
- holmes/plugins/toolsets/azure_sql/tools/get_slow_queries.py,sha256=2E61KNt9_Q3jTdl2iuvl1uuG2_fzBxukME_ow_LcLHk,7292
104
- holmes/plugins/toolsets/azure_sql/tools/get_top_cpu_queries.py,sha256=lmFz-r12UaP5CMRAY0z8zt9Ib8cxg2aOQ9Gc3dVb5K0,7243
105
- holmes/plugins/toolsets/azure_sql/tools/get_top_data_io_queries.py,sha256=b3h8S-v3yt4OXIBzm9_YnDE1xaGE5TrvfdRbixtwikM,8269
106
- holmes/plugins/toolsets/azure_sql/tools/get_top_log_io_queries.py,sha256=TridNGm8j2d4Ml7mkXzRKChJJxnwVsdV7kEwrbDiWfE,7644
99
+ holmes/plugins/toolsets/azure_sql/tools/analyze_connection_failures.py,sha256=f_3TPbAjMDNAjqUr6BkoNzbMn4wvG_gQS-6HH3bC4AY,13385
100
+ holmes/plugins/toolsets/azure_sql/tools/analyze_database_connections.py,sha256=84STGBRVQbs_6wrufRsTk0m-aGGKt50O4vO6ShwhBTc,10481
101
+ holmes/plugins/toolsets/azure_sql/tools/analyze_database_health_status.py,sha256=1UIdpo4kouoIsIhhGcZ1z_nMrz8GTm9BdZwQQw-FTGI,8334
102
+ holmes/plugins/toolsets/azure_sql/tools/analyze_database_performance.py,sha256=2E-wloRjNr-PpiVGb-b7DWmqp1wbdz2hQzcsDGXi8QM,10705
103
+ holmes/plugins/toolsets/azure_sql/tools/analyze_database_storage.py,sha256=kGUwWFngJRjI5wlF2lonNZaJir6yZNAptmkwgHh65Tw,16022
104
+ holmes/plugins/toolsets/azure_sql/tools/get_active_alerts.py,sha256=ycmjlBzY0ZvnbWxTLxvYGGhoUb8EKDI4QFGpAHAxk6M,9427
105
+ holmes/plugins/toolsets/azure_sql/tools/get_slow_queries.py,sha256=-J4PKLtjTSfiOEAu28_2TeL233Qbe-1xwD9XBwzumu8,7300
106
+ holmes/plugins/toolsets/azure_sql/tools/get_top_cpu_queries.py,sha256=28x4xCrvyVj0o4Gr9QKo1qPJzUbkBdozcO_DJhiAFEo,7251
107
+ holmes/plugins/toolsets/azure_sql/tools/get_top_data_io_queries.py,sha256=EXWDVat_lZbcGQTcybQrgcLHUXMJYRNwZ1UIJxZZcTg,8277
108
+ holmes/plugins/toolsets/azure_sql/tools/get_top_log_io_queries.py,sha256=LIn1Xjr5PusJeEg24oH80X9kf0V36FIZz7JY7D3RPEs,7652
107
109
  holmes/plugins/toolsets/azure_sql/utils.py,sha256=nN8ZcVpkOa05nocY4W1gf7aaaNhzn2oD-P0STYQK2Ck,2331
108
110
  holmes/plugins/toolsets/bash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
111
  holmes/plugins/toolsets/bash/argocd/__init__.py,sha256=1ck-b82embOjsiiZkvuDChXiFaNYFwl5xW-ysBRB4vA,2186
@@ -113,7 +115,7 @@ holmes/plugins/toolsets/bash/aws/constants.py,sha256=g8IH1CLkAZuV8SQEQrUVjLul7S2
113
115
  holmes/plugins/toolsets/bash/azure/__init__.py,sha256=FsLA_v_otjuo_COEw8Hmiuh5_aQ3RWRIstECeBAS5hg,1863
114
116
  holmes/plugins/toolsets/bash/azure/constants.py,sha256=jz2R8-EiSjGjAPBTtIAbLwfyHOJPVmI117wp-u_e8Kc,10361
115
117
  holmes/plugins/toolsets/bash/bash_instructions.jinja2,sha256=AKVW1DpD6lii8cF582LZzEe9sOh3YJCerXBapwlEKhU,481
116
- holmes/plugins/toolsets/bash/bash_toolset.py,sha256=P1Jz4GdnRTBzPE8jLU48XJ27en9t9YXEsdvXVpqa-IQ,9558
118
+ holmes/plugins/toolsets/bash/bash_toolset.py,sha256=CN05nUsyUtEQbHzs-OnqYXz16-Z0EjYwIIGCpLVANoc,9559
117
119
  holmes/plugins/toolsets/bash/common/bash.py,sha256=EbudJi4ialC5q0Lrdg2d7VkP9faW3pOsuHUszCXp5Fo,1853
118
120
  holmes/plugins/toolsets/bash/common/bash_command.py,sha256=aGlzQnUQHpEK3BNwztESassqzKQ5PFObwvHcFn5GQIY,4570
119
121
  holmes/plugins/toolsets/bash/common/config.py,sha256=dRd_gl16e2jG_gk6_mRVT6o3idiVXJ-8CtBONAx1DOU,285
@@ -144,73 +146,77 @@ holmes/plugins/toolsets/bash/utilities/tail.py,sha256=GGHQoMAos0j5kN0EGSq_oQ63j9
144
146
  holmes/plugins/toolsets/bash/utilities/tr.py,sha256=4X3_816-ur6dDMyuJdS2ZwqdKz9aqqOHzqx-yi2m1cs,2157
145
147
  holmes/plugins/toolsets/bash/utilities/uniq.py,sha256=bod-81lXO7-EQiy73A9aaDnc-RkrclwdBJ4rS_rUyn8,320
146
148
  holmes/plugins/toolsets/bash/utilities/wc.py,sha256=EhhRcKjb9QNI51uUjftyzzHQucCawkTU3AB2cviTV90,287
149
+ holmes/plugins/toolsets/cilium.yaml,sha256=iwd1cTEPJ0672cJsnfndirttnWAC1RaH4c8E9sWntqI,12754
147
150
  holmes/plugins/toolsets/confluence.yaml,sha256=WPflxrGKFA5VTcy5p4t2FY86oFECzoyTHkudUxhAL-k,768
148
151
  holmes/plugins/toolsets/consts.py,sha256=vxzGJBF1XNAE9CDteUFIYNRmOagmJ-ktFEfVEU8tHl0,205
149
152
  holmes/plugins/toolsets/coralogix/api.py,sha256=25ZnTfAvh5ZHzDsjap8As87opjGbMSBMQSSqelw7Tm0,5178
150
153
  holmes/plugins/toolsets/coralogix/toolset_coralogix_logs.py,sha256=AbkYhWatgfJjdScNkaziRqg8KckcjfSHHQugO4bmE54,3929
151
154
  holmes/plugins/toolsets/coralogix/utils.py,sha256=z9AAgyDTaxVgeSwaYDXGthBBCn_865gq7j1XUbZ5M-o,6938
152
- holmes/plugins/toolsets/datadog/datadog_api.py,sha256=5r9ViF5ABbnBWW-IfyPMntv3cA68hFEQ8t2MamBx-Lk,6841
155
+ holmes/plugins/toolsets/datadog/datadog_api.py,sha256=w8fILwJhMw5jua8O7d8WF5kbQSgRjXonPpZIf-EikJU,22675
153
156
  holmes/plugins/toolsets/datadog/datadog_general_instructions.jinja2,sha256=Z0X7z_AlKtmw3kfDnz-aPJKOnSIX4bPPRz8gQZRCctk,8300
154
- holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2,sha256=1hV6dTSK-XB8tYx2Ek9hgaCQLGKPbSFYJmo7owy9vBk,2024
157
+ holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2,sha256=NuzQFdUE9fc7MJfchgf6j7jHMANwUFkgRdg1qff5fBE,2943
155
158
  holmes/plugins/toolsets/datadog/datadog_metrics_instructions.jinja2,sha256=_59DzoVsoQVh73SRYhMBsK7jgKYVpWnadfI1AD_eLVY,4231
156
159
  holmes/plugins/toolsets/datadog/datadog_rds_instructions.jinja2,sha256=lbI6lkcMjG1CVKeL0XDkq5zl-fRDVxZ_t_CjS-Uh_OM,3119
157
160
  holmes/plugins/toolsets/datadog/datadog_traces_formatter.py,sha256=uTtWTrsbvO9cZcUDskJE9p5sEscieXwhEpxvRKkaiEw,10275
158
161
  holmes/plugins/toolsets/datadog/instructions_datadog_traces.jinja2,sha256=9j3-46UNE35DE2xBDTCRt1EedgNdgRXuC1u-X3yB-9I,1487
159
- holmes/plugins/toolsets/datadog/toolset_datadog_general.py,sha256=yP1SC1cOWeBoDL7CBS7_sVjkZKu-TSyiBITdgyjtpmY,27415
160
- holmes/plugins/toolsets/datadog/toolset_datadog_logs.py,sha256=veuOSCOKbhfkLz_FqU6YXQh8vAG0NdWN-_sg0o2DJzI,10020
161
- holmes/plugins/toolsets/datadog/toolset_datadog_metrics.py,sha256=iAdFfvETowfa-pwaNbtXHCadnrPTs5vRp-faJeLKobc,24993
162
- holmes/plugins/toolsets/datadog/toolset_datadog_rds.py,sha256=DuZDMVkFL-98k21RdFRP971Ga3INWilH2VRmiVpEGjY,29095
163
- holmes/plugins/toolsets/datadog/toolset_datadog_traces.py,sha256=uJe3htIIMKnb7EhomETuyFEcAjHMG8YA7okjfPen9gE,26214
162
+ holmes/plugins/toolsets/datadog/toolset_datadog_general.py,sha256=BYIv4EyhXVvE4pc4RnTlBJfhR-cAQrmG7d_0FY2egLg,34619
163
+ holmes/plugins/toolsets/datadog/toolset_datadog_logs.py,sha256=iF__DdTEQ6bcC3sQtyxp3eXzx955H2d4c0geL7gavxI,17417
164
+ holmes/plugins/toolsets/datadog/toolset_datadog_metrics.py,sha256=rkHeA_gHSTbL1UOy62q9j7lBm9KXP2exEScq4oRBzsY,28089
165
+ holmes/plugins/toolsets/datadog/toolset_datadog_rds.py,sha256=d6IRJXLLutvGvXmRncpaFWEAYlXdyFdZI0ItCc_t5GM,29132
166
+ holmes/plugins/toolsets/datadog/toolset_datadog_traces.py,sha256=VU8s1HFvw3h-NMkjKKasg939RUeowOhvEqEl7bn6MoA,26267
164
167
  holmes/plugins/toolsets/docker.yaml,sha256=O0Q0z0kZS8_QBEhwrUfbXdGUn1nP1K9k0FlQd6EZVJ4,1559
165
- holmes/plugins/toolsets/git.py,sha256=-f_e4jBUeQ0L8z6G2mBu3u8CUMsTMKIZybz0AKg6Wws,32239
168
+ holmes/plugins/toolsets/git.py,sha256=eUpQRolp6CEqUS9nMqCJcL-th0m1c8F4oYdhMv_qcGo,32262
166
169
  holmes/plugins/toolsets/grafana/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
170
  holmes/plugins/toolsets/grafana/base_grafana_toolset.py,sha256=AjvbS4txSo97YqeeFlXUnu95oPFt8rB-CD1Ccf92a04,1760
168
171
  holmes/plugins/toolsets/grafana/common.py,sha256=yYy6knRNUYQmZvgII-Cte9RQJNY8Sj7QlbHB0aCNFYU,2459
169
172
  holmes/plugins/toolsets/grafana/grafana_api.py,sha256=nq7KWoUAfFxp1-3VqKadPNKbTifLTgKUAZOFUH5QWUY,1665
170
- holmes/plugins/toolsets/grafana/grafana_tempo_api.py,sha256=bcCPEwOwm1Og9LYR6PlAtjGgQopvySNjf5nTwILuFt4,15697
173
+ holmes/plugins/toolsets/grafana/grafana_tempo_api.py,sha256=C8XEZzIKzeh9pG-DBQoMW4Qi2Kh3ZoI4TXVGUx2CxUc,14688
171
174
  holmes/plugins/toolsets/grafana/loki_api.py,sha256=f7oTzfhJ1LojsPoAfsKt32ADWffLEywBJQWG9eyfb7I,2529
172
- holmes/plugins/toolsets/grafana/toolset_grafana.py,sha256=_A3DUOyd2624I75BknsZhHpK1mzcf7JfACL7_ET6sPM,4922
173
- holmes/plugins/toolsets/grafana/toolset_grafana_loki.py,sha256=yQk4WHY9cuys-Gz8waNSFR-yx49UuSYVWxWncNJ0aIA,3876
175
+ holmes/plugins/toolsets/grafana/toolset_grafana.py,sha256=M10S7CeOsLaSCZqQysjT4vviG7nUPc95QzWCTtPBXXE,4930
176
+ holmes/plugins/toolsets/grafana/toolset_grafana_loki.py,sha256=MK0mK5h8MZuULwAoQlng3UZS1xtxHzePwhEoJiroJSw,3912
174
177
  holmes/plugins/toolsets/grafana/toolset_grafana_tempo.jinja2,sha256=0HBYUXkGYWZbHwIvfQEF5oL9LFMYzjgcmL1U6RjgPSE,10417
175
- holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py,sha256=5lmWIVc8c4iSGwpvhhhxGPe5-LtpGMzprSdR8GmiuxQ,38416
178
+ holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py,sha256=nnDKUQkJpnmFVWV8Xwdk0OaZF_Nn6hqSrWT4ltx1xDk,37963
176
179
  holmes/plugins/toolsets/grafana/trace_parser.py,sha256=8PjqPGDGo9uB2Z8WWWknMKdhcqlqZEVncQCCkl2F06A,7024
177
180
  holmes/plugins/toolsets/helm.yaml,sha256=-IPDChKMHcxGbzA0z9GKczRshL-mD24cHpBizfNM1jM,1604
178
- holmes/plugins/toolsets/internet/internet.py,sha256=cQi8R2rcttIZ49egSzi2y2UVt4tncqE8medxiXp8II8,7779
179
- holmes/plugins/toolsets/internet/notion.py,sha256=OJ7e3eITLsrv8n31M9HsqwaRp2o4dnh2iAhIsoqbXhw,4787
181
+ holmes/plugins/toolsets/internet/internet.py,sha256=qeV6M9302QWacFcr7bOfsZUc84v9MnlTEF_76oUOSNA,7787
182
+ holmes/plugins/toolsets/internet/notion.py,sha256=ELDtsP8kxdU8rExEL8hq1yV5DEeWDNOljHZEwjnumJc,4795
180
183
  holmes/plugins/toolsets/investigator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
- holmes/plugins/toolsets/investigator/core_investigation.py,sha256=1yEKt8OZC37gCTQGecRDOWI0gzBnmhECe0130Hn9n2c,5263
184
+ holmes/plugins/toolsets/investigator/core_investigation.py,sha256=NqNlPjWGyb3A_bw5JV-ePhWOdJUmAIO4IYwa_WsygJM,5213
182
185
  holmes/plugins/toolsets/investigator/investigator_instructions.jinja2,sha256=C6y6OaJI2dQSLSw7Zq9-D-sWmL5K_40zRItvkzVAdH4,13967
183
186
  holmes/plugins/toolsets/investigator/model.py,sha256=6AE9Iy05GaX3gC9ChTtZQOFGjSUsas_pB9_YyDaJXP0,342
184
- holmes/plugins/toolsets/kafka.py,sha256=QbdHGNFmCP1bgsbD4uix7uU_2Y05uMckVgJv_V9OIHY,24841
187
+ holmes/plugins/toolsets/kafka.py,sha256=kO_CKzdXG__6QmiwaGumZgPkdZbft0f1DpqhNV8ogs8,24774
185
188
  holmes/plugins/toolsets/kubernetes.yaml,sha256=hIyBrdhhMrvadu2EOja_uT1Hn7lzuXLdH3bgsTmpGbc,18535
186
189
  holmes/plugins/toolsets/kubernetes_logs.py,sha256=b84d-yCrGq9ua4B_zeitUy9AqDcUdipRAY71IFe5C7s,32814
187
190
  holmes/plugins/toolsets/kubernetes_logs.yaml,sha256=3AhUKihYMSL57Tm_y5HgEbtyoer6Kpm7oAcRz1GxgDw,4532
188
191
  holmes/plugins/toolsets/logging_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
- holmes/plugins/toolsets/logging_utils/logging_api.py,sha256=seW5DNSzREQx4nmkt9NEqN21j8jTPNSJyOkCrdcdWoQ,11615
192
+ holmes/plugins/toolsets/logging_utils/logging_api.py,sha256=AG-EJnkzRLq8s4naG3yyuYjl3y_Q2oOwCYvmto8Ydc0,15475
190
193
  holmes/plugins/toolsets/logging_utils/types.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- holmes/plugins/toolsets/mcp/toolset_mcp.py,sha256=4E2-A8EAno5q1ZUNwyMPQdPY-ub5iIAyuEnCn7C0pg0,4914
192
- holmes/plugins/toolsets/newrelic.py,sha256=_bjzIAKbPMQcvv-Z0AV1r-T2fMHDWxnWz9zH_5-40Dg,7956
194
+ holmes/plugins/toolsets/mcp/toolset_mcp.py,sha256=-O0_gOdQRIfJ-5ud_E_mUs6-v4qw-vNF6LN_y8q4uuU,4922
195
+ holmes/plugins/toolsets/newrelic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
+ holmes/plugins/toolsets/newrelic/new_relic_api.py,sha256=i_rxTjwt-qK9MASQSp5lI_C4HoegRJITV5Z5qsBdJ90,4077
197
+ holmes/plugins/toolsets/newrelic/newrelic.jinja2,sha256=O782MgMO17j-C8BnKbZmr0_bGoHn-1JJJX40IiLrKLk,3547
198
+ holmes/plugins/toolsets/newrelic/newrelic.py,sha256=PCV-rN2w8gxYvo3Nq5Fauoq967dsK3incsY0z494bMY,8400
193
199
  holmes/plugins/toolsets/opensearch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- holmes/plugins/toolsets/opensearch/opensearch.py,sha256=wIzRE-w7nuh2jBJdmExarWZu8iFAxfj5UcJZnQ_jvZA,8666
200
+ holmes/plugins/toolsets/opensearch/opensearch.py,sha256=VVyEJnECRfhwNUQqilugi9t0tPymyp7hRFwYQSFDg2E,8629
195
201
  holmes/plugins/toolsets/opensearch/opensearch_logs.py,sha256=_j-JAhLWtxhBPafCveympxtxQ2EalsqKW6jLfaXHG94,5929
196
- holmes/plugins/toolsets/opensearch/opensearch_traces.py,sha256=FjDbkU-oI-spMdra0raSmiHZb6Cfbo_AsS_OKEt9coI,8876
202
+ holmes/plugins/toolsets/opensearch/opensearch_traces.py,sha256=Xd_toAzZikdUrInZG8_oBQ0gI-QCvYrf0w2ZciFC1kU,8869
197
203
  holmes/plugins/toolsets/opensearch/opensearch_traces_instructions.jinja2,sha256=Xn8AW4XCMYV1VkBbF8nNB9fUpKQ1Vbm88iFczj-LQXo,1035
198
204
  holmes/plugins/toolsets/opensearch/opensearch_utils.py,sha256=mh9Wp22tOdJYmA9IaFS7tD3aEENljyeuPOsF-lEe5C0,5097
199
- holmes/plugins/toolsets/prometheus/prometheus.py,sha256=NZcfYd7amva9oS0hQQjkplpeo-yl60pIaZN_24Ko-q8,45982
200
- holmes/plugins/toolsets/prometheus/prometheus_instructions.jinja2,sha256=aayd8daqQPbkWGa8h4j11-Veum0TGaJdFJKwRkPnwwg,4174
205
+ holmes/plugins/toolsets/prometheus/prometheus.py,sha256=As2WYpJNtFSxshv5OhLTsaoprJI_PBaUYfigPkrYlps,67609
206
+ holmes/plugins/toolsets/prometheus/prometheus_instructions.jinja2,sha256=taf5C-N9rdp1A7S__hETefcm2OaYHJLjs1ZbuqIsGtE,6383
201
207
  holmes/plugins/toolsets/prometheus/utils.py,sha256=ZenD354dP0sRmm0R-QBuAq1jyn40GjYf4wx15bXIYRc,775
202
208
  holmes/plugins/toolsets/rabbitmq/api.py,sha256=-BtqF7hQWtl_OamnQ521vYHhR8E2n2wcPNYxfI9r4kQ,14307
203
209
  holmes/plugins/toolsets/rabbitmq/rabbitmq_instructions.jinja2,sha256=qetmtJUMkx9LIihr2fSJ2EV9h2J-b-ZdUAvMtopXZYY,3105
204
- holmes/plugins/toolsets/rabbitmq/toolset_rabbitmq.py,sha256=Epy1eMM-Wh_PNH8_E1QJeThfzQxZOhl8I6sLtUVtM_4,9293
210
+ holmes/plugins/toolsets/rabbitmq/toolset_rabbitmq.py,sha256=k1Sq0Iw8f4ygLVdMDSWMXEGqLX5Jq98hTDcAlsjrv6A,9286
205
211
  holmes/plugins/toolsets/robusta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- holmes/plugins/toolsets/robusta/robusta.py,sha256=hERm8ZpXncr6xBFY55mge1-cCisZwc-yyqdZrmIPU9E,8963
212
+ holmes/plugins/toolsets/robusta/robusta.py,sha256=jRNxoIUoJkvCTZZnKpFFhLA3ip0l1c3JKc9J-lOIlgw,8941
207
213
  holmes/plugins/toolsets/robusta/robusta_instructions.jinja2,sha256=E3UxlbyoNx96Fsk6d1laBTrnca1nLreWGMWnGPD2KbI,2060
208
214
  holmes/plugins/toolsets/runbook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
- holmes/plugins/toolsets/runbook/runbook_fetcher.py,sha256=l8PRVfmjqtvYCMDzASQXfVROKQqXTiPx5UCzJ8u-V8Y,6763
215
+ holmes/plugins/toolsets/runbook/runbook_fetcher.py,sha256=0WN_-T55M5CASGGf9uyUclhALazF8m7xYLk5-kKcHf0,10271
210
216
  holmes/plugins/toolsets/service_discovery.py,sha256=QVrCCVcTE7APqyr0C44MGmJyCW9Ft-Ac-Wr4XfFBfjA,3268
211
217
  holmes/plugins/toolsets/servicenow/install.md,sha256=UeL069Qd2e4wC3kmc54wk62AoSpyeizKWV6NB1jUYVM,1217
212
218
  holmes/plugins/toolsets/servicenow/instructions.jinja2,sha256=koA2vJ1tOkGi2T5aGjmk9oTZPrt7WdoMSuVyxfO5-k4,491
213
- holmes/plugins/toolsets/servicenow/servicenow.py,sha256=18jpxu9Vi32GbrDEVfh2hVaBPR5r41JussICSoKTVVM,8566
219
+ holmes/plugins/toolsets/servicenow/servicenow.py,sha256=Cb3gcrnaj-GEjoTPQJd4Tb18KwJ8hyLvHekjgs8POs8,8560
214
220
  holmes/plugins/toolsets/slab.yaml,sha256=1Pz0Rzs0B6-TnJiiN2w8qJ9E_bh2haQn0mfhTszaZE0,677
215
221
  holmes/plugins/toolsets/utils.py,sha256=EZqPEBJcnMZliWMiN82XOQstr_NwanEqnzsd6incEFk,6891
216
222
  holmes/plugins/utils.py,sha256=Wn_UxZMB4V2_UiJDNy0pifGnIGS_zUwRhUlmttCywnY,372
@@ -233,12 +239,12 @@ holmes/utils/keygen_utils.py,sha256=qZ0aIAqItsoX1egAJ2TFiHjaARLYAIid94-VgMq_bB0,
233
239
  holmes/utils/llms.py,sha256=YLqq54I84wW7Kp7Z7CPVTxAFPb-Sq6xkdmVGzVf60jI,629
234
240
  holmes/utils/markdown_utils.py,sha256=_yDc_IRB5zkj9THUlZ6nzir44VfirTjPccC_DrFrBkc,1507
235
241
  holmes/utils/pydantic_utils.py,sha256=g0e0jLTa8Je8JKrhEP4N5sMxj0_hhPOqFZr0Vpd67sg,1649
236
- holmes/utils/sentry_helper.py,sha256=_IbxqlqbsNb_ncvpZ-B5XxcauQphJStcwaVxRj18RpU,1344
237
- holmes/utils/stream.py,sha256=L4vlu1xX5Ihtn-D0Mfml_HuQRfLhHFSkWNojcAJLi9g,3252
242
+ holmes/utils/sentry_helper.py,sha256=BPkyMs7Yo_0b7QLMmAQ3mKZyXTmxkgVRjr3kikr5ZX8,1328
243
+ holmes/utils/stream.py,sha256=B0PigMm2_KBwFKeVu0IxxR07gR65Eq3mJ5FntdVTNTo,3894
238
244
  holmes/utils/tags.py,sha256=SU4EZMBtLlIb7OlHsSpguFaypczRzOcuHYxDSanV3sQ,3364
239
- holmes/version.py,sha256=uDRPOvVaHreROj_9HPe81RVpTzHcG8ojpGTsnJIlQOM,5220
240
- holmesgpt-0.14.1a0.dist-info/LICENSE.txt,sha256=RdZMj8VXRQdVslr6PMYMbAEu5pOjOdjDqt3yAmWb9Ds,1072
241
- holmesgpt-0.14.1a0.dist-info/METADATA,sha256=ZptyUfUK3Xj1dz5suEzHJ15UUuIzju75ly057r0Y6Tc,16193
242
- holmesgpt-0.14.1a0.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
243
- holmesgpt-0.14.1a0.dist-info/entry_points.txt,sha256=JdzEyZhpaYr7Boo4uy4UZgzY1VsAEbzMgGmHZtx9KFY,42
244
- holmesgpt-0.14.1a0.dist-info/RECORD,,
245
+ holmes/version.py,sha256=5-3__IY_2hcIC4WQyTqcdyX1QF-e2VfkYKrI4BIrq0Q,5992
246
+ holmesgpt-0.14.3a0.dist-info/LICENSE.txt,sha256=RdZMj8VXRQdVslr6PMYMbAEu5pOjOdjDqt3yAmWb9Ds,1072
247
+ holmesgpt-0.14.3a0.dist-info/METADATA,sha256=-Rtt-ctWPC6O2Iv-ijv_zTkobo4dZj_Iu-Giktm5D8o,16078
248
+ holmesgpt-0.14.3a0.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
249
+ holmesgpt-0.14.3a0.dist-info/entry_points.txt,sha256=JdzEyZhpaYr7Boo4uy4UZgzY1VsAEbzMgGmHZtx9KFY,42
250
+ holmesgpt-0.14.3a0.dist-info/RECORD,,
@@ -1,81 +0,0 @@
1
- import json
2
- from typing import Optional
3
- from pydantic import BaseModel
4
-
5
- from holmes.core.tools import StructuredToolResult, StructuredToolResultStatus
6
-
7
-
8
- class TruncationMetadata(BaseModel):
9
- tool_call_id: str
10
- start_index: int
11
- end_index: int
12
- tool_name: str
13
- original_token_count: int
14
-
15
-
16
- class TruncationResult(BaseModel):
17
- truncated_messages: list[dict]
18
- truncations: list[TruncationMetadata]
19
-
20
-
21
- def format_tool_result_data(tool_result: StructuredToolResult) -> str:
22
- tool_response = tool_result.data
23
- if isinstance(tool_result.data, str):
24
- tool_response = tool_result.data
25
- else:
26
- try:
27
- if isinstance(tool_result.data, BaseModel):
28
- tool_response = tool_result.data.model_dump_json(indent=2)
29
- else:
30
- tool_response = json.dumps(tool_result.data, indent=2)
31
- except Exception:
32
- tool_response = str(tool_result.data)
33
- if tool_result.status == StructuredToolResultStatus.ERROR:
34
- tool_response = f"{tool_result.error or 'Tool execution failed'}:\n\n{tool_result.data or ''}".strip()
35
- return tool_response
36
-
37
-
38
- class ToolCallResult(BaseModel):
39
- tool_call_id: str
40
- tool_name: str
41
- description: str
42
- result: StructuredToolResult
43
- size: Optional[int] = None
44
-
45
- def as_tool_call_message(self):
46
- content = format_tool_result_data(self.result)
47
- if self.result.params:
48
- content = (
49
- f"Params used for the tool call: {json.dumps(self.result.params)}. The tool call output follows on the next line.\n"
50
- + content
51
- )
52
- return {
53
- "tool_call_id": self.tool_call_id,
54
- "role": "tool",
55
- "name": self.tool_name,
56
- "content": content,
57
- }
58
-
59
- def as_tool_result_response(self):
60
- result_dump = self.result.model_dump()
61
- result_dump["data"] = self.result.get_stringified_data()
62
-
63
- return {
64
- "tool_call_id": self.tool_call_id,
65
- "tool_name": self.tool_name,
66
- "description": self.description,
67
- "role": "tool",
68
- "result": result_dump,
69
- }
70
-
71
- def as_streaming_tool_result_response(self):
72
- result_dump = self.result.model_dump()
73
- result_dump["data"] = self.result.get_stringified_data()
74
-
75
- return {
76
- "tool_call_id": self.tool_call_id,
77
- "role": "tool",
78
- "description": self.description,
79
- "name": self.tool_name,
80
- "result": result_dump,
81
- }
@@ -1,231 +0,0 @@
1
- import requests # type: ignore
2
- import logging
3
- from typing import Any, Optional, Dict
4
- from holmes.core.tools import (
5
- CallablePrerequisite,
6
- Tool,
7
- ToolParameter,
8
- Toolset,
9
- ToolsetTag,
10
- )
11
- from pydantic import BaseModel
12
- from holmes.core.tools import StructuredToolResult, StructuredToolResultStatus
13
- from holmes.plugins.toolsets.utils import get_param_or_raise, toolset_name_for_one_liner
14
-
15
-
16
- class BaseNewRelicTool(Tool):
17
- toolset: "NewRelicToolset"
18
-
19
-
20
- class GetLogs(BaseNewRelicTool):
21
- def __init__(self, toolset: "NewRelicToolset"):
22
- super().__init__(
23
- name="newrelic_get_logs",
24
- description="Retrieve logs from New Relic",
25
- parameters={
26
- "app": ToolParameter(
27
- description="The application name to filter logs",
28
- type="string",
29
- required=True,
30
- ),
31
- "since": ToolParameter(
32
- description="Time range to fetch logs (e.g., '1 hour ago')",
33
- type="string",
34
- required=True,
35
- ),
36
- },
37
- toolset=toolset,
38
- )
39
-
40
- def _invoke(
41
- self, params: dict, user_approved: bool = False
42
- ) -> StructuredToolResult:
43
- def success(msg: Any) -> StructuredToolResult:
44
- return StructuredToolResult(
45
- status=StructuredToolResultStatus.SUCCESS,
46
- data=msg,
47
- params=params,
48
- )
49
-
50
- def error(msg: str) -> StructuredToolResult:
51
- return StructuredToolResult(
52
- status=StructuredToolResultStatus.ERROR,
53
- data=msg,
54
- params=params,
55
- )
56
-
57
- app = params.get("app")
58
- since = params.get("since")
59
-
60
- query = {
61
- "query": f"""
62
- {{
63
- actor {{
64
- account(id: {self.toolset.nr_account_id}) {{
65
- nrql(query: \"SELECT * FROM Log WHERE app = '{app}' SINCE {since}\") {{
66
- results
67
- }}
68
- }}
69
- }}
70
- }}
71
- """
72
- }
73
-
74
- url = "https://api.newrelic.com/graphql"
75
- headers = {
76
- "Content-Type": "application/json",
77
- "Api-Key": self.toolset.nr_api_key,
78
- }
79
-
80
- try:
81
- logging.info(f"Getting New Relic logs for app {app} since {since}")
82
- response = requests.post(url, headers=headers, json=query) # type: ignore[arg-type]
83
-
84
- if response.status_code == 200:
85
- return success(response.json())
86
- else:
87
- return error(
88
- f"Failed to fetch logs. Status code: {response.status_code}\n{response.text}"
89
- )
90
- except Exception as e:
91
- logging.exception("Exception while fetching logs")
92
- return error(f"Error while fetching logs: {str(e)}")
93
-
94
- def get_parameterized_one_liner(self, params) -> str:
95
- app = params.get("app", "")
96
- since = params.get("since", "")
97
- return f"{toolset_name_for_one_liner(self.toolset.name)}: Get Logs ({app} - {since})"
98
-
99
-
100
- class GetTraces(BaseNewRelicTool):
101
- def __init__(self, toolset: "NewRelicToolset"):
102
- super().__init__(
103
- name="newrelic_get_traces",
104
- description="Retrieve traces from New Relic",
105
- parameters={
106
- "duration": ToolParameter(
107
- description="Minimum trace duration in seconds",
108
- type="number",
109
- required=True,
110
- ),
111
- "trace_id": ToolParameter(
112
- description="Specific trace ID to fetch details (optional)",
113
- type="string",
114
- required=False,
115
- ),
116
- },
117
- toolset=toolset,
118
- )
119
-
120
- def _invoke(
121
- self, params: dict, user_approved: bool = False
122
- ) -> StructuredToolResult:
123
- def success(msg: Any) -> StructuredToolResult:
124
- return StructuredToolResult(
125
- status=StructuredToolResultStatus.SUCCESS,
126
- data=msg,
127
- params=params,
128
- )
129
-
130
- def error(msg: str) -> StructuredToolResult:
131
- return StructuredToolResult(
132
- status=StructuredToolResultStatus.ERROR,
133
- data=msg,
134
- params=params,
135
- )
136
-
137
- duration = get_param_or_raise(params, "duration")
138
- trace_id = params.get("trace_id")
139
-
140
- if trace_id:
141
- query_string = f"SELECT * FROM Span WHERE trace.id = '{trace_id}' and duration.ms > {duration * 1000} and span.kind != 'internal'"
142
- else:
143
- query_string = f"SELECT * FROM Span WHERE duration.ms > {duration * 1000} and span.kind != 'internal'"
144
-
145
- query = {
146
- "query": f"""
147
- {{
148
- actor {{
149
- account(id: {self.toolset.nr_account_id}) {{
150
- nrql(query: \"{query_string}\") {{
151
- results
152
- }}
153
- }}
154
- }}
155
- }}
156
- """
157
- }
158
-
159
- url = "https://api.newrelic.com/graphql"
160
- headers = {
161
- "Content-Type": "application/json",
162
- "Api-Key": self.toolset.nr_api_key,
163
- }
164
-
165
- try:
166
- logging.info(f"Getting New Relic traces with duration > {duration}s")
167
- response = requests.post(url, headers=headers, json=query) # type: ignore[arg-type]
168
-
169
- if response.status_code == 200:
170
- return success(response.json())
171
- else:
172
- return error(
173
- f"Failed to fetch traces. Status code: {response.status_code}\n{response.text}"
174
- )
175
- except Exception as e:
176
- logging.exception("Exception while fetching traces")
177
- return error(f"Error while fetching traces: {str(e)}")
178
-
179
- def get_parameterized_one_liner(self, params) -> str:
180
- if "trace_id" in params and params["trace_id"]:
181
- trace_id = params.get("trace_id", "")
182
- return f"{toolset_name_for_one_liner(self.toolset.name)}: Get Trace Details ({trace_id})"
183
- duration = params.get("duration", "")
184
- return f"{toolset_name_for_one_liner(self.toolset.name)}: Get Traces (>{duration}s)"
185
-
186
-
187
- class NewrelicConfig(BaseModel):
188
- nr_api_key: Optional[str] = None
189
- nr_account_id: Optional[str] = None
190
-
191
-
192
- class NewRelicToolset(Toolset):
193
- nr_api_key: Optional[str] = None
194
- nr_account_id: Optional[str] = None
195
-
196
- def __init__(self):
197
- super().__init__(
198
- name="newrelic",
199
- description="Toolset for interacting with New Relic to fetch logs and traces",
200
- docs_url="https://holmesgpt.dev/data-sources/builtin-toolsets/newrelic/",
201
- icon_url="https://companieslogo.com/img/orig/NEWR-de5fcb2e.png?t=1720244493",
202
- prerequisites=[CallablePrerequisite(callable=self.prerequisites_callable)],
203
- tools=[
204
- GetLogs(self),
205
- GetTraces(self),
206
- ],
207
- experimental=True,
208
- tags=[ToolsetTag.CORE],
209
- )
210
-
211
- def prerequisites_callable(
212
- self, config: dict[str, Any]
213
- ) -> tuple[bool, Optional[str]]:
214
- if not config:
215
- return False, "No configuration provided"
216
-
217
- try:
218
- nr_config = NewrelicConfig(**config)
219
- self.nr_account_id = nr_config.nr_account_id
220
- self.nr_api_key = nr_config.nr_api_key
221
-
222
- if not self.nr_account_id or not self.nr_api_key:
223
- return False, "New Relic account ID or API key is missing"
224
-
225
- return True, None
226
- except Exception as e:
227
- logging.exception("Failed to set up New Relic toolset")
228
- return False, str(e)
229
-
230
- def get_example_config(self) -> Dict[str, Any]:
231
- return {}