Files
unraid-mcp/unraid_mcp/subscriptions/queries.py
Jacob Magar efaab031ae fix: address all 17 PR review comments
Resolves review threads:
- PRRT_kwDOO6Hdxs50fewG (setup.py): non-eliciting clients now return True
  from elicit_reset_confirmation so they can reconfigure without being blocked
- PRRT_kwDOO6Hdxs50fewM (test-tools.sh): add notification/recalculate smoke test
- PRRT_kwDOO6Hdxs50fewP (test-tools.sh): add system/array smoke test
- PRRT_kwDOO6Hdxs50fewT (resources.py): surface manager error state instead of
  reporting 'connecting' for permanently failed subscriptions
- PRRT_kwDOO6Hdxs50feAj (resources.py): use is not None check for empty cached dicts
- PRRT_kwDOO6Hdxs50fewY (integration tests): remove duplicate snapshot-registration
  tests already covered in test_resources.py
- PRRT_kwDOO6Hdxs50fewe (test_resources.py): replace brittle import-detail test
  with behavior tests for connecting/error states
- PRRT_kwDOO6Hdxs50fewh (test_customization.py): strengthen public_theme assertion
- PRRT_kwDOO6Hdxs50fewk (test_customization.py): strengthen theme assertion
- PRRT_kwDOO6Hdxs50fewo (__init__.py): correct subaction count ~88 -> ~107
- PRRT_kwDOO6Hdxs50fewx (test_oidc.py): assert providers list value directly
- PRRT_kwDOO6Hdxs50fewz (unraid.py): remove unreachable raise after vm handler
- PRRT_kwDOO6Hdxs50few2 (unraid.py): remove unreachable raise after docker handler
- PRRT_kwDOO6Hdxs50fev8 (CLAUDE.md): replace legacy 15-tool table with unified
  unraid action/subaction table
- PRRT_kwDOO6Hdxs50fev_ (test_oidc.py): assert providers + defaultAllowedOrigins
- PRRT_kwDOO6Hdxs50feAz (CLAUDE.md): update tool categories to unified API shape
- PRRT_kwDOO6Hdxs50feBE (CLAUDE.md/setup.py): update unraid_health refs to
  unraid(action=health, subaction=setup)
2026-03-16 02:58:54 -04:00

53 lines
2.1 KiB
Python

"""GraphQL subscription query strings for snapshot and collect operations."""
# Subscriptions that only emit on state changes (not on a regular interval).
# When subscribe_once times out for these, it means no recent change — not an error.
EVENT_DRIVEN_ACTIONS: frozenset[str] = frozenset(
{
"parity_progress",
"ups_status",
"notifications_overview",
"owner",
"server_status",
}
)
SNAPSHOT_ACTIONS = {
"cpu": """
subscription { systemMetricsCpu { id percentTotal cpus { percentTotal percentUser percentSystem percentIdle } } }
""",
"memory": """
subscription { systemMetricsMemory { id total used free available active buffcache percentTotal swapTotal swapUsed swapFree percentSwapTotal } }
""",
"cpu_telemetry": """
subscription { systemMetricsCpuTelemetry { id totalPower power temp } }
""",
"array_state": """
subscription { arraySubscription { id state capacity { kilobytes { free used total } } parityCheckStatus { status progress speed errors } } }
""",
"parity_progress": """
subscription { parityHistorySubscription { date status progress speed errors correcting paused running } }
""",
"ups_status": """
subscription { upsUpdates { id name model status battery { chargeLevel estimatedRuntime health } power { inputVoltage outputVoltage loadPercentage } } }
""",
"notifications_overview": """
subscription { notificationsOverview { unread { info warning alert total } archive { info warning alert total } } }
""",
"owner": """
subscription { ownerSubscription { username url avatar } }
""",
"server_status": """
subscription { serversSubscription { id name status guid wanip lanip localurl remoteurl } }
""",
}
COLLECT_ACTIONS = {
"notification_feed": """
subscription { notificationAdded { id title subject description importance type timestamp } }
""",
"log_tail": """
subscription LogTail($path: String!) { logFile(path: $path) { path content totalLines startLine } }
""",
}