CAPABILITIES.md in the SDK repository.
Resource Discovery
graph.resolve() returns the resolve intent with typed candidates containing resource identity, type, namespace, and cluster context. Use the selected candidate with resource-scoped helpers such as graph.connections(), graph.path(), or graph.blast().
Dependency and Impact Analysis
For dependencies derived from APM data, pass
source: "auto" | "datadog" | "tempo" to graph.serviceTree(). Typed graph.path() selectors can connect an exact Kubernetes workload to a Tempo service or datastore with scope: "operational". The equivalent terminal workflows are documented in the Annie CLI guide.
Timelines and Change Feeds
Topology and Diagrams
Topology supports
context, container, component, and dynamic levels plus source: "auto" | "datadog" | "tempo". Dynamic topology renders as a sequence diagram; the other levels render as flowcharts.
Kubernetes Safety and Hygiene
Security and Exposure
Observability and Alerting
Service Dependencies and Ownership
graph.datastore(), graph.flow(), graph.externalDep(), and graph.calls() also accept source: "auto" | "datadog" | "tempo". Tempo mode reads services, calls, datastores, messaging destinations, external endpoints, and Kubernetes identity bridges derived from Grafana Tempo traces. It does not expose individual trace or span search.
Choosing the Right Entry Point
Use typed helpers when you need deterministic automation. Usegraph.query() when you want to compose a precise query from the documented targets and filters. Use graph.ask() when the caller has a natural-language question and can accept server-side routing.