nicholai acd04dd6ac 🎉 BREAKTHROUGH: WebSocket working! Real-time streaming functional
 What's Working:
- WebSocket connections established (patched worker to intercept upgrades)
- Real-time event streaming: Agent → DO → Browser
- Terminal panel showing live command execution
- Agent chat panel showing LLM thoughts
- Full infrastructure: UI → API → DO → SSH Proxy → LangGraph Agent

🔧 Key Changes:
- Created standalone DO worker at workers/bandit-agent-do/
- Deployed DO as separate Worker (bandit-agent-do)
- Updated wrangler.jsonc to reference external DO via script_name
- Modified patch-worker.js to intercept WS upgrades before Next.js
- Added __name polyfill to fix esbuild helper
- Created pnpm workspace config for monorepo

📝 Architecture:
- Frontend (Next.js) → Cloudflare Worker
- Worker intercepts /api/agent/*/ws → forwards to DO
- DO (bandit-agent-do) → manages WebSocket connections
- DO → calls SSH Proxy API
- SSH Proxy → runs LangGraph agent → executes SSH commands
- Events stream back: SSH Proxy → DO → WebSocket → UI

🐛 Known Issue:
- Agent logic needs refinement (not parsing SSH output correctly)
- But core infrastructure is 100% functional!

This resolves all WebSocket and real-time streaming issues.
2025-10-09 15:10:16 -06:00

70 lines
1.6 KiB
JSON

/**
* For more details on how to configure Wrangler, refer to:
* https://developers.cloudflare.com/workers/wrangler/configuration/
*/
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "bandit-runner-app",
"main": ".open-next/worker.js",
"compatibility_date": "2025-03-01",
"compatibility_flags": [
"nodejs_compat",
"global_fetch_strictly_public"
],
"assets": {
"binding": "ASSETS",
"directory": ".open-next/assets"
},
"observability": {
"enabled": true
},
/**
* Durable Objects - External Worker
* https://developers.cloudflare.com/durable-objects/
* References the standalone DO worker to avoid bundling issues
*/
"durable_objects": {
"bindings": [
{
"name": "BANDIT_AGENT",
"class_name": "BanditAgentDO",
"script_name": "bandit-agent-do"
}
]
},
/**
* Environment Variables
* https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
*/
"vars": {
"SSH_PROXY_URL": "https://bandit-ssh-proxy.fly.dev",
"MAX_RUN_DURATION_MINUTES": "60",
"MAX_RETRIES_PER_LEVEL": "3"
}
/**
* Secrets (set via: wrangler secret put OPENROUTER_API_KEY)
* - OPENROUTER_API_KEY
* - ENCRYPTION_KEY
*/
/**
* D1 Database (uncomment when database is created)
* wrangler d1 create bandit-runs
*/
// "d1_databases": [
// {
// "binding": "DB",
// "database_name": "bandit-runs",
// "database_id": "YOUR_DATABASE_ID"
// }
// ],
/**
* R2 Bucket (uncomment when bucket is created)
* wrangler r2 bucket create bandit-logs
*/
// "r2_buckets": [
// {
// "binding": "LOGS",
// "bucket_name": "bandit-logs"
// }
// ]
}