12
12
required :true
13
13
default :" traiage"
14
14
type :string
15
+ template_preset :
16
+ description :" Template preset to use"
17
+ required :true
18
+ default :" Default"
19
+ type :string
15
20
prefix :
16
21
description :" Prefix for workspace name"
17
22
required :false
@@ -68,67 +73,62 @@ jobs:
68
73
coder whoami
69
74
echo "$HOME/.local/bin" >> "${GITHUB_PATH}"
70
75
71
- -name :Create Coder workspace
72
- id :create-workspace
76
+ # TODO(Cian): this is a good use-case for 'recipes'
77
+ -name :Create Coder task
78
+ id :create-task
73
79
env :
74
- PREFIX :${{ inputs.prefix }}
75
80
CONTEXT_KEY :${{ steps.extract-context.outputs.context_key }}
81
+ GITHUB_TOKEN :${{ github.token }}
82
+ ISSUE_URL :${{ inputs.issue_url }}
83
+ PREFIX :${{ inputs.prefix }}
76
84
RUN_ID :${{ github.run_id }}
77
85
TEMPLATE_PARAMETERS :${{ secrets.TRAIAGE_TEMPLATE_PARAMETERS }}
86
+ TEMPLATE_PRESET :${{ inputs.template_preset }}
87
+ # TODO: replace with coder exp task command
88
+ APP_SLUG :ccw
78
89
run :|
79
- export WORKSPACE_NAME="${PREFIX}-${CONTEXT_KEY}-${RUN_ID}"
80
- echo "Creating workspace: $WORKSPACE_NAME"
81
- ./scripts/traiage.sh create
82
- echo "workspace_name=$WORKSPACE_NAME" >> "${GITHUB_OUTPUT}"
83
- echo "WORKSPACE_NAME=${WORKSPACE_NAME}" >> "${GITHUB_ENV}"
84
-
85
- -name :Send prompt to AI agent inside workspace
86
- id :prepare-prompt
87
- env :
88
- WORKSPACE_NAME :${{ steps.create-workspace.outputs.workspace_name }}
89
- ISSUE_URL :${{ inputs.issue_url }}
90
- GITHUB_TOKEN :${{ github.token }}
91
- run :|
92
- PROMPT_FILE=$(mktemp)
93
- trap 'rm -f "${PROMPT_FILE}"' EXIT
94
-
95
90
# Fetch issue description using `gh` CLI
96
91
issue_description=$(gh issue view "${ISSUE_URL}")
97
92
98
93
# Write a prompt to PROMPT_FILE
99
- cat > "${PROMPT_FILE}" <<EOF
94
+ PROMPT=$(cat <<EOF
100
95
Analyze the below GitHub issue description, understand the root cause, and make appropriate changes to resolve the issue.
101
96
102
97
ISSUE URL: ${ISSUE_URL}
103
98
ISSUE DESCRIPTION BELOW:
104
99
105
100
${issue_description}
106
101
EOF
102
+ )
103
+ export PROMPT
107
104
108
- echo "WORKSPACE_NAME: ${WORKSPACE_NAME}"
109
- # This command will run the prompt inside the workspace
110
- # and exit once the agent has completed the task.
111
- PROMPT=$(cat "${PROMPT_FILE}") ./scripts/traiage.sh prompt
105
+ export TASK_NAME="${PREFIX}-${CONTEXT_KEY}-${RUN_ID}"
106
+ echo "Creating task: $TASK_NAME"
107
+ ./scripts/traiage.sh create
108
+ ./scripts/traiage.sh wait
109
+ echo "TASK_NAME=${TASK_NAME}" >> "${GITHUB_OUTPUT}"
110
+ echo "TASK_NAME=${TASK_NAME}" >> "${GITHUB_ENV}"
112
111
113
112
-name :Create and upload archive
114
113
id :create-archive
115
114
env :
116
115
BUCKET_PREFIX :" gs://coder-traiage-outputs/traiage"
117
116
run :|
118
- echo "Creating archive for workspace: $WORKSPACE_NAME "
117
+ echo "Creating archive for workspace: $TASK_NAME "
119
118
./scripts/traiage.sh archive
120
- echo "archive_url=${BUCKET_PREFIX%%/}/$WORKSPACE_NAME .tar.gz" >> "${GITHUB_OUTPUT}"
119
+ echo "archive_url=${BUCKET_PREFIX%%/}/$TASK_NAME .tar.gz" >> "${GITHUB_OUTPUT}"
121
120
122
121
-name :Generate a summary of the changes and post a comment on GitHub.
123
122
id :generate-summary
124
123
env :
125
124
ARCHIVE_URL :${{ steps.create-archive.outputs.archive_url }}
125
+ APP_SLUG :ccw
126
126
BUCKET_PREFIX :" gs://coder-traiage-outputs/traiage"
127
127
CONTEXT_KEY :${{ steps.extract-context.outputs.context_key }}
128
128
GITHUB_TOKEN :${{ github.token }}
129
129
GITHUB_REPOSITORY :${{ github.repository }}
130
130
ISSUE_URL :${{ inputs.issue_url }}
131
- WORKSPACE_NAME :${{ steps.create-workspace .outputs.workspace_name }}
131
+ TASK_NAME :${{ steps.create-task .outputs.TASK_NAME }}
132
132
run :|
133
133
SUMMARY_FILE=$(mktemp)
134
134
trap 'rm -f "${SUMMARY_FILE}"' EXIT
@@ -137,15 +137,15 @@ jobs:
137
137
echo "## TrAIage Results"
138
138
echo "- **Issue URL:** ${ISSUE_URL}"
139
139
echo "- **Context Key:** ${CONTEXT_KEY}"
140
- echo "- **Workspace:** ${WORKSPACE_NAME }"
140
+ echo "- **Workspace:** ${TASK_NAME }"
141
141
echo "- **Archive URL:** ${ARCHIVE_URL}"
142
142
echo
143
143
echo "${AUTO_SUMMARY}"
144
144
echo
145
145
echo "To fetch the output to your own workspace:"
146
146
echo
147
147
echo '```bash'
148
- echo "BUCKET_PREFIX=${BUCKET_PREFIX}WORKSPACE_NAME =${WORKSPACE_NAME } ./scripts/traiage.sh resume"
148
+ echo "BUCKET_PREFIX=${BUCKET_PREFIX}TASK_NAME =${TASK_NAME } ./scripts/traiage.sh resume"
149
149
echo '```'
150
150
echo
151
151
} >> "${SUMMARY_FILE}"
@@ -157,8 +157,8 @@ jobs:
157
157
fi
158
158
cat "${SUMMARY_FILE}" >> "${GITHUB_STEP_SUMMARY}"
159
159
160
- -name :Cleanupworkspace
161
- if :steps.create-workspace .outputs.workspace_name != '' && steps.create-archive.outputs.archive_url != ''
160
+ -name :Cleanuptask
161
+ if :steps.create-task .outputs.TASK_NAME != '' && steps.create-archive.outputs.archive_url != ''
162
162
run :|
163
- echo "Cleaning upworkspace : $WORKSPACE_NAME "
163
+ echo "Cleaning uptask : $TASK_NAME "
164
164
./scripts/traiage.sh delete ||true