Skip to content

ProviderDescriptor

A provider’s static capability declaration.

Declared here rather than imported, because — unlike TaskRequest, StreamEvent and the rest — this shape is not a generated contract. There is no schema for it in @independo/inderun-contracts and no validator; each SDK declares it independently (core/provider.d.ts in @independo/inderun-web, IndeRunCore/Provider.swift, core/Provider.kt), and this is the fourth copy. Importing it from @independo/inderun-web is not an option either: that would make the native platforms’ plugin contract depend on the web SDK.

The drift guard is in web.ts, which returns the web SDK’s value into this type uncast — so tsc proves the shapes still match on every build, the same way the StreamRun mirror below is checked. See the upstream follow-up asking for a schema.

cancel: "none" | "hard" | "soft"


id: string


optional limits?: object

optional maxAudioSeconds?: number

optional maxImageBytes?: number

optional maxInputTokens?: number

optional maxOutputTokens?: number


optional model?: string

The model this target is bound to, as the provider names it. Absent when the provider cannot name one — a platform-managed on-device model reports nothing rather than a guessed weight name.


optional privacy?: object

dataLeavesDevice: boolean

optional regions?: string[]


optional streamingStyle?: "tokens" | "chunks" | "snapshots"


supports: object

multimodal: boolean

realtime: boolean

reasoningEvents: boolean

run: boolean

streaming: boolean

structuredOutput: boolean

tools: boolean


tasks: string[]


transport: "in_process" | "system_service" | "http" | "sse" | "realtime"


type: "local" | "edge" | "cloud"