File size: 2,208 Bytes
7e9a520
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""AtlasOps — 20 real SRE tools for the agent runtime."""

from agents.tools.kubectl import (
    kubectl_get, kubectl_describe, kubectl_logs, kubectl_top_pods,
    kubectl_top_nodes, kubectl_rollout, kubectl_scale, kubectl_exec,
)
from agents.tools.prometheus import promql_query, promql_query_range
from agents.tools.jaeger import jaeger_search, jaeger_get_trace
from agents.tools.argocd import (
    argocd_list_apps, argocd_app_history, argocd_rollback, argocd_app_get,
)
from agents.tools.gcloud_logging import gcloud_logs_read
from agents.tools.alertmanager import alertmanager_silence, alertmanager_list_alerts
from agents.tools.comms import slack_post_update, postmortem_draft

# Keep tool imports resilient in local/dev test environments where optional
# cloud SDK extras may be unavailable. This avoids blocking unrelated tools.
try:
    from agents.tools.cloud_monitoring import cloud_monitoring_query
except Exception as exc:  # pragma: no cover - exercised only when dependency missing
    _cloud_monitoring_import_error = str(exc)

    def cloud_monitoring_query(*args, **kwargs):  # type: ignore[no-redef]
        return {
            "success": False,
            "error": f"cloud_monitoring_unavailable: {_cloud_monitoring_import_error}",
        }


TOOL_REGISTRY = {
    "kubectl_get": kubectl_get,
    "kubectl_describe": kubectl_describe,
    "kubectl_logs": kubectl_logs,
    "kubectl_top_pods": kubectl_top_pods,
    "kubectl_top_nodes": kubectl_top_nodes,
    "kubectl_rollout": kubectl_rollout,
    "kubectl_scale": kubectl_scale,
    "kubectl_exec": kubectl_exec,
    "promql_query": promql_query,
    "promql_query_range": promql_query_range,
    "jaeger_search": jaeger_search,
    "jaeger_get_trace": jaeger_get_trace,
    "argocd_list_apps": argocd_list_apps,
    "argocd_app_history": argocd_app_history,
    "argocd_rollback": argocd_rollback,
    "argocd_app_get": argocd_app_get,
    "gcloud_logs_read": gcloud_logs_read,
    "cloud_monitoring_query": cloud_monitoring_query,
    "alertmanager_silence": alertmanager_silence,
    "alertmanager_list_alerts": alertmanager_list_alerts,
    "slack_post_update": slack_post_update,
    "postmortem_draft": postmortem_draft,
}