session-execution

À utiliser lors du travail ou de la révision de l'exécution de session, de la gestion des commandes, de l'état du shell, du streaming basé sur FIFO ou de la séparation stdout/stderr. Pertinent pour session.ts,…

npx skills add https://github.com/cloudflare/sandbox-sdk --skill session-execution

Session Execution

Read docs/SESSION_EXECUTION.md before working in this area. It explains the architecture for reliable command execution with stdout/stderr separation.

Key Concepts

Two execution modes:

  • Foreground (exec): Runs in main shell, state persists. Uses temp files for output capture.
  • Background (execStream/startProcess): Runs in subshell via FIFOs. Labelers prefix output in background.

Binary prefix contract:

  • Stdout: \x01\x01\x01 prefix per line
  • Stderr: \x02\x02\x02 prefix per line
  • Log parser reconstructs streams from these prefixes

Completion signaling:

  • Exit code written to <id>.exit file via atomic tmp + mv
  • Hybrid fs.watch + polling detects completion (robust on tmpfs/overlayfs)
  • Background mode uses labelers.done marker to ensure output is fully captured

When Developing

  • Understand why foreground uses temp files (bash waits for redirects to complete)
  • Understand why background uses FIFOs (concurrent streaming without blocking shell)
  • Test silent commands (cd, variable assignment) - these historically caused hangs
  • Test large output - buffering issues can cause incomplete logs

When Reviewing

Correctness checks:

  • Verify exit code handling is atomic (write to .tmp then mv)
  • Check FIFO cleanup in error paths
  • Ensure labelers.done is awaited before reading final output (background mode)

Race condition analysis:

Session execution has a mutex that serializes command execution per session. Before flagging race conditions:

  1. Check if operations happen within the same session (mutex protects)
  2. Check if operations are per-session vs cross-session (cross-session races are real)
  3. Refer to docs/CONCURRENCY.md for the full concurrency model

Common false positives:

  • "Concurrent reads/writes to session state" - mutex serializes these
  • "FIFO operations might race" - labelers are per-command, not shared

Actual concerns to watch for:

  • Cross-session operations without proper isolation
  • Cleanup operations that might affect still-running commands
  • File operations outside the mutex-protected section

Key Files

  • packages/sandbox-container/src/session.ts - Session class with exec/execStream
  • packages/sandbox-container/src/managers/SessionManager.ts - Mutex and lifecycle
  • packages/sandbox/src/clients/CommandClient.ts - SDK interface to session commands

Plus de skills de cloudflare

workerd-api-review
cloudflare
Optimisation des performances, conception et compatibilité des API, vulnérabilités de sécurité et conformité aux spécifications des normes pour la revue de code workerd. Couvre la prise en compte de tcmalloc…
official
workerd-safety-review
cloudflare
Sécurité mémoire, sécurité des threads, concurrence et motifs de détection critiques pour la revue de code workerd. Couvre les risques liés à la frontière V8/KJ, la gestion de la durée de vie,…
official
module-registry
cloudflare
Charger lorsque vous travaillez avec le registre de modules dans workerd — lecture, modification, débogage ou révision de la résolution, compilation, évaluation ou enregistrement de modules…
official
reproduce
cloudflare
Reproduire un problème GitHub cloudflare/agents en créant un projet minimal Agents/Worker et en le déployant sur un compte Cloudflare temporaire, puis signaler…
official
local-explorer
cloudflare
Comment ajouter des produits/ressources à l'explorateur local ou à l'API locale. À utiliser lors de l'implémentation de nouvelles API locales ou de routes d'interface utilisateur sous…
official
commit-categories
cloudflare
Règles de catégorisation des commits pour les journaux de modifications et les résumés "nouveautés". DOIT être chargé avant de catégoriser les commits dans les commandes de journal de modifications ou de nouveautés. Fournit…
official
architecture
cloudflare
Utiliser lors de la première navigation dans la base de code, de l'ajout d'une nouvelle méthode client, de l'ajout d'un nouveau gestionnaire/service de conteneur, ou de la compréhension du flux d'une requête…
official
changesets
cloudflare
À utiliser lors de la création d'un changeset, de la préparation d'une version ou de l'incrémentation des versions. Couvre les packages à référencer, la manière de rédiger les descriptions de changeset destinées aux utilisateurs,…
official