@@ -72,6 +72,12 @@ variable "experiment_report_tasks" {
72
72
default = false
73
73
}
74
74
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
+
75
81
variable "experiment_pre_install_script" {
76
82
type = string
77
83
description = " Custom script to run before installing Claude Code."
@@ -247,6 +253,40 @@ resource "coder_app" "claude_code_web" {
247
253
subdomain = true
248
254
}
249
255
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
+
250
290
resource "coder_app" "claude_code" {
251
291
slug = " claude-code"
252
292
display_name = " Claude Code"
0 commit comments