Skip to content

providerDescriptorSchema

const providerDescriptorSchema: object

The JSON Schemas those models were generated from, for runtime use.

readonly $defs: object

readonly inputKind: object

readonly description: "A kind of input medium a task consumes."

readonly enum: readonly ["text", "image", "audio"]

readonly title: "TaskInputKind"

readonly outputDelivery: object

readonly description: "How a task's result reaches the application: 'inline' content in the result (text), 'playback' as a managed, audible effect on the device with no retrievable bytes, or 'artifact' as retrievable media."

readonly enum: readonly ["inline", "playback", "artifact"]

readonly title: "OutputDelivery"

readonly taskCapability: object

readonly additionalProperties: true

readonly description: "The provider's static capabilities for one task kind."

readonly properties: object

readonly cancel: object

$defs.taskCapability.properties.cancel.$ref

Section titled “$defs.taskCapability.properties.cancel.$ref”

readonly $ref: "#/properties/cancel"

$defs.taskCapability.properties.cancel.description

Section titled “$defs.taskCapability.properties.cancel.description”

readonly description: "Cancellation guarantee for this task. It may differ from the provider-level cancel, e.g. when stopping playback is immediate but a synthesis request cannot be aborted."

readonly inputs: object

$defs.taskCapability.properties.inputs.description

Section titled “$defs.taskCapability.properties.inputs.description”

readonly description: "Input media kinds the provider accepts for this task."

$defs.taskCapability.properties.inputs.items

Section titled “$defs.taskCapability.properties.inputs.items”

readonly items: object

$defs.taskCapability.properties.inputs.items.$ref

Section titled “$defs.taskCapability.properties.inputs.items.$ref”

readonly $ref: "#/$defs/inputKind"

$defs.taskCapability.properties.inputs.minItems

Section titled “$defs.taskCapability.properties.inputs.minItems”

readonly minItems: 1

$defs.taskCapability.properties.inputs.type

Section titled “$defs.taskCapability.properties.inputs.type”

readonly type: "array"

$defs.taskCapability.properties.interaction

Section titled “$defs.taskCapability.properties.interaction”

readonly interaction: object

$defs.taskCapability.properties.interaction.additionalProperties

Section titled “$defs.taskCapability.properties.interaction.additionalProperties”

readonly additionalProperties: true

$defs.taskCapability.properties.interaction.description

Section titled “$defs.taskCapability.properties.interaction.description”

readonly description: "Interaction modes the provider supports for this task."

$defs.taskCapability.properties.interaction.properties

Section titled “$defs.taskCapability.properties.interaction.properties”

readonly properties: object

$defs.taskCapability.properties.interaction.properties.prepare

Section titled “$defs.taskCapability.properties.interaction.properties.prepare”

readonly prepare: object

$defs.taskCapability.properties.interaction.properties.prepare.description

Section titled “$defs.taskCapability.properties.interaction.properties.prepare.description”

readonly description: "Whether the provider implements prepare() for this task (ADR 019). Absent means false."

$defs.taskCapability.properties.interaction.properties.prepare.type

Section titled “$defs.taskCapability.properties.interaction.properties.prepare.type”

readonly type: "boolean"

$defs.taskCapability.properties.interaction.properties.run

Section titled “$defs.taskCapability.properties.interaction.properties.run”

readonly run: object

$defs.taskCapability.properties.interaction.properties.run.description

Section titled “$defs.taskCapability.properties.interaction.properties.run.description”

readonly description: "Whether the provider supports Mode 1 run for this task."

$defs.taskCapability.properties.interaction.properties.run.type

Section titled “$defs.taskCapability.properties.interaction.properties.run.type”

readonly type: "boolean"

$defs.taskCapability.properties.interaction.properties.stream

Section titled “$defs.taskCapability.properties.interaction.properties.stream”

readonly stream: object

$defs.taskCapability.properties.interaction.properties.stream.description

Section titled “$defs.taskCapability.properties.interaction.properties.stream.description”

readonly description: "Whether the provider supports Mode 2 stream for this task."

$defs.taskCapability.properties.interaction.properties.stream.type

Section titled “$defs.taskCapability.properties.interaction.properties.stream.type”

readonly type: "boolean"

$defs.taskCapability.properties.interaction.required

Section titled “$defs.taskCapability.properties.interaction.required”

readonly required: readonly ["run", "stream"]

$defs.taskCapability.properties.interaction.title

Section titled “$defs.taskCapability.properties.interaction.title”

readonly title: "ProviderTaskInteraction"

$defs.taskCapability.properties.interaction.type

