Capabilities and feature visibility
A provider name identifies an adapter; it does not prove that your deployment has a particular resource, plugin, permission, or transport.
The package has static provider declarations and instance-level resolution. On the facade, runtime-resolved values override the static fallback. Refresh with refreshCapabilities() when configuration or the backend changes.
Facade callers
Use getCapabilityMap() to decide which controls to show. Keep handling result.ok on each call, because availability can change after discovery. An accessor always exists; do not check for client.sessions to infer support.
import { supportsCapability, type CapabilityClient } from "@cavi-ai/api-client";
export async function availableControls(client: CapabilityClient) {
const capabilities = await client.getCapabilityMap();
return {
stream: supportsCapability(capabilities, "streaming"),
batch: supportsCapability(capabilities, "batch"),
sessions: supportsCapability(capabilities, "sessions"),
};
}Use these flags for feature visibility. A visible control still needs a call result and exception handler; discovery is not a permission guarantee.
Unsupported, unwired, invalid, or unavailable calls can return a structured gap. Authentication and unclassified failures still throw. Error handling explains both paths.
Raw runtime callers
Check getRuntimeCapabilities(), then runtimeSupports(capabilities, surface) and the optional method before using it. The batch example demonstrates this pattern.
Routes and application ownership
Provider modules own their wire mappings. Team manifests can supply resource identity and permitted relative workspace paths, but do not override provider protocol semantics. Import public helpers rather than hardcoding endpoint strings in your application. See manifests.
Referenced examples
Verified example · TypeScript
Runtime capabilities
examples/runtime-capabilities.ts
import { runtimeSupports, type RuntimeClient, type RuntimeBatchRequest } from "@cavi-ai/api-client";
export async function submitWhenBatchIsAvailable(client: RuntimeClient, requests: RuntimeBatchRequest[]) {
const capabilities = await client.getRuntimeCapabilities();
if (!runtimeSupports(capabilities, "batch") || !client.submitBatch) return null;
return client.submitBatch(requests);
}
Package imports
Referenced by
Artifact provenance
- Package
- @cavi-ai/api-client@0.21.0
- Release
- v0.21.0
- Commit
07f0ee45424c267278f7b0c89a7dcea4e2492cc1- Source
examples/runtime-capabilities.ts- Tarball SHA-256
0924b5d3a7a40869bd44fedc47a9b8eb9844c2af1fd5c7ca77469d8b7c0b8558- Content SHA-256
24eff463c41582eaf5e70c58f42e5ae13bd12d02fa14ae2a886afa3abf5cdf48