feat(coderd): add task prompt modification endpoint (#20811)

This PR adds the backend implementation for modifying task prompts. Part
of https://github.com/coder/internal/issues/1084

## Changes

- New `UpdateTaskPrompt` database query to update task prompts
- New PATCH `/api/v2/tasks/{task}/prompt` endpoint

## Notes

This is part 1 of a 2-part PR stack. The frontend UI will be added in a
follow-up PR based on this branch
(https://github.com/coder/coder/pull/20812).

---

🤖 PR was written by Claude Sonnet 4.5 Thinking using [Coder
Mux](https://github.com/coder/cmux) and reviewed by a human 👩
This commit is contained in:
Danielle Maywood
2025-11-25 11:13:32 +00:00
committed by GitHub
parent afd40436f0
commit 82f525baf3
18 changed files with 659 additions and 37 deletions
+56 -8
View File
@@ -228,8 +228,7 @@ const docTemplate = `{
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -265,8 +264,7 @@ const docTemplate = `{
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -279,6 +277,50 @@ const docTemplate = `{
}
}
},
"/api/experimental/tasks/{user}/{task}/input": {
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": [
"Experimental"
],
"summary": "Update AI task input",
"operationId": "update-task-input",
"parameters": [
{
"type": "string",
"description": "Username, user ID, or 'me' for the authenticated user",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
},
{
"description": "Update task input request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateTaskInputRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/api/experimental/tasks/{user}/{task}/logs": {
"get": {
"security": [
@@ -301,8 +343,7 @@ const docTemplate = `{
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -340,8 +381,7 @@ const docTemplate = `{
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -19025,6 +19065,14 @@ const docTemplate = `{
}
}
},
"codersdk.UpdateTaskInputRequest": {
"type": "object",
"properties": {
"input": {
"type": "string"
}
}
},
"codersdk.UpdateTemplateACL": {
"type": "object",
"properties": {
+54 -8
View File
@@ -198,8 +198,7 @@
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -233,8 +232,7 @@
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -247,6 +245,48 @@
}
}
},
"/api/experimental/tasks/{user}/{task}/input": {
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Experimental"],
"summary": "Update AI task input",
"operationId": "update-task-input",
"parameters": [
{
"type": "string",
"description": "Username, user ID, or 'me' for the authenticated user",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
},
{
"description": "Update task input request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateTaskInputRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/api/experimental/tasks/{user}/{task}/logs": {
"get": {
"security": [
@@ -267,8 +307,7 @@
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -304,8 +343,7 @@
},
{
"type": "string",
"format": "uuid",
"description": "Task ID",
"description": "Task ID, or task name",
"name": "task",
"in": "path",
"required": true
@@ -17452,6 +17490,14 @@
}
}
},
"codersdk.UpdateTaskInputRequest": {
"type": "object",
"properties": {
"input": {
"type": "string"
}
}
},
"codersdk.UpdateTemplateACL": {
"type": "object",
"properties": {