Interface FrozenVoicePlan

Configuration is captured before admission; model construction is deferred until the authenticated binding starts.

interface FrozenVoicePlan {
    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;
    };
    open(budget, onSupplierUsage?): Promise<OpenedVoicePlan>;
}

Methods

Properties

Methods

Properties

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