From b72c832d171386f801776993f5dead0484164428 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 22 Oct 2025 16:19:01 +0100 Subject: [PATCH 1/6] chore: update coder/dogfood template to reference coder_task.prompt Relates to https://github.com/coder/internal/issues/1065 Updates the coder/dogfood template to reference new Task features in provider version 2.12.0: - Adds a `coder_ai_task` resource - Passes `coder_ai_task.task.prompt` into Claude Code module - Updates Claude Code module to 4.0.0 (ref: https://github.com/coder/registry/pull/488) - Removes "AI Prompt" parameter --- dogfood/coder/main.tf | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 8b2d083e3b5f2..a2a46e4169f65 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -37,7 +37,7 @@ locals { repo_base_dir = data.coder_parameter.repo_base_dir.value == "~" ? "/home/coder" : replace(data.coder_parameter.repo_base_dir.value, "/^~\\//", "/home/coder/") repo_dir = replace(try(module.git-clone[0].repo_dir, ""), "/^~\\//", "/home/coder/") container_name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}" - has_ai_prompt = data.coder_parameter.ai_prompt.value != "" + is_task = coder_task.task.id != "" } data "coder_workspace_preset" "cpt" { @@ -218,14 +218,6 @@ data "coder_parameter" "devcontainer_autostart" { mutable = true } -data "coder_parameter" "ai_prompt" { - type = "string" - name = "AI Prompt" - default = "" - description = "Prompt for Claude Code" - mutable = true // Workaround for issue with claiming a prebuild from a preset that does not include this parameter. -} - provider "docker" { host = lookup(local.docker_host, data.coder_parameter.region.value) } @@ -790,7 +782,7 @@ resource "coder_metadata" "container_info" { } item { key = "ai_task" - value = local.has_ai_prompt ? "yes" : "no" + value = local.is_task ? "yes" : "no" } } @@ -824,7 +816,7 @@ locals { } module "claude-code" { - count = local.has_ai_prompt ? data.coder_workspace.me.start_count : 0 + count = local.is_task ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/claude-code/coder" version = "3.4.4" agent_id = coder_agent.dev.id @@ -835,15 +827,19 @@ module "claude-code" { agentapi_version = "latest" system_prompt = local.claude_system_prompt - ai_prompt = data.coder_parameter.ai_prompt.value + ai_prompt = coder_ai_task.task.prompt post_install_script = <<-EOT claude mcp add playwright npx -- @playwright/mcp@latest --headless --isolated --no-sandbox claude mcp add desktop-commander npx -- @wonderwhy-er/desktop-commander@latest EOT } +resource "coder_ai_task" "task" { + app_id = module.claude-code.task_app_id +} + resource "coder_app" "develop_sh" { - count = local.has_ai_prompt ? data.coder_workspace.me.start_count : 0 + count = local.is_task ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "develop-sh" display_name = "develop.sh" @@ -856,7 +852,7 @@ resource "coder_app" "develop_sh" { } resource "coder_script" "develop_sh" { - count = local.has_ai_prompt ? data.coder_workspace.me.start_count : 0 + count = local.is_task ? data.coder_workspace.me.start_count : 0 display_name = "develop.sh" agent_id = coder_agent.dev.id run_on_start = true @@ -879,7 +875,7 @@ resource "coder_script" "develop_sh" { } resource "coder_app" "preview" { - count = local.has_ai_prompt ? data.coder_workspace.me.start_count : 0 + count = local.is_task ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "preview" display_name = "Preview" From 9589acb915b5446190c83919b6874f279c8fbf1a Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 22 Oct 2025 16:59:01 +0100 Subject: [PATCH 2/6] fixup! chore: update coder/dogfood template to reference coder_task.prompt --- dogfood/coder/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index a2a46e4169f65..425c43817f36e 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -37,7 +37,7 @@ locals { repo_base_dir = data.coder_parameter.repo_base_dir.value == "~" ? "/home/coder" : replace(data.coder_parameter.repo_base_dir.value, "/^~\\//", "/home/coder/") repo_dir = replace(try(module.git-clone[0].repo_dir, ""), "/^~\\//", "/home/coder/") container_name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}" - is_task = coder_task.task.id != "" + is_task = coder_task.task.prompt != "default" } data "coder_workspace_preset" "cpt" { From e9efb7942d8543c990b5ba2af58e278bacba417f Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Mon, 3 Nov 2025 22:05:52 +0000 Subject: [PATCH 3/6] update with new proposed data source --- dogfood/coder/main.tf | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 425c43817f36e..0e249e06d9014 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -37,7 +37,6 @@ locals { repo_base_dir = data.coder_parameter.repo_base_dir.value == "~" ? "/home/coder" : replace(data.coder_parameter.repo_base_dir.value, "/^~\\//", "/home/coder/") repo_dir = replace(try(module.git-clone[0].repo_dir, ""), "/^~\\//", "/home/coder/") container_name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}" - is_task = coder_task.task.prompt != "default" } data "coder_workspace_preset" "cpt" { @@ -230,6 +229,7 @@ data "coder_external_auth" "github" { data "coder_workspace" "me" {} data "coder_workspace_owner" "me" {} +data "coder_ai_task_prompt" "me" {} data "coder_workspace_tags" "tags" { tags = { "cluster" : "dogfood-v2" @@ -782,7 +782,7 @@ resource "coder_metadata" "container_info" { } item { key = "ai_task" - value = local.is_task ? "yes" : "no" + value = data.coder_ai_task_prompt.me.enabled ? "yes" : "no" } } @@ -816,7 +816,7 @@ locals { } module "claude-code" { - count = local.is_task ? data.coder_workspace.me.start_count : 0 + count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/claude-code/coder" version = "3.4.4" agent_id = coder_agent.dev.id @@ -827,7 +827,7 @@ module "claude-code" { agentapi_version = "latest" system_prompt = local.claude_system_prompt - ai_prompt = coder_ai_task.task.prompt + ai_prompt = data.coder_ai_task_prompt.me.value post_install_script = <<-EOT claude mcp add playwright npx -- @playwright/mcp@latest --headless --isolated --no-sandbox claude mcp add desktop-commander npx -- @wonderwhy-er/desktop-commander@latest @@ -835,11 +835,12 @@ module "claude-code" { } resource "coder_ai_task" "task" { - app_id = module.claude-code.task_app_id + count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + app_id = module.claude-code[count.index].task_app_id } resource "coder_app" "develop_sh" { - count = local.is_task ? data.coder_workspace.me.start_count : 0 + count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "develop-sh" display_name = "develop.sh" @@ -852,7 +853,7 @@ resource "coder_app" "develop_sh" { } resource "coder_script" "develop_sh" { - count = local.is_task ? data.coder_workspace.me.start_count : 0 + count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 display_name = "develop.sh" agent_id = coder_agent.dev.id run_on_start = true @@ -875,7 +876,7 @@ resource "coder_script" "develop_sh" { } resource "coder_app" "preview" { - count = local.is_task ? data.coder_workspace.me.start_count : 0 + count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "preview" display_name = "Preview" From c518b5bbc69a06c18342a0ac915b76a39dcc00a3 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Mon, 3 Nov 2025 22:07:25 +0000 Subject: [PATCH 4/6] fixup! update with new proposed data source --- dogfood/coder/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 0e249e06d9014..4e39abb3cc93d 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -818,7 +818,7 @@ locals { module "claude-code" { count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/claude-code/coder" - version = "3.4.4" + version = "4.0.0" agent_id = coder_agent.dev.id workdir = local.repo_dir claude_code_version = "latest" From f2ff31b405bd1264b7c60ead80fd220b399b9f19 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Tue, 4 Nov 2025 09:54:45 +0000 Subject: [PATCH 5/6] update with renamed data source --- dogfood/coder/main.tf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 4e39abb3cc93d..7d2ff3218dd83 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -229,7 +229,7 @@ data "coder_external_auth" "github" { data "coder_workspace" "me" {} data "coder_workspace_owner" "me" {} -data "coder_ai_task_prompt" "me" {} +data "coder_task" "me" {} data "coder_workspace_tags" "tags" { tags = { "cluster" : "dogfood-v2" @@ -782,7 +782,7 @@ resource "coder_metadata" "container_info" { } item { key = "ai_task" - value = data.coder_ai_task_prompt.me.enabled ? "yes" : "no" + value = data.coder_task.me.enabled ? "yes" : "no" } } @@ -816,7 +816,7 @@ locals { } module "claude-code" { - count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + count = data.coder_task.me.enabled ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/claude-code/coder" version = "4.0.0" agent_id = coder_agent.dev.id @@ -827,7 +827,7 @@ module "claude-code" { agentapi_version = "latest" system_prompt = local.claude_system_prompt - ai_prompt = data.coder_ai_task_prompt.me.value + ai_prompt = data.coder_task.me.value post_install_script = <<-EOT claude mcp add playwright npx -- @playwright/mcp@latest --headless --isolated --no-sandbox claude mcp add desktop-commander npx -- @wonderwhy-er/desktop-commander@latest @@ -835,12 +835,12 @@ module "claude-code" { } resource "coder_ai_task" "task" { - count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + count = data.coder_task.me.enabled ? data.coder_workspace.me.start_count : 0 app_id = module.claude-code[count.index].task_app_id } resource "coder_app" "develop_sh" { - count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + count = data.coder_task.me.enabled ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "develop-sh" display_name = "develop.sh" @@ -853,7 +853,7 @@ resource "coder_app" "develop_sh" { } resource "coder_script" "develop_sh" { - count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + count = data.coder_task.me.enabled ? data.coder_workspace.me.start_count : 0 display_name = "develop.sh" agent_id = coder_agent.dev.id run_on_start = true @@ -876,7 +876,7 @@ resource "coder_script" "develop_sh" { } resource "coder_app" "preview" { - count = data.coder_ai_task_prompt.me.enabled ? data.coder_workspace.me.start_count : 0 + count = data.coder_task.me.enabled ? data.coder_workspace.me.start_count : 0 agent_id = coder_agent.dev.id slug = "preview" display_name = "Preview" From 72326fc80e2edf9634554cfd692b51e4e8c0f94c Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Thu, 6 Nov 2025 13:35:08 +0000 Subject: [PATCH 6/6] fixup! update with renamed data source --- dogfood/coder/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 7d2ff3218dd83..efa955200079f 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 2.12.0" + version = ">= 2.13.0" } docker = { source = "kreuzwerker/docker" @@ -827,7 +827,7 @@ module "claude-code" { agentapi_version = "latest" system_prompt = local.claude_system_prompt - ai_prompt = data.coder_task.me.value + ai_prompt = data.coder_task.me.prompt post_install_script = <<-EOT claude mcp add playwright npx -- @playwright/mcp@latest --headless --isolated --no-sandbox claude mcp add desktop-commander npx -- @wonderwhy-er/desktop-commander@latest