Aller au contenu
English

dispatch

import { dispatch } from "@elie-laloum/outpost";

Exécute un brief dans une sandbox allouée pour cet appel, intègre la branche en cas de succès, puis ferme la sandbox. En cas d’échec, la sandbox est fermée, le worktree est conservé et le recovery de l’erreur indique la branche et le répertoire. Avec passes supérieur à 1, chaque passe est un dispatch distinct qui s’arrête dès qu’un marqueur de fin apparaît.

Exemple complet et règles détaillées.

  • optionsRequis
    DispatchRequest<T>
    Réglages de la sandbox (dépôt, branche, provider, hooks) combinés avec l’agent, le brief, le contrat de réponse et les limites.
  • options.includeUncommittedOptionnel
    boolean | undefined
    Providers distants uniquement : envoie aussi les modifications non commitées du worktree géré et ses fichiers non suivis et non ignorés, false par défaut. Sans cette option, la synchronisation échoue avec le code workspace quand la sandbox touche l’un de ces fichiers, ce qui inclut toute entrée de copies non ignorée par un .gitignore commité.
  • options.agentOptionnel
    CliAgent | CustomAgent | ReplayAgent | FallbackAgent
    Agent par défaut de dispatch(), resume(), fork() et attach() sur cette sandbox ; l’agent d’une opération le remplace. Sur un provider distant avec bootstrap actif, son premier candidat est installé à l’allocation ; attach() refuse un agent de secours sur tous les providers.
  • options.sandboxProviderOptionnel
    SandboxProvider | undefined
    Provider qui alloue l’environnement, createDockerSandboxProvider() par défaut. Un provider distant exige une branche named ou integrate et prend integrate par défaut.
  • options.workspaceOptionnel
    Workspace | undefined
    Workspace ouvert dans lequel travailler, issu d’openWorkspace() ; close() le laisse ouvert. Le combiner avec repository, branch, copies ou storageQuota, ou passer un workspace déjà lié à une sandbox ouverte, échoue avec le code configuration.
  • options.hooksOptionnel
    LifecycleHooks | undefined
    Commandes de préparation, chacune tenue de sortir avec 0 avant son deadlineMs, 600000 par défaut (10 minutes) : workspaceReady sur l’hôte une fois un nouveau worktree créé, puis hostReady (hôte, dans l’ordre) et sandboxReady (sandbox, toutes ensemble) en parallèle ; une sortie non nulle fait échouer la préparation avec le code process. Avec un workspace fourni, workspaceReady ne s’exécute pas et les hooks donnés ici remplacent les hostReady et sandboxReady du workspace.
  • options.signalOptionnel
    AbortSignal | undefined
    Son annulation interrompt la préparation de la sandbox : allocation, amorçage du dépôt, installation de l’agent et hooks de préparation. createSandbox() cesse de le surveiller une fois la sandbox renvoyée.
  • options.loggingOptionnel
    Logging | undefined
    Journal de chaque dispatch sur cette sandbox, par défaut un journal local sous .outpost/storage ; stdout affiche la progression à la place, false le désactive, et un objet règle transporter, verbose et replayable. Le logging propre d’un dispatch le remplace.
  • options.bootstrapOptionnel
    boolean | undefined
    Installe dans une sandbox distante un agent CLI intégré absent, dans sa version épinglée, avant sa première utilisation ; true par défaut. Les providers montés et hôte n’installent rien : le CLI doit être dans l’image ou sur l’hôte.
  • options.conversationHomeOptionnel
    string | undefined
    Répertoire de l’hôte utilisé à la place de votre répertoire personnel pour stocker et retrouver les conversations natives capturées. Par défaut : votre répertoire personnel pour les transcriptions Claude et Codex, le dépôt pour les bundles de session Copilot et Kimi.
  • options.recoveryTransportOptionnel
    Transport | undefined
    Providers distants uniquement : avant l’application des modifications rapatriées, archive la sauvegarde de l’hôte dans ce transport en plus de .outpost/recovery. Les archives survivent à la sandbox.
  • options.activityTransportOptionnel
    Transport | undefined
    Transport de l’enregistrement d’activité de cette sandbox, par défaut le stockage local sous .outpost/storage. L’enregistrement est supprimé après une fermeture propre et conservé avec une phase d’échec quand le nettoyage échoue.
  • options.observationOptionnel
    ObservationHub | undefined
    Hub qui reçoit les opérations Git, de copie, de hook, d’intégration et de nettoyage de ce workspace. L’appelant en reste propriétaire ; le workspace ne le ferme jamais.
  • options.storageQuotaOptionnel
    Omit<StorageReservationOptions, "signal"> | undefined
    Admission de stockage vérifiée avant l’ouverture du workspace : réserve reserveBytes et échoue avec le code configuration si l’usage sous .outpost plus les réservations actives dépasseraient maxBytes. La réservation est libérée à la fermeture du workspace.
  • options.repositoryOptionnel
    string | undefined
    Chemin dans le checkout Git hôte, par défaut le répertoire de travail du processus. Outpost travaille depuis le répertoire racine du checkout ; un répertoire indisponible échoue avec le code workspace.
  • options.branchOptionnel
    BranchPolicy | undefined
    Politique de branche : current, named ou integrate. { mode: “current” } par défaut ; createSandbox() et dispatch() sur un provider distant utilisent integrate par défaut.
  • options.copiesOptionnel
    readonly string[] | undefined
    Fichiers ou dossiers relatifs au dépôt, copiés depuis le checkout hôte dans le nouveau worktree avant workspaceReady ; les entrées absentes sont ignorées. Exige named ou integrate, et les chemins absolus, avec .. ou .git échouent avec le code configuration. Une copie non suivie ou ignorée fait conserver le worktree à la fermeture. Sur un provider distant sans includeUncommitted, une copie non ignorée par un .gitignore commité fait échouer la première synchronisation avec le code workspace.
  • options.limitsOptionnel
    StageLimits | undefined
    Délais en millisecondes de copie, de préparation Git, de collecte des commits et d’intégration. Au-delà, l’étape échoue avec le code timeout, ou conflict pour l’intégration.
  • options.labelOptionnel
    string | undefined
    Nom utilisé dans la branche integrate (outpost/<label>-<id>), le dossier du worktree sous .outpost/workspaces et le journal d’échec au démarrage ; mis en minuscules, autres caractères remplacés par -, tronqué à 48.
  • options.briefRequis
    Brief
    Tâche confiée à l’agent : texte littéral ou brief lu depuis un fichier.
  • options.passesOptionnel
    number | undefined
    Nombre maximal de passes, 1 par défaut. Chaque passe relance le brief dans une nouvelle conversation, et le dispatch s’arrête à la première passe dont le texte contient un marqueur de fin. Doit valoir 1 avec response ou continuation.
  • options.untilOptionnel
    string | readonly string[] | undefined
    Marqueur ou marqueurs de fin recherchés dans le texte du dernier tour, <outpost>done</outpost> par défaut. Une liste vide désactive la recherche et toutes les passes s’exécutent ; les chaînes vides sont refusées.
  • options.idleMsOptionnel
    number | undefined
    Silence maximal accepté de l’agent, 600000 par défaut (10 minutes). Au-delà, le tour s’arrête avec le code timeout.
  • options.idleWarningMsOptionnel
    number | undefined
    Durée de silence après laquelle un événement d’avertissement est émis, puis répété au même intervalle ; 60000 par défaut.
  • options.settleMsOptionnel
    number | undefined
    Attente après un marqueur de fin avant d’arrêter un agent encore actif, 60000 par défaut. Le tour reste un succès.
  • options.deadlineMsOptionnel
    number | undefined
    Durée maximale de chaque processus d’agent, 3600000 par défaut (une heure). Au-delà, le tour échoue avec le code timeout.
  • options.expansionMsOptionnel
    number | undefined
    Délai de chaque expansion shell d’un brief fichier, 30000 par défaut. Au-delà, le dispatch échoue avec le code timeout.
  • options.steeringOptionnel
    Steering | undefined
    Contrôleur issu de createSteering(), attaché pendant tout le dispatch et libéré à sa fin. resume() et fork() ne le réutilisent pas.
  • options.continuationOptionnel
    { readonly id: string; readonly fork?: boolean; } | undefined
    Conversation native à continuer, par identifiant ; fork: true continue une copie et laisse l’originale intacte. Exige une seule passe et un agent qui sait reprendre.
  • options.responseOptionnel
    ResponseSpec<T> | undefined
    Contrat de réponse typée : la réponse balisée est analysée et validée, et une réponse invalide reçoit jusqu’à repairs tours de correction. Exige une seule passe.
  • options.telemetryOptionnel
    DispatchTelemetry | undefined
    Instrumentation de tout le dispatch, préparation, synchronisation et nettoyage compris. Ses échecs ne changent pas le résultat.
  • options.observeOptionnel
    ((event: AgentObservation) => void) | undefined
    Reçoit chaque événement normalisé de l’agent avec son numéro de passe et son horodatage. Une exception levée ici est collectée dans observerErrors et ne change pas le résultat.
  • options.warnOptionnel
    ((message: string) => void) | undefined
    Reçoit les avertissements non bloquants, par exemple un agent silencieux ou un problème de stockage de conversation.
  • options.diagnosticOptionnel
    ((message: string) => void) | undefined
    Reçoit les messages de diagnostic, par exemple la taille estimée en tokens de chaque commande développée du brief.

Promise<DispatchResult<T>>

export declare function dispatch<T = undefined>(
  options: DispatchRequest<T>,
): Promise<DispatchResult<T>>;