mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-12 07:01:09 -07:00
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import type {
|
|
ModelAvailabilityService,
|
|
ModelHealthStatus,
|
|
ModelId,
|
|
} from './modelAvailabilityService.js';
|
|
|
|
/**
|
|
* Whether to prompt the user or fallback silently on a model API failure.
|
|
*/
|
|
export type FallbackAction = 'silent' | 'prompt';
|
|
|
|
/**
|
|
* Type of possible errors from model API failures.
|
|
*/
|
|
export type FailureKind = 'terminal' | 'transient' | 'not_found' | 'unknown';
|
|
|
|
/**
|
|
* Map from model API failure reason to user interaction.
|
|
*/
|
|
export type ModelPolicyActionMap = Partial<Record<FailureKind, FallbackAction>>;
|
|
|
|
/**
|
|
* What state (e.g. Terminal, Sticky Retry) to set a model after failed API call.
|
|
*/
|
|
export type ModelPolicyStateMap = Partial<
|
|
Record<FailureKind, ModelHealthStatus>
|
|
>;
|
|
|
|
/**
|
|
* Defines the policy for a single model in the availability chain.
|
|
*
|
|
* This includes:
|
|
* - Which model this policy applies to.
|
|
* - What actions to take (prompt vs silent fallback) for different failure kinds.
|
|
* - How the model's health status should transition upon failure.
|
|
* - Whether this model is considered a "last resort" (i.e. use if all models are unavailable).
|
|
*/
|
|
export interface ModelPolicy {
|
|
model: ModelId;
|
|
actions: ModelPolicyActionMap;
|
|
stateTransitions: ModelPolicyStateMap;
|
|
isLastResort?: boolean;
|
|
}
|
|
|
|
/**
|
|
* A chain of model policies defining the priority and fallback behavior.
|
|
* The first model in the chain is the primary model.
|
|
*/
|
|
export type ModelPolicyChain = ModelPolicy[];
|
|
|
|
/**
|
|
* Context required by retry logic to apply availability policies on failure.
|
|
*/
|
|
export interface RetryAvailabilityContext {
|
|
service: ModelAvailabilityService;
|
|
policy: ModelPolicy;
|
|
}
|