diff --git a/coder/cloudflare-worker/main.tf b/coder/cloudflare-worker/main.tf index ab46765..2fc8517 100644 --- a/coder/cloudflare-worker/main.tf +++ b/coder/cloudflare-worker/main.tf @@ -579,8 +579,10 @@ LOGEOF ARGS="$DEPLOY_ENV" fi - # Run Claude Code in non-interactive mode - claude --print --dangerously-skip-permissions "/project:$TASK_TYPE $ARGS" 2>&1 | tee ~/task-output.log + # Run Claude Code in non-interactive mode with tool access + claude -p --dangerously-skip-permissions --verbose "/project:$TASK_TYPE $ARGS" 2>&1 | tee ~/task-output.log + EXIT_CODE=$? + echo "Claude exited with code: $EXIT_CODE" | tee -a ~/task-output.log echo "Task completed. Output saved to ~/task-output.log" diff --git a/src/services/coder.ts b/src/services/coder.ts index 655dabf..9086818 100644 --- a/src/services/coder.ts +++ b/src/services/coder.ts @@ -50,6 +50,18 @@ export class CoderClient { }, ); + // Handle 409 conflict — stale workspace from a previous orchestrator instance + if (res.status === 409) { + console.log(`[coder] workspace "${name}" already exists — deleting stale workspace and retrying`); + const existing = await this.findWorkspaceByName(name); + if (existing) { + await this.deleteWorkspace(existing.id); + // Wait for deletion to propagate + await new Promise((resolve) => setTimeout(resolve, 5000)); + } + return this.createWorkspace(task); + } + if (!res.ok) { const text = await res.text(); throw new Error(`Coder API error ${res.status}: ${text}`);