vercel-sandbox

작성자: sentry

Investigate Vercel Sandbox lifecycle, timeout, snapshot, and persistence behavior. Use when users ask about Vercel Sandbox, `@vercel/sandbox`,…

npx skills add https://github.com/getsentry/junior --skill vercel-sandbox

Investigate Vercel Sandbox using current official docs, installed SDK contracts, and only then any consumer-specific integration code.

Step 1: Classify the request

Pick the narrowest reference set before answering:

Request typeRead first
SDK/API behavior, lifecycle semantics, snapshots, stable vs beta persistencereferences/api-surface.md
Product-level usage patterns and architectural choicesreferences/common-use-cases.md
Broken behavior, confusing docs, missing files, or suspected persistence bugsreferences/troubleshooting-workarounds.md

If the task spans categories, load only the relevant files above.

Step 2: Establish which sandbox model applies

  1. Inspect the installed @vercel/sandbox version and local types before trusting any doc page or changelog.
  2. If local types only expose sandboxId, Sandbox.get({ sandboxId }), extendTimeout, and snapshot-backed source, treat the runtime as stable 1.x ephemeral sandboxes.
  3. If local code and types expose named sandboxes, name, persistent, session updates, or automatic resume after stop, treat the runtime as the persistent beta model.
  4. Qualify time-sensitive claims with a date or retrieval note.

Step 3: Apply core guardrails

  1. Distinguish three separate clocks before diagnosing workspace loss:
    • Vercel function/runtime timeout
    • Application/request timeout in the embedding system
    • Sandbox timeout
  2. On stable 1.x, Sandbox.get({ sandboxId }) only helps while the sandbox is still alive.
  3. On stable 1.x, once the sandbox stops, its filesystem is gone. Do not describe that as resumable persistence.
  4. sandbox.snapshot() is not workspace durability. It creates a new snapshot artifact and stops the source sandbox.
  5. Snapshots and persistent beta solve different problems:
    • snapshots create new starting points
    • persistent beta preserves named workspace state across sessions
  6. In embedded systems, inspect the consumer's persistence wiring before concluding that Vercel destroyed the workspace immediately.
  7. Do not infer persistent-beta behavior from a changelog alone. Confirm the installed SDK and local call sites.

Step 4: Investigate the Vercel surface first

  1. Check the installed SDK surface first:
    • installed @vercel/sandbox types
    • official stable docs for concepts, snapshots, SDK reference, and limits
    • persistent-beta changelog only if named persistence is relevant
  2. Determine whether the question is about:
    • active sandbox reuse
    • stopped sandbox recovery
    • snapshot-based warm starts
    • persistent named workspaces
  3. Establish which timeout fired first and whether the sandbox should still have been active.

Step 5: Inspect consumer code only when the task is app-specific

For repo-local debugging in Junior, inspect:

  1. timeout budget alignment:
    • packages/junior/src/chat/config.ts
    • packages/junior/src/chat/app/production.ts
  2. sandbox identity persistence and reuse:
    • packages/junior/src/chat/runtime/thread-state.ts
    • packages/junior/src/chat/runtime/turn-preparation.ts
    • packages/junior/src/chat/sandbox/session.ts
  3. whether timeout paths actually resume:
    • packages/junior/src/chat/agent/index.ts
    • packages/junior/src/chat/agent/resume.ts
    • packages/junior/src/chat/runtime/agent-continue-runner.ts
  4. where sandbox metadata is persisted:
    • packages/junior/src/chat/runtime/reply-executor.ts
  5. whether consumer-specific snapshots are being confused with Vercel product persistence:
    • packages/junior/src/chat/sandbox/README.md

Step 6: Recommend the smallest correct fix

Choose the narrowest fix that matches the diagnosed failure mode:

  1. Sandbox still alive but next turn started fresh:
    • Persist sandbox identity earlier.
    • Resume from the active sandbox instead of recreating it.
  2. Sandbox actually stopped:
    • Increase sandbox timeout or extend it while work is active.
    • Externalize intermediate outputs if they must survive stop.
  3. Confusion caused by docs drift:
    • Align implementation advice to the installed SDK, not the newest beta docs.
  4. Need true durability across stop/timeout boundaries:
    • Use external storage or migrate intentionally to the persistent beta model after confirming API availability.

Step 7: Return a concrete diagnosis

Default report structure:

  1. Active sandbox model: stable-ephemeral or persistent-beta
  2. What likely timed out first
  3. Whether the sandbox probably still existed after the failed turn
  4. Whether workspace loss came from Vercel stop/destruction or consumer state handling
  5. Smallest next fix, with the exact file(s) or SDK change required

sentry의 다른 스킬

generate-frontend-forms
sentry
Sentry의 새로운 폼 시스템을 사용하여 폼을 생성하는 가이드입니다. 폼, 폼 필드, 유효성 검사 또는 자동 저장 기능을 구현할 때 사용하세요.
official
sentry-snapshots-cocoa
sentry
Apple/Cocoa 프로젝트를 위한 전체 Sentry Snapshots 설정입니다. "SnapshotPreviews 설정", "Apple 스냅샷 테스트 설정", "Apple 스냅샷 업로드" 요청 시 사용하세요.
official
architecture-review
sentry
직원 수준의 코드베이스 건강 검토. 모놀리식 모듈, 무음 실패, 타입 안전성 격차, 테스트 커버리지 구멍, LLM 친화성 문제를 찾습니다.
official
linear-type-labeler
sentry
Linear 이슈를 분류하고, 각 이슈의 제목과 설명 내용을 기반으로 Sentry 워크스페이스의 레이블 분류 체계에서 Type 레이블을 적용합니다.
official
sentry-flutter-sdk
sentry
Flutter 및 Dart를 위한 완전한 Sentry SDK 설정입니다. "Flutter에 Sentry 추가", "sentry_flutter 설치", "Dart에서 Sentry 설정" 또는 오류 구성을 요청받았을 때 사용하세요.
official
sentry-svelte-sdk
sentry
Svelte 및 SvelteKit을 위한 완전한 Sentry SDK 설정입니다. "Svelte에 Sentry 추가", "SvelteKit에 Sentry 추가", "@sentry/sveltekit 설치" 또는 구성 요청 시 사용하세요.
official
vercel-react-best-practices
sentry
Vercel Engineering의 React 및 Next.js 성능 최적화 가이드라인입니다. 이 스킬은 React/Next.js 코드를 작성, 검토 또는 리팩토링할 때 사용해야 합니다.
official
sentry-tanstack-start-sdk
sentry
TanStack Start React용 전체 Sentry SDK 설정. "TanStack Start에 Sentry 추가", "@sentry/tanstackstart-react 설치" 또는 오류 구성 요청 시 사용…
official