원클릭으로
capability-worker
Handles sandbox (Daytona/E2B), browser automation (Steel), computer use, and tier gating
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Handles sandbox (Daytona/E2B), browser automation (Steel), computer use, and tier gating
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
View and search the AGIT audit trail. Show timeline of all agent actions with signatures, reversibility classes, and verification links.
Cryptographic signing + audit trail for every tool call. FIDES Ed25519 signatures + AGIT commit log. Every action is signed before execution, committed to an immutable audit trail, and classified into a reversibility class.
Undo, cancel, or compensate agent actions. Manages the 5-class reversibility model for all tool executions.
Handles FIDES/AGIT integration, reversibility model, tool registry, and step middleware
Handles infrastructure, database, auth, and build system features
Handles Stripe billing, BYOK vault, GAIA eval, analytics, landing page, and deploy prep
| name | capability-worker |
| description | Handles sandbox (Daytona/E2B), browser automation (Steel), computer use, and tier gating |
NOTE: Startup and cleanup are handled by worker-base. This skill defines the WORK PROCEDURE.
Features involving: Daytona SDK integration, E2B sandbox fallback, Steel.dev browser automation, Anthropic Computer Use, tier gating middleware.
None.
Read context: Read mission.md, .factory/library/architecture.md, .factory/research/daytona.md (for Daytona features). Read existing tier enforcement at services/api/src/middleware/tier-enforcement.ts and tiers config at services/api/src/config/tiers.ts.
Write tests first (TDD): Mock external SDK calls. Test the service interface, error handling, session management, and tier gating.
Sandbox services: Create a common interface and two implementations:
interface SandboxService {
createSandbox(opts: SandboxOpts): Promise<Sandbox>;
execCommand(sandboxId: string, cmd: string): Promise<ExecResult>;
writeFile(sandboxId: string, path: string, content: string): Promise<void>;
readFile(sandboxId: string, path: string): Promise<string>;
destroySandbox(sandboxId: string): Promise<void>;
}
services/api/src/sandbox/daytona.ts — primary, uses @daytona/sdkservices/api/src/sandbox/e2b.ts — fallback, uses @e2b/code-interpreterservices/api/src/sandbox/index.ts — router that tries Daytona first, falls back to E2BBrowser tool: Use steel-sdk at services/api/src/tools/browser.ts. Export: navigate, screenshot, click, type, extract. Register in tool registry with compensatable class.
Computer use: At services/api/src/tools/computer-use.ts. Uses Daytona desktop sandbox for isolation. Implements Anthropic Computer Use API pattern (screenshot → coordinate interaction).
Tier gating: Create services/api/src/middleware/tier-gate.ts that checks user tier and returns 403 with upgrade prompt for Free tier users accessing Pro+ features.
Handle missing credentials gracefully: All capability services must check for env vars and return clear "not configured" errors if API keys are missing. Never crash on missing credentials.
Verify:
bun run build passesbiome check . passes{
"salientSummary": "Built Daytona sandbox service with createSandbox/execCommand/writeFile/readFile/destroySandbox, E2B fallback with same interface, sandbox router with Daytona-first fallback logic, and tier-gate middleware. 22 tests passing.",
"whatWasImplemented": "services/api/src/sandbox/daytona.ts, services/api/src/sandbox/e2b.ts, services/api/src/sandbox/index.ts (router), services/api/src/middleware/tier-gate.ts. All sandbox services implement common SandboxService interface.",
"whatWasLeftUndone": "",
"verification": {
"commandsRun": [
{ "command": "cd services/api && bunx vitest run src/sandbox/ src/middleware/tier-gate", "exitCode": 0, "observation": "22 tests passed" },
{ "command": "bun run build", "exitCode": 0, "observation": "Clean build" }
],
"interactiveChecks": []
},
"tests": {
"added": [
{ "file": "services/api/src/sandbox/__tests__/daytona.test.ts", "cases": [
{ "name": "createSandbox returns sandbox with ID", "verifies": "Sandbox creation" },
{ "name": "auto-cleanup after TTL", "verifies": "Session management" }
]}
]
},
"discoveredIssues": []
}