Section titled “$defs.taskCapability.properties.interaction.type”

readonly type: "object"

readonly kind: object

$defs.taskCapability.properties.kind.description

Section titled “$defs.taskCapability.properties.kind.description”

readonly description: "The task kind this entry describes, e.g. 'text_to_speech'."

$defs.taskCapability.properties.kind.minLength

Section titled “$defs.taskCapability.properties.kind.minLength”

readonly minLength: 1

readonly type: "string"

readonly locales: object

$defs.taskCapability.properties.locales.description

Section titled “$defs.taskCapability.properties.locales.description”

readonly description: "BCP 47 locales the provider can serve for this task, when it knows them statically. Absent means unknown; the dynamic check may report them instead."

$defs.taskCapability.properties.locales.items

Section titled “$defs.taskCapability.properties.locales.items”

readonly items: object

$defs.taskCapability.properties.locales.items.minLength

Section titled “$defs.taskCapability.properties.locales.items.minLength”

readonly minLength: 1

$defs.taskCapability.properties.locales.items.type

Section titled “$defs.taskCapability.properties.locales.items.type”

readonly type: "string"

$defs.taskCapability.properties.locales.type

Section titled “$defs.taskCapability.properties.locales.type”

readonly type: "array"

readonly outputs: object

$defs.taskCapability.properties.outputs.description

Section titled “$defs.taskCapability.properties.outputs.description”

readonly description: "How results of this task can be delivered. A provider lists only what it really produces: a provider that can only play audio lists 'playback' and never 'artifact'."

$defs.taskCapability.properties.outputs.items

Section titled “$defs.taskCapability.properties.outputs.items”

readonly items: object

$defs.taskCapability.properties.outputs.items.$ref

Section titled “$defs.taskCapability.properties.outputs.items.$ref”

readonly $ref: "#/$defs/taskOutput"

$defs.taskCapability.properties.outputs.minItems

Section titled “$defs.taskCapability.properties.outputs.minItems”

readonly minItems: 1

$defs.taskCapability.properties.outputs.type

Section titled “$defs.taskCapability.properties.outputs.type”

readonly type: "array"

readonly privacy: object

$defs.taskCapability.properties.privacy.$ref

Section titled “$defs.taskCapability.properties.privacy.$ref”

readonly $ref: "#/properties/privacy"

$defs.taskCapability.properties.privacy.description

Section titled “$defs.taskCapability.properties.privacy.description”

readonly description: "Data-egress posture for this task when it differs from the provider-level privacy, e.g. a provider whose speech synthesis uses a network service. Absent inherits descriptor.privacy."

readonly required: readonly ["kind", "inputs", "interaction", "cancel", "outputs"]

readonly title: "ProviderTaskCapability"

readonly type: "object"

readonly taskOutput: object

readonly additionalProperties: true

readonly description: "One way the provider can deliver a task's result."

readonly properties: object

readonly delivery: object

readonly $ref: "#/$defs/outputDelivery"

readonly mediaTypes: object

$defs.taskOutput.properties.mediaTypes.description

Section titled “$defs.taskOutput.properties.mediaTypes.description”

readonly description: "Media types the provider can produce with this delivery, e.g. 'audio/wav'. Absent means the provider does not declare them; a request that requires specific media types never routes to such an output."

$defs.taskOutput.properties.mediaTypes.items

Section titled “$defs.taskOutput.properties.mediaTypes.items”

readonly items: object

$defs.taskOutput.properties.mediaTypes.items.minLength

Section titled “$defs.taskOutput.properties.mediaTypes.items.minLength”

readonly minLength: 1

$defs.taskOutput.properties.mediaTypes.items.type

Section titled “$defs.taskOutput.properties.mediaTypes.items.type”

readonly type: "string"

$defs.taskOutput.properties.mediaTypes.type

Section titled “$defs.taskOutput.properties.mediaTypes.type”

readonly type: "array"

readonly required: readonly ["delivery"]

readonly title: "ProviderTaskOutput"

readonly type: "object"

readonly $id: "https://schemas.inderun.dev/1.0/provider-descriptor.schema.json"

readonly $schema: "https://json-schema.org/draft/2020-12/schema"

readonly additionalProperties: true

readonly description: "A provider's static capability declaration: identity, placement, transport, supported interaction modes and tasks, cancellation guarantee, resource limits and privacy posture. It does not change while the provider is registered. The route planner, checkCapabilities() and execution provenance all read this one shape."

readonly properties: object

readonly cancel: object

readonly description: "Cancellation guarantee: 'hard' stops processing including remote work, 'soft' stops reading locally while remote work may continue, 'none' means cancellation is unsupported. Independently of this value, the engine delivers no event after a cancel."

