Skip to content

@aeye/ai — Types

Types specific to the AI layer.

Context Types

AIBaseContext<T>

typescript
interface AIBaseContext<T extends AIBaseTypes> {
  ai: AI<T>;
  metadata?: AIMetadata<T>;
  signal?: AbortSignal;
}

AIContext<T>

User context merged with AIBaseContext:

typescript
type AIContext<T> = AIBaseContext<T> & UserContext<T>;

AIContextRequired<T>

Context fields that must be provided at call time (fields not covered by defaults/providedContext).

AIContextOptional<T>

Optional wrapper making all context fields optional.

Metadata Types

AIBaseMetadata

typescript
interface AIBaseMetadata<TProviders> {
  model?: ModelInput;
  required?: ModelCapability[];
  optional?: ModelCapability[];
  requiredParameters?: ModelParameter[];
  optionalParameters?: ModelParameter[];
  providers?: {
    allow?: TProviders[];
    deny?: TProviders[];
  };
  pricing?: RangeConstraint<ModelPricing>;
  contextWindow?: RangeConstraint<number>;
  outputTokens?: RangeConstraint<number>;
  metrics?: RangeConstraint<ModelMetrics>;
  weights?: ModelSelectionWeights;
  weightProfile?: string;
  tier?: ModelTier;
}

RangeConstraint<T>

typescript
interface RangeConstraint<T> {
  min?: Partial<T>;
  max?: Partial<T>;
  target?: Partial<T>;
}

Hooks

AIHooks<T>

typescript
interface AIHooks<T extends AIBaseTypes> {
  beforeModelSelection?: (ctx, request, metadata) => AIMetadata | Promise<AIMetadata>;
  onModelSelected?: (ctx, request, selected) => SelectedModel | void | Promise<...>;
  beforeRequest?: (ctx, request, selected, estimatedUsage, estimatedCost) => void | Promise<void>;
  afterRequest?: (ctx, request, response, complete, selected, usage, cost) => void | Promise<void>;
  onError?: (errorType, message, error?, ctx?, request?) => void;
}

Provider Types

Provider<TConfig>

typescript
interface Provider<TConfig = any> {
  readonly name: string;
  readonly config: TConfig;
  defaultMetadata?: any;
  createExecutor?(): Executor;
  createStreamer?(): Streamer;
  generateImage?(): Function;
  editImage?(): Function;
  analyzeImage?(): Function;
  generateSpeech?(): Function;
  transcribe?(): Function;
  embed?(): Function;
  listModels?(): Promise<ModelInfo[]>;
  checkHealth?(): Promise<boolean>;
}

Configuration

AIConfig

typescript
interface AIConfig<TContext, TMetadata, TProviders> {
  defaultContext?: StrictPartial<TContext>;
  providedContext?: (ctx) => Promise<StrictPartial<TContext>>;
  defaultMetadata?: StrictPartial<TMetadata & AIBaseMetadata>;
  providedMetadata?: (meta) => Promise<StrictPartial<TMetadata> & AIBaseMetadata>;
  providers: TProviders;
  models?: ModelInfo[];
  modelOverrides?: ModelOverride[];
  modelHandlers?: ModelHandler[];
  modelSources?: ModelSource[];
  defaultWeights?: ModelSelectionWeights;
  weightProfiles?: Record<string, ModelSelectionWeights>;
  tokens?: TokenConfig;
  defaultCostPerMillionTokens?: number;
}

Statistics

LibraryStats

typescript
interface LibraryStats {
  totalModels: number;
  modelsByProvider: Record<string, number>;
  totalRequests: number;
  successfulRequests: number;
  failedRequests: number;
  averageCost: number;
  averageLatency: number;
}

Released under the GPL-3.0 License.