@@ -72,6 +72,12 @@ variable "experiment_report_tasks" {
7272 default = false
7373}
7474
75+ variable "experiment_report_tasks_interval" {
76+ type = number
77+ description = " How often to poll task status in seconds, or zero to disable."
78+ default = 0
79+ }
80+
7581variable "experiment_pre_install_script" {
7682 type = string
7783 description = " Custom script to run before installing Claude Code."
@@ -247,6 +253,40 @@ resource "coder_app" "claude_code_web" {
247253 subdomain = true
248254}
249255
256+ resource "coder_script" "task_reporter" {
257+ agent_id = var. agent_id
258+ display_name = " Task reporter"
259+ icon = var. icon
260+ command = <<- EOT
261+ #!/bin/bash
262+ set -e
263+ if [ -z "${ var . experiment_report_tasks_interval } " ] ;
264+ echo "Task polling is not enabled"
265+ exit 0
266+ fi
267+ if [ "${ var . experiment_report_tasks_interval } " = "0" ] ;
268+ echo "Task polling is not enabled"
269+ exit 0
270+ fi
271+ echo "Waiting for agentapi server to start on port 3284..."
272+ for i in $(seq 1 15); do
273+ if lsof -i :3284 | grep -q 'LISTEN'; then
274+ echo "agentapi server started on port 3284."
275+ break
276+ fi
277+ echo "Waiting... ($i/15)"
278+ sleep 1
279+ done
280+ if ! lsof -i :3284 | grep -q 'LISTEN'; then
281+ echo "Error: agentapi server did not start on port 3284 after 15 seconds."
282+ exit 1
283+ fi
284+ echo "Running status poller in the background..."
285+ coder exp task report-status --agentapi-url "http://localhost:3284" &
286+ EOT
287+ run_on_start = true
288+ }
289+
250290resource "coder_app" "claude_code" {
251291 slug = " claude-code"
252292 display_name = " Claude Code"
0 commit comments