Readonly agent
agent: {
name: string;
prompt: string;
language: string;
reasoning: {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
fallbacks: ({
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
})[];
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
fallbacks: ({
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
})[];
};
voice: {
id: string;
revision: string;
};
stt: {
providerId: string;
modelId: string;
modelRevision: string;
mode: "streaming" | "batch";
sampleRate: number;
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav";
optionsRef?: string;
credentialRef?: string;
};
tts: {
providerId: string;
modelId: string;
modelRevision: string;
mode: "streaming" | "batch";
sampleRate: number;
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav";
optionsRef?: string;
credentialRef?: string;
};
vad: {
providerId: string;
modelId: string;
modelRevision: string;
threshold: number;
optionsRef?: string;
};
endpoint: {
providerId: string;
modelId: string;
modelRevision: string;
optionsRef?: string;
};
providerPolicy: {
mode: "provider" | "local" | "hosted";
providerIds: string[];
purposes: ("stt" | "tts" | "vad" | "endpoint" | "reasoning")[];
fallback: "none" | "allowlisted";
};
limits: {
maxDurationSeconds: number;
setupTimeoutMs: number;
reconnectGraceMs: number;
silenceTimeoutMs: number;
cleanupTimeoutMs: number;
maxTurns: number;
};
allowedToolRefs: string[];
transcriptPolicy: {
mode: "none";
} | {
mode: "delivery";
deliveryTtlSeconds: number;
} | {
mode: "retained";
retentionSeconds: number;
};
webhookRef: null | string;
version: 1;
agentId: string;
scopeId: string;
revision: number;
state: "active" | "archived";
createdAt: number;
updatedAt: number;
}
Type declaration
name: string
prompt: string
language: string
reasoning: {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
fallbacks: ({
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
})[];
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
fallbacks: ({
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "local";
manifestDigest: string;
} | {
modelId: string;
modelRevision: string;
protocol: {
id: "openai-chat-completions";
version: 1;
};
usageUnits: {
input_token: "token";
output_token: "token";
reasoning_token: "token";
cached_input_token: "token";
reasoningInOutput: boolean;
};
attemptLimits: {
maxAttempts: number;
perAttempt: {
input_token: number;
output_token: number;
reasoning_token: number;
cached_input_token: number;
request: number;
};
};
cancellation: "native_abort" | "process_exit" | "unsupported";
provider: "registered_endpoint";
endpointRef: string;
endpointRevision: number;
credentialRef?: string;
})[];
}
voice: {
id: string;
revision: string;
}
id: string
revision: string
stt: {
providerId: string;
modelId: string;
modelRevision: string;
mode: "streaming" | "batch";
sampleRate: number;
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav";
optionsRef?: string;
credentialRef?: string;
}
providerId: string
modelId: string
modelRevision: string
mode: "streaming" | "batch"
sampleRate: number
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav"
Optional optionsRef?: string
Optional credentialRef?: string
tts: {
providerId: string;
modelId: string;
modelRevision: string;
mode: "streaming" | "batch";
sampleRate: number;
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav";
optionsRef?: string;
credentialRef?: string;
}
providerId: string
modelId: string
modelRevision: string
mode: "streaming" | "batch"
sampleRate: number
codec: "pcm_s16le" | "pcm_f32le" | "opus" | "mp3" | "wav"
Optional optionsRef?: string
Optional credentialRef?: string
vad: {
providerId: string;
modelId: string;
modelRevision: string;
threshold: number;
optionsRef?: string;
}
providerId: string
modelId: string
modelRevision: string
threshold: number
Optional optionsRef?: string
endpoint: {
providerId: string;
modelId: string;
modelRevision: string;
optionsRef?: string;
}
providerId: string
modelId: string
modelRevision: string
Optional optionsRef?: string
providerPolicy: {
mode: "provider" | "local" | "hosted";
providerIds: string[];
purposes: ("stt" | "tts" | "vad" | "endpoint" | "reasoning")[];
fallback: "none" | "allowlisted";
}
mode: "provider" | "local" | "hosted"
providerIds: string[]
purposes: ("stt" | "tts" | "vad" | "endpoint" | "reasoning")[]
fallback: "none" | "allowlisted"
limits: {
maxDurationSeconds: number;
setupTimeoutMs: number;
reconnectGraceMs: number;
silenceTimeoutMs: number;
cleanupTimeoutMs: number;
maxTurns: number;
}
maxDurationSeconds: number
setupTimeoutMs: number
reconnectGraceMs: number
silenceTimeoutMs: number
cleanupTimeoutMs: number
maxTurns: number
allowedToolRefs: string[]
transcriptPolicy: {
mode: "none";
} | {
mode: "delivery";
deliveryTtlSeconds: number;
} | {
mode: "retained";
retentionSeconds: number;
}
webhookRef: null | string
version: 1
agentId: string
scopeId: string
revision: number
state: "active" | "archived"
createdAt: number
updatedAt: number
Configuration is captured before admission; model construction is deferred until the authenticated binding starts.