mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
Salvages the event-spine foundation from feat/telemetry-observability (emitter, typed events, OTLP streaming, redaction — authorship preserved in the preceding commits) and scopes it to the plane enterprise operators need today: gateway Service Health Monitoring plus redacted Operational Diagnostics, exported over OTLP. Dropped from the salvaged branch, deliberately: - run/model/tool trajectory capture (plugins/telemetry hooks, tel_spans) - the local JSONL + state.db tel_* store (monitoring is egress, not storage) - usage rollups/metrics, /insights integration, bulk export - hermes telemetry CLI (replaced by hermes monitoring status) Those planes — shared client usage metrics and enterprise trace telemetry — are being designed on the NeMo Relay integration with distinct consent, policy, and export boundaries; this keeps the monitoring plane content-free and independently enableable. Renames agent/telemetry -> agent/monitoring, config telemetry.* -> monitoring.*, and pins the otlp extra at OpenTelemetry 1.39.1 (matching uv.lock; 1.30.0 conflicts with mistralai>=2.4 on opentelemetry-api).
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""``hermes monitoring`` subcommand parser.
|
|
|
|
Gateway monitoring control and inspection. ``status`` shows whether the
|
|
gateway health & diagnostics export is enabled, where it points, and the
|
|
redaction posture.
|
|
|
|
The handler is injected to avoid importing ``main`` (mirrors the insights
|
|
subcommand).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Callable
|
|
|
|
|
|
def build_monitoring_parser(subparsers, *, cmd_monitoring: Callable) -> None:
|
|
"""Attach the ``monitoring`` subcommand (with actions) to ``subparsers``."""
|
|
p = subparsers.add_parser(
|
|
"monitoring",
|
|
help="Inspect gateway monitoring (health & diagnostics export)",
|
|
description=(
|
|
"Gateway monitoring: service health metrics plus redacted "
|
|
"diagnostics, exported over OTLP to an operator-configured "
|
|
"endpoint. Content-free by construction — no prompts, messages, "
|
|
"tool args/results, or usage analytics. Configure under "
|
|
"monitoring.* in config.yaml."
|
|
),
|
|
)
|
|
sub = p.add_subparsers(dest="monitoring_action")
|
|
|
|
sub.add_parser(
|
|
"status",
|
|
help="Show monitoring settings, export state, and redaction posture",
|
|
)
|
|
|
|
p.set_defaults(func=cmd_monitoring)
|