Aller au contenu
English

openWorkspace

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

Ouvre un workspace sur un checkout Git hôte : prend son verrou, prépare le checkout ou le worktree choisi par la politique de branche, copie copies, puis exécute workspaceReady. Il sert des sandboxes successives, une à la fois, jusqu’à close(). Un verrou détenu par un processus actif échoue avec le code conflict au lieu d’attendre.

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

  • optionsOptionnel
    WorkspaceOptions | undefined
    Dépôt, politique de branche, copies, hooks, délais par étape, quota de stockage, libellé, signal d’annulation et hub d’observation.
  • 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.signalOptionnel
    AbortSignal | undefined
    Annule l’ouverture : vérifié avant l’allocation et transmis à la réservation de stockage et aux commandes workspaceReady. Un workspace ouvert l’ignore.
  • 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.hooksOptionnel
    LifecycleHooks | undefined
    Commandes de préparation : workspaceReady une fois à l’ouverture du workspace, puis hostReady et sandboxReady pour chaque sandbox qui l’utilise, sauf si cette sandbox passe ses propres hooks. Chaque commande s’arrête après 600000 (10 minutes) sauf si elle fixe deadlineMs ; une sortie non nulle échoue avec le code process.

Promise<Workspace>

export declare function openWorkspace(
  options?: WorkspaceOptions,
): Promise<Workspace>;