Aller au contenu
English

SpeculationOptions

import type { SpeculationOptions } from "@elie-laloum/outpost";
  • durabilityOptionnel
    SpeculationDurability | undefined
    Enregistre la course via un Transport pour la reprendre après un plantage ou un arrêt de quota. Exige un provider doté de recover ; omettez-le pour une course en mémoire.
  • cleanupMsOptionnel
    number | undefined
    Attente de chaque fermeture de sandbox ou récupération de ressource, et des candidats en cours après une annulation, 30000 par défaut. Au-delà, le nettoyage reste en attente.
  • observationOptionnel
    ObservationHub | undefined
    Hub parent des événements de tous les candidats, délimités par clé de candidat ; il remplace l’observation propre à chaque request.
  • repositoryRequis
    string
    Checkout Git hôte. Son commit HEAD au premier démarrage de la course sert de baseline à toutes les branches candidates.
  • sandboxProviderRequis
    SandboxProvider
    Provider qui alloue la sandbox de chaque candidat. Le mode durable en exige un doté de recover : Docker ou Podman en mode monté.
  • candidatesRequis
    readonly SpeculativeCandidate<T>[]
    1 à 8 candidats aux clés uniques, démarrés dans l’ordre de la liste selon concurrency.
  • concurrencyOptionnel
    number | undefined
    Nombre maximal de candidats exécutés à la fois, de 1 à 8, 2 par défaut.
  • budgetRequis
    WorkflowBudget
    Limites partagées par tous les candidats. Chaque démarrage consomme une unité de attempts et la limite empêche tout nouveau démarrage ; atteindre une limite de tokens de usage annule les candidats en cours. Les tokens consommés dans validate ne sont pas comptés.
  • signalOptionnel
    AbortSignal | undefined
    Son annulation arrête les candidats en cours et termine la course avec le statut aborted.
  • sandboxOptionnel
    Pick<SandboxOptions, "hooks" | "storageQuota" | "limits" | "logging" | "bootstrap" | "conversationHome"> | undefined
    Réglages de sandbox appliqués à chaque candidat : hooks, bootstrap, logging, limits, storageQuota et conversationHome.
  • validateRequis
    (candidate: SpeculativeValidation<T>) => boolean | Promise<boolean>
    Décide si un candidat terminé est acceptable, à partir de sa sortie de dispatch et de sa sandbox active ; true l’accepte. Une exception marque le candidat failed.
export interface SpeculationOptions<T = undefined> {
  readonly durability?: SpeculationDurability;
  readonly cleanupMs?: number;
  readonly observation?: ObservationHub;
  readonly repository: string;
  readonly sandboxProvider: NonNullable<SandboxOptions["sandboxProvider"]>;
  readonly candidates: readonly SpeculativeCandidate<T>[];
  readonly concurrency?: number;
  readonly budget: WorkflowBudget;
  readonly signal?: AbortSignal;
  readonly sandbox?: Pick<
    SandboxOptions,
    | "hooks"
    | "bootstrap"
    | "logging"
    | "limits"
    | "storageQuota"
    | "conversationHome"
  >;
  readonly validate: (
    candidate: SpeculativeValidation<T>,
  ) => boolean | Promise<boolean>;
}