Let task agents create and manage subtasks

This commit is contained in:
Ian Gulliver
2026-10-16 10:36:38 -07:00
parent fd63a0dfbc
commit 0f2415570c
30 changed files with 1067 additions and 287 deletions
+131 -96
View File
@@ -390,6 +390,24 @@ func (e ZombieKind) Valid() bool {
}
}
// Defines values for MergeTaskJSONBodyTarget.
const (
MergeTargetMain MergeTaskJSONBodyTarget = "main"
MergeTargetParent MergeTaskJSONBodyTarget = "parent"
)
// Valid indicates whether the value is a known member of the MergeTaskJSONBodyTarget enum.
func (e MergeTaskJSONBodyTarget) Valid() bool {
switch e {
case MergeTargetMain:
return true
case MergeTargetParent:
return true
default:
return false
}
}
// AgentProcess defines model for AgentProcess.
type AgentProcess struct {
// Health stuck means a turn is running and no stream event has arrived for stuck_after_seconds; exited means the process is gone.
@@ -881,6 +899,12 @@ type Task struct {
// Merging Whether a Merge was started and its turn hasn't ended yet.
Merging bool `json:"merging"`
// MergingIntoParent Whether a merge of this subtask into its parent was requested and the parent hasn't merged it yet.
MergingIntoParent bool `json:"merging_into_parent"`
// ParentTaskId The task whose agent created this one as its subtask; absent for other tasks.
ParentTaskId *string `json:"parent_task_id,omitempty"`
// PortBase The first of the task's block of ports (port_base to port_base+9), passed to its agent and terminal as PORT.
PortBase int `json:"port_base"`
ProjectId string `json:"project_id"`
@@ -1089,10 +1113,16 @@ type GetTaskImageParams struct {
// MergeTaskJSONBody defines parameters for MergeTask.
type MergeTaskJSONBody struct {
// MergeTitle The squash commit's title: one line, at most 72 characters.
MergeTitle string `json:"merge_title"`
// MergeTitle The squash commit's title: one line, at most 72 characters. Required for target main.
MergeTitle *string `json:"merge_title,omitempty"`
// Target main (the default): squash onto the project's default branch. parent: merge into the parent task's branch; only for a subtask.
Target *MergeTaskJSONBodyTarget `json:"target,omitempty"`
}
// MergeTaskJSONBodyTarget defines parameters for MergeTask.
type MergeTaskJSONBodyTarget string
// GetTaskTerminalParams defines parameters for GetTaskTerminal.
type GetTaskTerminalParams struct {
Cols int `form:"cols" json:"cols"`
@@ -2991,100 +3021,105 @@ var swaggerSpec = []string{
"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",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,