Aller au contenu
English

LoopTaskOptions

import type { LoopTaskOptions } from "@elie-laloum/outpost";
  • maxRoundsRequis
    number
    Entier sûr strictement positif limitant les tours logiques, reprises comprises. Rejouer une phase interrompue conserve son tour mais consomme une tentative supplémentaire du workflow.
  • attemptRequis
    (context: LoopTaskContext, feedback: string | undefined) => T | Promise<T>
    Produit le résultat candidat depuis le contexte de phase et le feedback du refus précédent ; feedback vaut undefined au premier tour. Les résultats persistés doivent être du JSON sans perte ou undefined.
  • checkRequis
    (context: LoopTaskContext, result: T) => LoopCheckResult | Promise<LoopCheckResult>
    Accepte le candidat avec done: true ou demande un autre tour avec done: false et un feedback textuel. Peut appeler un agent relecteur ; déclarer son usage via le contexte. Une exception fait échouer la tâche.
  • cacheOptionnel
    TaskCacheOptions | undefined
    Cache optionnel du résultat accepté de la boucle ; une correspondance saute tous les tours et n’enregistre aucun tour.
  • keyRequis
    string
    Clé stable du nœud utilisée par les dépendances, checkpoints et événements de boucle.
  • afterOptionnel
    readonly Task<unknown>[] | undefined
    Dépendances devant réussir avant le premier tour ; leurs résultats sont accessibles via context.value.
  • conditionOptionnel
    ((context: TaskContext) => boolean | Promise<boolean>) | undefined
    Prédicat évalué avant que la boucle démarre ou reprenne ; false ignore la tâche et ses dépendantes.
  • timeoutMsOptionnel
    number | undefined
    Délai coopératif pour une exécution de tour, essai et vérification compris ; renouvelé à la reprise d’une phase interrompue.
export interface LoopTaskOptions<T> extends Pick<
  TaskOptions<T>,
  "key" | "after" | "condition" | "timeoutMs" | "cache"
> {
  readonly maxRounds: number;
  readonly attempt: (
    context: LoopTaskContext,
    feedback: string | undefined,
  ) => T | Promise<T>;
  readonly check: (
    context: LoopTaskContext,
    result: T,
  ) => LoopCheckResult | Promise<LoopCheckResult>;
}