readonly enum: readonly ["hard", "soft", "none"]

readonly title: "CancelSemantics"

readonly id: object

readonly description: "Unique identifier of the provider instance (a target), e.g. 'apple_foundation_models' or 'openai_compatible_cloud:gpt-5-mini'. Model profiles list targets by this id."

readonly minLength: 1

readonly type: "string"

readonly limits: object

readonly additionalProperties: true

readonly description: "Optional input and output resource limits."

readonly properties: object

properties.limits.properties.maxAudioSeconds

Section titled “properties.limits.properties.maxAudioSeconds”

readonly maxAudioSeconds: object

properties.limits.properties.maxAudioSeconds.description

Section titled “properties.limits.properties.maxAudioSeconds.description”

readonly description: "Longest accepted or produced audio, in seconds."

properties.limits.properties.maxAudioSeconds.minimum

Section titled “properties.limits.properties.maxAudioSeconds.minimum”

readonly minimum: 1

properties.limits.properties.maxAudioSeconds.type

Section titled “properties.limits.properties.maxAudioSeconds.type”

readonly type: "integer"

properties.limits.properties.maxImageBytes

Section titled “properties.limits.properties.maxImageBytes”

readonly maxImageBytes: object

properties.limits.properties.maxImageBytes.description

Section titled “properties.limits.properties.maxImageBytes.description”

readonly description: "Largest accepted image, in bytes."

properties.limits.properties.maxImageBytes.minimum

Section titled “properties.limits.properties.maxImageBytes.minimum”

readonly minimum: 1

properties.limits.properties.maxImageBytes.type

Section titled “properties.limits.properties.maxImageBytes.type”

readonly type: "integer"

properties.limits.properties.maxInputTokens

Section titled “properties.limits.properties.maxInputTokens”

readonly maxInputTokens: object

properties.limits.properties.maxInputTokens.description

Section titled “properties.limits.properties.maxInputTokens.description”

readonly description: "Largest accepted input, in tokens."

properties.limits.properties.maxInputTokens.minimum

Section titled “properties.limits.properties.maxInputTokens.minimum”

readonly minimum: 1

properties.limits.properties.maxInputTokens.type

Section titled “properties.limits.properties.maxInputTokens.type”

readonly type: "integer"

properties.limits.properties.maxOutputTokens

Section titled “properties.limits.properties.maxOutputTokens”

readonly maxOutputTokens: object

properties.limits.properties.maxOutputTokens.description

Section titled “properties.limits.properties.maxOutputTokens.description”

readonly description: "Largest output the provider produces, in tokens."

properties.limits.properties.maxOutputTokens.minimum

Section titled “properties.limits.properties.maxOutputTokens.minimum”

readonly minimum: 1

properties.limits.properties.maxOutputTokens.type

Section titled “properties.limits.properties.maxOutputTokens.type”

readonly type: "integer"

readonly title: "ProviderLimits"

readonly type: "object"

readonly model: object

readonly description: "The model this provider instance is bound to, when it can name one. Cloud providers report the model id they send; platform-managed models report an opaque platform alias rather than a guessed weight name. Absent means the provider cannot name its model."

readonly minLength: 1

readonly type: "string"

readonly privacy: object

readonly additionalProperties: true

readonly description: "Data-egress posture, used to enforce local and cloud routing rules. Absent means a local or edge provider is treated as keeping data on the device and a cloud provider as sending it off."

readonly properties: object

properties.privacy.properties.dataLeavesDevice

Section titled “properties.privacy.properties.dataLeavesDevice”

readonly dataLeavesDevice: object

properties.privacy.properties.dataLeavesDevice.description

Section titled “properties.privacy.properties.dataLeavesDevice.description”

readonly description: "Whether request content leaves the device."

properties.privacy.properties.dataLeavesDevice.type

Section titled “properties.privacy.properties.dataLeavesDevice.type”

readonly type: "boolean"

readonly regions: object

properties.privacy.properties.regions.description

Section titled “properties.privacy.properties.regions.description”

readonly description: "Geographic regions where a cloud provider processes data."

properties.privacy.properties.regions.items

Section titled “properties.privacy.properties.regions.items”

readonly items: object

properties.privacy.properties.regions.items.minLength

Section titled “properties.privacy.properties.regions.items.minLength”

readonly minLength: 1

properties.privacy.properties.regions.items.type

Section titled “properties.privacy.properties.regions.items.type”

readonly type: "string"

properties.privacy.properties.regions.type

Section titled “properties.privacy.properties.regions.type”

