Capabilities, facts, and feature gates (0.17-fix.70)

The agent exposes read-only inventory endpoints for operators, automation, and future central control planes. They must not perform expensive network probes; deep checks stay on POST /api/v1/jobs/validate?deep=1. Каталог провайдеров (типы, maturity, теги) см. также providers.md.

Endpoints

Method Path Purpose
GET /api/v1/capabilities Agent identity, build version, feature gates, registered providers (maturity, capability tags, requires, deprecation fields), optional provider_health cache, management / sync placeholders, server time.
GET /api/v1/agent/facts Host OS/arch/kernel, timezone, redacted paths, tool discovery (short local probes), process uptime when available.
GET /api/v1/health Aggregated status (ok | degraded | error), live, ready, per-subsystem checks, degraded_reasons, agent + version, time.
GET /api/v1/live Minimal liveness ({"live":true}).
GET /api/v1/ready Readiness; 503 when the agent is not ready ({"ready":false}).
GET /api/v1/providers/health Subset: provider_health + time from the same cache as capabilities.

Responses use the same path redaction rules as other public JSON (basenames by default).

Health: liveness, readiness, degraded

Feature gates (agent config features)

All gates default to false. When a submitted job uses a capability that is disabled, validation returns a machine-readable code such as HOOKS_UNSUPPORTED or ENCRYPTION_UNSUPPORTED (see internal/featuregates).

Reserved source filesystem_incremental remains rejected at job validation (SOURCE_UNSUPPORTED) until a future release implements it; the filesystem_incremental feature flag is included in capabilities for forward compatibility.

Provider public model

Each registered source/destination appears under providers.sources or providers.destinations with:

CLI

Panel Lite

The overview block Health · capabilities · agent facts summarizes the three GET endpoints after each refresh.

OpenAPI

Route list and response shapes are mirrored in scripts/gen-openapi.pyinternal/api/openapi.json (GET /api/openapi.json).

Примеры и feature gates