session-execution

tarafından cloudflare

Oturum yürütme, komut işleme, kabuk durumu, FIFO tabanlı akış veya stdout/stderr ayrımı üzerinde çalışırken veya bunları incelerken kullanın. session.ts,… ile ilgilidir.

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

cloudflare tarafından daha fazla skill

workerd-api-review
cloudflare
Performans optimizasyonu, API tasarımı ve uyumluluğu, güvenlik açıkları ve workerd kod incelemesi için standart spesifikasyon uyumluluğu. tcmalloc farkındalığını kapsar…
official
workerd-safety-review
cloudflare
Bellek güvenliği, iş parçacığı güvenliği, eşzamanlılık ve workerd kod incelemesi için kritik tespit kalıpları. V8/KJ sınır tehlikeleri, ömür yönetimi,…
official
module-registry
cloudflare
workerd'de modül kaydı ile çalışırken yükleyin — modül çözümleme, derleme, değerlendirme veya kaydetme işlemlerini okuma, değiştirme, hata ayıklama veya inceleme…
official
reproduce
cloudflare
Bir cloudflare/agents GitHub sorununu, minimal bir Agents/Worker projesi oluşturup geçici bir Cloudflare hesabına dağıtarak yeniden üretin, ardından raporlayın…
official
local-explorer
cloudflare
Yerel gezgine veya yerel API'ye nasıl ürün/kaynak eklenir. Yeni yerel API'ler veya altındaki UI rotaları uygulanırken kullanılır.
official
commit-categories
cloudflare
Changelog ve "yenilikler" özetleri için commit kategorizasyon kuralları. Changelog veya yenilikler komutlarında commit'leri kategorize etmeden önce yüklenmelidir. Sağlar…
official
architecture
cloudflare
Kod tabanında ilk kez gezinirken, yeni bir istemci metodu eklerken, yeni bir konteyner işleyicisi/hizmeti eklerken veya bir isteğin nasıl aktığını anlamak için kullanın…
official
changesets
cloudflare
Bir değişiklik kümesi oluştururken, bir sürüm hazırlarken veya sürüm numaralarını yükseltirken kullanılır. Hangi paketlere başvurulacağını, kullanıcıya yönelik değişiklik kümesi açıklamalarının nasıl yazılacağını kapsar,…
official