readonly type: "array"

readonly required: readonly ["dataLeavesDevice"]

readonly title: "ProviderPrivacy"

readonly type: "object"

readonly streamingStyle: object

readonly description: "How a streaming provider delivers incremental output: individual tokens, larger chunks, or whole snapshots. Absent for providers that do not stream."

readonly enum: readonly ["tokens", "chunks", "snapshots"]

readonly title: "StreamingStyle"

readonly supports: object

readonly additionalProperties: true

readonly description: "Interaction modes and features the provider statically declares."

readonly properties: object

readonly multimodal: object

properties.supports.properties.multimodal.description

Section titled “properties.supports.properties.multimodal.description”

readonly description: "Whether the provider accepts non-text inputs such as images or audio."

properties.supports.properties.multimodal.type

Section titled “properties.supports.properties.multimodal.type”

readonly type: "boolean"

readonly realtime: object

properties.supports.properties.realtime.description

Section titled “properties.supports.properties.realtime.description”

readonly description: "Whether the provider supports Mode 3 realtime sessions. Reserved; no engine implements Mode 3 yet."

properties.supports.properties.realtime.type

Section titled “properties.supports.properties.realtime.type”

readonly type: "boolean"

properties.supports.properties.reasoningEvents

Section titled “properties.supports.properties.reasoningEvents”

readonly reasoningEvents: object

properties.supports.properties.reasoningEvents.description

Section titled “properties.supports.properties.reasoningEvents.description”

readonly description: "Whether the provider emits reasoning events alongside content."

properties.supports.properties.reasoningEvents.type

Section titled “properties.supports.properties.reasoningEvents.type”

readonly type: "boolean"

readonly run: object

properties.supports.properties.run.description

Section titled “properties.supports.properties.run.description”

readonly description: "Whether the provider supports Mode 1 run (request/response)."

readonly type: "boolean"

readonly streaming: object

properties.supports.properties.streaming.description

Section titled “properties.supports.properties.streaming.description”

readonly description: "Whether the provider supports Mode 2 stream. A provider that declares it must also implement the streaming adapter; the engines report it as unavailable otherwise."

properties.supports.properties.streaming.type

Section titled “properties.supports.properties.streaming.type”

readonly type: "boolean"

properties.supports.properties.structuredOutput

Section titled “properties.supports.properties.structuredOutput”

readonly structuredOutput: object

properties.supports.properties.structuredOutput.description

Section titled “properties.supports.properties.structuredOutput.description”

readonly description: "Whether the provider supports structured output constrained by a JSON schema."

properties.supports.properties.structuredOutput.type

Section titled “properties.supports.properties.structuredOutput.type”

readonly type: "boolean"

readonly tools: object

properties.supports.properties.tools.description

Section titled “properties.supports.properties.tools.description”

readonly description: "Whether the provider supports tool calling."

readonly type: "boolean"

readonly required: readonly ["run", "streaming", "realtime", "tools", "reasoningEvents", "structuredOutput", "multimodal"]

readonly title: "ProviderSupports"

readonly type: "object"

readonly taskCapabilities: object

readonly description: "What the provider can do for each task: accepted inputs, interaction modes, output deliveries and formats, cancellation, locales and privacy. When present it is authoritative for routing and must list every task the provider serves. When absent (a legacy descriptor), routing infers exactly one entry — 'text_to_text' with text input, inline output, run/stream from supports and cancel from cancel — if tasks contains 'text_to_text', and nothing for any other task: a legacy descriptor is never treated as capable of a non-text task."

readonly items: object

readonly $ref: "#/$defs/taskCapability"

readonly type: "array"

readonly tasks: object

readonly description: "Task kinds the provider supports, e.g. 'text_to_text'. When taskCapabilities is present it must describe the same kinds and is what routing reads; without it, routing infers capabilities for 'text_to_text' alone (see taskCapabilities)."

readonly items: object

readonly minLength: 1

readonly type: "string"

readonly type: "array"

readonly transport: object

readonly description: "How the engine reaches the provider: in-process runtime, operating-system service, buffered HTTP, server-sent events, or a realtime connection."

readonly enum: readonly ["in_process", "system_service", "http", "sse", "realtime"]

readonly title: "ProviderTransport"

readonly type: object

readonly description: "Execution placement: 'local' (on the device), 'edge', or 'cloud'."

readonly enum: readonly ["local", "edge", "cloud"]

readonly title: "ProviderType"

readonly required: readonly ["id", "type", "transport", "supports", "cancel", "tasks"]

readonly title: "ProviderDescriptor"

readonly type: "object"