createSandbox
Rôle et comportement
Section intitulée « Rôle et comportement »Alloue un environnement avec sandboxProvider et le garde ouvert pour enchaîner dispatchs, commandes et sessions de terminal jusqu’à ce que vous le fermiez. Sans workspace, elle en ouvre un que close() ferme aussi, par défaut sur le checkout du répertoire courant avec Docker. Si la préparation échoue, elle libère ce qu’elle a alloué, ferme le workspace qu’elle a ouvert et relance l’erreur.
Exemple complet et règles détaillées.
Paramètres et propriétés
Section intitulée « Paramètres et propriétés »optionsOptionnelSandboxOptions | undefinedWorkspace à utiliser ou à ouvrir (dépôt, branche, copies), provider, agent par défaut, hooks de préparation et réglages de synchronisation distante.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.agentOptionnelDispatchAgent | undefinedAgent 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.