@@ -2,7 +2,7 @@ terraform {
22required_providers {
33coder = {
44 source= " coder/coder"
5- version= " >= 2.12 .0"
5+ version= " >= 2.13 .0"
66 }
77docker = {
88 source= " kreuzwerker/docker"
@@ -37,7 +37,6 @@ locals {
3737repo_base_dir = data. coder_parameter . repo_base_dir . value == " ~" ? " /home/coder" : replace (data. coder_parameter . repo_base_dir . value ," /^~\\ //" ," /home/coder/" )
3838repo_dir = replace (try (module. git-clone [0 ]. repo_dir ," " )," /^~\\ //" ," /home/coder/" )
3939container_name = " coder-${ data . coder_workspace_owner . me . name } -${ lower (data. coder_workspace . me . name )} "
40- has_ai_prompt = data. coder_parameter . ai_prompt . value != " "
4140}
4241
4342data "coder_workspace_preset" "cpt" {
@@ -218,14 +217,6 @@ data "coder_parameter" "devcontainer_autostart" {
218217mutable = true
219218}
220219
221- data "coder_parameter" "ai_prompt" {
222- type = " string"
223- name = " AI Prompt"
224- default = " "
225- description = " Prompt for Claude Code"
226- mutable = true // Workaround for issue with claiming a prebuild from a preset that does not include this parameter.
227- }
228-
229220provider "docker" {
230221host = lookup (local. docker_host , data. coder_parameter . region . value )
231222}
@@ -238,6 +229,7 @@ data "coder_external_auth" "github" {
238229
239230data "coder_workspace" "me" {}
240231data "coder_workspace_owner" "me" {}
232+ data "coder_task" "me" {}
241233data "coder_workspace_tags" "tags" {
242234tags = {
243235" cluster" : " dogfood-v2"
@@ -790,7 +782,7 @@ resource "coder_metadata" "container_info" {
790782 }
791783item {
792784key = " ai_task"
793- value = local . has_ai_prompt ? " yes" : " no"
785+ value = data . coder_task . me . enabled ? " yes" : " no"
794786 }
795787}
796788
@@ -824,9 +816,9 @@ locals {
824816}
825817
826818module "claude-code" {
827- count = local . has_ai_prompt ? data. coder_workspace . me . start_count : 0
819+ count = data . coder_task . me . enabled ? data. coder_workspace . me . start_count : 0
828820source = " dev.registry.coder.com/coder/claude-code/coder"
829- version = " 3.4.4 "
821+ version = " 4.0.0 "
830822agent_id = coder_agent. dev . id
831823workdir = local. repo_dir
832824claude_code_version = " latest"
@@ -835,15 +827,20 @@ module "claude-code" {
835827agentapi_version = " latest"
836828
837829system_prompt = local. claude_system_prompt
838- ai_prompt = data. coder_parameter . ai_prompt . value
830+ ai_prompt = data. coder_task . me . prompt
839831post_install_script = <<- EOT
840832 claude mcp add playwright npx -- @playwright/mcp@latest --headless --isolated --no-sandbox
841833 claude mcp add desktop-commander npx -- @wonderwhy-er/desktop-commander@latest
842834 EOT
843835}
844836
837+ resource "coder_ai_task" "task" {
838+ count = data. coder_task . me . enabled ? data. coder_workspace . me . start_count : 0
839+ app_id = module. claude-code [count . index ]. task_app_id
840+ }
841+
845842resource "coder_app" "develop_sh" {
846- count = local . has_ai_prompt ? data. coder_workspace . me . start_count : 0
843+ count = data . coder_task . me . enabled ? data. coder_workspace . me . start_count : 0
847844agent_id = coder_agent. dev . id
848845slug = " develop-sh"
849846display_name = " develop.sh"
@@ -856,7 +853,7 @@ resource "coder_app" "develop_sh" {
856853}
857854
858855resource "coder_script" "develop_sh" {
859- count = local . has_ai_prompt ? data. coder_workspace . me . start_count : 0
856+ count = data . coder_task . me . enabled ? data. coder_workspace . me . start_count : 0
860857display_name = " develop.sh"
861858agent_id = coder_agent. dev . id
862859run_on_start = true
@@ -879,7 +876,7 @@ resource "coder_script" "develop_sh" {
879876}
880877
881878resource "coder_app" "preview" {
882- count = local . has_ai_prompt ? data. coder_workspace . me . start_count : 0
879+ count = data . coder_task . me . enabled ? data. coder_workspace . me . start_count : 0
883880agent_id = coder_agent. dev . id
884881slug = " preview"
885882display_name = " Preview"