dispatch
Rôle et comportement
Section intitulée « Rôle et comportement »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.
Paramètres et propriétés
Section intitulée « Paramètres et propriétés »optionsRequisDispatchRequest<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.includeUncommittedOptionnelboolean | undefinedProviders 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.agentOptionnelCliAgent | CustomAgent | ReplayAgent | FallbackAgentAgent 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.sandboxProviderOptionnelSandboxProvider | undefinedProvider qui alloue l’environnement, createDockerSandboxProvider() par défaut. Un provider distant exige une branche named ou integrate et prend integrate par défaut.options.workspaceOptionnelWorkspace | undefinedWorkspace 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.hooksOptionnelLifecycleHooks | undefinedCommandes 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.signalOptionnelAbortSignal | undefinedSon 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.loggingOptionnelLogging | undefinedJournal 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.bootstrapOptionnelboolean | undefinedInstalle 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.conversationHomeOptionnelstring | undefinedRé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.recoveryTransportOptionnelTransport | undefinedProviders 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.activityTransportOptionnelTransport | undefinedTransport 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.observationOptionnelObservationHub | undefinedHub 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.storageQuotaOptionnelOmit<StorageReservationOptions, "signal"> | undefinedAdmission 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.repositoryOptionnelstring | undefinedChemin 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.branchOptionnelBranchPolicy | undefinedPolitique de branche : current, named ou integrate. { mode: “current” } par défaut ; createSandbox() et dispatch() sur un provider distant utilisent integrate par défaut.options.copiesOptionnelreadonly string[] | undefinedFichiers 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.limitsOptionnelStageLimits | undefinedDé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.labelOptionnelstring | undefinedNom 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.briefRequisBriefTâche confiée à l’agent : texte littéral ou brief lu depuis un fichier.options.passesOptionnelnumber | undefinedNombre 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.untilOptionnelstring | readonly string[] | undefinedMarqueur 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.idleMsOptionnelnumber | undefinedSilence maximal accepté de l’agent, 600000 par défaut (10 minutes). Au-delà, le tour s’arrête avec le code timeout.options.idleWarningMsOptionnelnumber | undefinedDuré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.settleMsOptionnelnumber | undefinedAttente 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.deadlineMsOptionnelnumber | undefinedDurée maximale de chaque processus d’agent, 3600000 par défaut (une heure). Au-delà, le tour échoue avec le code timeout.options.expansionMsOptionnelnumber | undefinedDélai de chaque expansion shell d’un brief fichier, 30000 par défaut. Au-delà, le dispatch échoue avec le code timeout.options.steeringOptionnelSteering | undefinedContrô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; } | undefinedConversation 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.responseOptionnelResponseSpec<T> | undefinedContrat 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.telemetryOptionnelDispatchTelemetry | undefinedInstrumentation de tout le dispatch, préparation, synchronisation et nettoyage compris. Ses échecs ne changent pas le résultat.options.observeOptionnel((event: AgentObservation) => void) | undefinedReç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) | undefinedReçoit les avertissements non bloquants, par exemple un agent silencieux ou un problème de stockage de conversation.options.diagnosticOptionnel((message: string) => void) | undefinedReçoit les messages de diagnostic, par exemple la taille estimée en tokens de chaque commande développée du brief.
Promise<DispatchResult<T>>