UNPKG

claude-code-templates

Version:

CLI tool to setup Claude Code configurations with framework-specific commands, automation hooks and MCP Servers for your projects

443 lines (358 loc) 10.8 kB
# Cloudflare Sandbox Debugging Guide ## 🔍 Available Monitoring Tools ### 1. Launcher with Enhanced Logging **File**: `launcher.ts` - Detailed logging of each execution step - Worker availability checks - Code generation monitoring - Fallback to direct execution if worker unavailable - Colored terminal output for better readability ### 2. Real-time Monitor **File**: `monitor.ts` - Real-time performance metrics tracking - Worker health monitoring - Code generation time analysis - Sandbox execution monitoring - Memory usage tracking - Comprehensive error reporting ### 3. Wrangler CLI Tools **Built-in Cloudflare debugging tools**: - `npx wrangler tail` - Real-time log streaming - `npx wrangler containers list` - Container status - `npx wrangler deployments list` - Deployment history - `npx wrangler dev` - Local development server ## 🚨 Common Troubleshooting ### Problem: "Container not ready" **Symptoms**: ``` Error: Container not ready. Please wait 2-3 minutes after deployment. ``` **Solutions**: 1. **Wait for provisioning**: ```bash # Check container status npx wrangler containers list # Expected output after provisioning: # ✓ Container ready for sandbox execution ``` 2. **Verify deployment**: ```bash npx wrangler deployments list # Check deployment status and timestamp ``` 3. **Check worker logs**: ```bash npx wrangler tail # Look for initialization errors ``` ### Problem: "Worker not responding" **Symptoms**: ``` Worker health check failed: fetch failed ``` **Debugging Steps**: 1. **Verify worker is deployed**: ```bash npx wrangler deploy # Should return worker URL ``` 2. **Test worker endpoint**: ```bash curl https://your-worker.your-subdomain.workers.dev # Should return usage instructions ``` 3. **Check local development**: ```bash # For local testing npm run dev # Test local endpoint curl http://localhost:8787 ``` ### Problem: "Anthropic API key not set" **Symptoms**: ``` Error: ANTHROPIC_API_KEY is required ``` **Solutions**: 1. **Set as Wrangler secret (Production)**: ```bash npx wrangler secret put ANTHROPIC_API_KEY # Paste your key when prompted ``` 2. **Set in .dev.vars (Local Development)**: ```bash # Create .dev.vars file: echo "ANTHROPIC_API_KEY=sk-ant-your-key-here" > .dev.vars ``` 3. **Verify secret is set**: ```bash npx wrangler secret list # Should show ANTHROPIC_API_KEY ``` ### Problem: "Sandbox execution timeout" **Symptoms**: ``` Error: Sandbox execution exceeded 30 second timeout ``` **Solutions**: 1. **Use Durable Objects for longer operations**: ```typescript // In wrangler.toml, ensure Durable Objects are configured [[durable_objects.bindings]] name = "Sandbox" class_name = "Sandbox" ``` 2. **Optimize code generation**: ```typescript // Request more concise code const prompt = `Generate SIMPLE Python code...`; ``` 3. **Break into smaller tasks**: ```bash # Instead of complex operations, break into steps npx claude-code-templates --sandbox cloudflare \ --prompt "Step 1: Create data structure" ``` ### Problem: "Docker not running" (Local Development) **Symptoms**: ``` Error: Docker daemon is not running ``` **Solutions**: 1. **Start Docker Desktop**: - macOS: Open Docker Desktop application - Linux: `sudo systemctl start docker` - Windows: Start Docker Desktop 2. **Verify Docker is running**: ```bash docker ps # Should list running containers ``` 3. **Alternative: Deploy directly to Cloudflare**: ```bash # Skip local testing, deploy directly npx wrangler deploy ``` ## 📊 Using the Monitor for Debugging ### Basic Monitoring Command: ```bash # Monitor a simple operation node monitor.ts "Calculate factorial of 5" your_api_key # Monitor with custom worker URL node monitor.ts "Fibonacci 10" your_api_key https://your-worker.workers.dev ``` ### Monitor Output Example: ``` [14:32:15] 🚀 Starting enhanced Cloudflare sandbox monitoring ============================================================ 🖥️ SYSTEM INFORMATION ============================================================ Node.js Version: v20.11.0 Platform: darwin Architecture: arm64 Memory Usage: 45MB / 128MB ============================================================ [14:32:16] 🔍 Checking Cloudflare Worker health... [14:32:16] Worker is responding [14:32:16] Status: 200 OK [14:32:17] 🤖 Starting code generation with Claude... [14:32:19] Code generated in 2147ms [14:32:19] Model: claude-sonnet-4-5-20250929 [14:32:19] Tokens used: 156 in, 89 out [14:32:19] Code length: 234 characters [14:32:19] ⚙️ Executing in Cloudflare Sandbox... [14:32:21] Sandbox execution completed in 1856ms [14:32:21] Exit code: 0 (success) [14:32:21] Output length: 3 characters ============================================================ 📊 PERFORMANCE METRICS ============================================================ Total Execution Time: 4123ms ├─ Code Generation: 2147ms └─ Sandbox Execution: 1856ms Memory Usage: 48MB Status: Success ============================================================ ``` ## 🎯 Debugging Specific Scenarios ### 1. Code Generation Issues ```bash # Use monitor to see exact Claude API interaction node monitor.ts "Complex prompt that might fail" # Look for: # - Token usage (may hit limits) # - Generated code preview # - Model used (should be claude-sonnet-4-5) ``` ### 2. Sandbox Execution Problems ```bash # Check worker logs while testing npx wrangler tail & node launcher.ts "Test prompt" # Look for: # - Sandbox creation errors # - File write failures # - Python execution errors ``` ### 3. Performance Issues ```bash # Use monitor to identify bottlenecks node monitor.ts "Your prompt" # Compare metrics: # - Code Generation Time (Claude API) # - Sandbox Execution Time (Cloudflare) # - Total Round Trip Time ``` ### 4. Network/Deployment Issues ```bash # Check deployments npx wrangler deployments list # View recent logs npx wrangler tail --format=pretty # Test worker health curl -v https://your-worker.workers.dev ``` ## 🛠 Advanced Configuration ### Enable Debug Mode: ```bash # In wrangler.toml [env.development] vars = { DEBUG = "true" } # Or in .dev.vars for local development DEBUG=true ANTHROPIC_API_KEY=your_key ``` ### Custom Timeouts: ```typescript // In src/index.ts const result = await sandbox.exec('python /tmp/code.py', { timeout: 60000, // 60 seconds }); ``` ### Verbose Logging: ```bash # Set log level export WRANGLER_LOG=debug # Run with verbose output npx wrangler deploy --verbose ``` ## 📋 Debugging Checklist ### Before Reporting an Issue: - [ ] Cloudflare Workers account active (Paid plan if using Durable Objects) - [ ] Anthropic API key valid and has credits - [ ] Worker deployed successfully (`npx wrangler deploy`) - [ ] Waited 2-3 minutes after first deployment - [ ] Containers provisioned (`npx wrangler containers list`) - [ ] Secrets configured (`npx wrangler secret list`) - [ ] Docker running (for local development) - [ ] Used monitor tool for detailed metrics - [ ] Checked worker logs (`npx wrangler tail`) - [ ] Tested with simple prompt first ### Information to Include in Bug Reports: - Full monitor output showing timestamps and metrics - Worker URL or local development environment - Exact prompt that caused the issue - Components installed (if applicable) - Worker logs from `npx wrangler tail` - Container status from `npx wrangler containers list` - Error messages with full stack traces - Node.js and Wrangler versions ## 🚀 Performance Optimization Tips ### 1. Minimize Code Generation Time ```typescript // Be specific to reduce Claude's thinking time const prompt = `Generate a single Python function to calculate factorial. Use recursion. Include only the function, no tests.`; ``` ### 2. Use Code Interpreter API ```typescript // Faster than exec for Python import { getCodeInterpreter } from '@cloudflare/sandbox'; const interpreter = getCodeInterpreter(env.Sandbox, userId); const result = await interpreter.notebook.execCell(pythonCode); ``` ### 3. Implement Caching ```typescript // Cache generated code for common prompts const cacheKey = `code:${hashPrompt(prompt)}`; let code = await env.CACHE.get(cacheKey); if (!code) { code = await generateCode(prompt); await env.CACHE.put(cacheKey, code, { expirationTtl: 3600 }); } ``` ### 4. Stream Responses ```typescript // Stream output for better perceived performance return new Response( new ReadableStream({ async start(controller) { const result = await sandbox.exec(command, { onStdout: (data) => controller.enqueue(encoder.encode(data)), }); controller.close(); }, }) ); ``` ## 🔗 Useful Commands Reference ### Deployment & Management ```bash # Deploy worker npx wrangler deploy # Deploy to specific environment npx wrangler deploy --env production # Rollback deployment npx wrangler rollback # Delete deployment npx wrangler delete ``` ### Secrets Management ```bash # Add secret npx wrangler secret put SECRET_NAME # List secrets npx wrangler secret list # Delete secret npx wrangler secret delete SECRET_NAME ``` ### Local Development ```bash # Start dev server npm run dev # Start with specific port npx wrangler dev --port 3000 # Start with remote Durable Objects npx wrangler dev --remote ``` ### Monitoring & Logs ```bash # Tail logs in real-time npx wrangler tail # Tail with pretty formatting npx wrangler tail --format=pretty # Tail specific deployment npx wrangler tail --deployment-id <id> # Filter logs npx wrangler tail --status error ``` ### Container Management ```bash # List containers npx wrangler containers list # Get container details npx wrangler containers describe <container-id> ``` ## 💡 Tips & Best Practices 1. **Always test locally first**: Use `npm run dev` before deploying 2. **Monitor metrics**: Use the monitor tool to track performance 3. **Check logs regularly**: Set up `npx wrangler tail` during testing 4. **Use environment-specific configs**: Separate dev/prod in wrangler.toml 5. **Implement error handling**: Catch and log all errors properly 6. **Set appropriate timeouts**: Balance between user experience and resource usage 7. **Use Durable Objects wisely**: Only for stateful operations 8. **Cache aggressively**: Reduce API calls with smart caching 9. **Stream when possible**: Better UX for long operations 10. **Version your deployments**: Tag releases for easy rollback --- **With these tools and techniques, you can effectively debug and optimize your Cloudflare sandbox implementation.**