@@ -150,24 +150,38 @@ def update_task_status(self, task_id: int, status: str) -> None:
150
150
151
151
def update_task_execution_details (
152
152
self ,
153
- task_id : int ,
154
- final_prompt : str ,
155
- raw_result : str ,
156
- cost : float ,
157
- parsed_result : str = None
158
- ) -> None :
159
- """
160
- Save the results of an LLM execution, timestamps, cost, and set awaiting_human_approval.
161
- """
162
- end_ts = datetime .utcnow ().isoformat ()
163
- sql = (
164
- "UPDATE tasks SET final_prompt = ?, raw_result = ?, parsed_result = ?, "
165
- "cost = ?, execution_end_timestamp = ?, status = 'awaiting_human_approval' "
166
- "WHERE task_id = ?"
167
- )
168
- parsed = parsed_result if parsed_result is not None else raw_result
169
- self ._execute_query (sql , (final_prompt , raw_result , parsed , cost , end_ts , task_id ))
170
- self .conn .commit ()
153
+ task_id ,
154
+ final_prompt = None ,
155
+ raw_result = None ,
156
+ parsed_result = None ,
157
+ cost = None ,
158
+ execution_start_timestamp = None ,
159
+ execution_end_timestamp = None ,
160
+ retry_count = None ,
161
+ error_log = None
162
+ ):
163
+ """
164
+ Update any of these fields on a task. Only non-None args will be written.
165
+ """
166
+ updates = {}
167
+ if final_prompt is not None : updates ['final_prompt' ] = final_prompt
168
+ if raw_result is not None : updates ['raw_result' ] = raw_result
169
+ if parsed_result is not None : updates ['parsed_result' ] = parsed_result
170
+ if cost is not None : updates ['cost' ] = cost
171
+ if execution_start_timestamp is not None :
172
+ updates ['execution_start_timestamp' ] = execution_start_timestamp
173
+ if execution_end_timestamp is not None :
174
+ updates ['execution_end_timestamp' ] = execution_end_timestamp
175
+ if retry_count is not None : updates ['retry_count' ] = retry_count
176
+ if error_log is not None : updates ['error_log' ] = error_log
177
+
178
+ if not updates :
179
+ return
180
+
181
+ set_clause = ", " .join (f"{ col } = ?" for col in updates )
182
+ params = list (updates .values ()) + [task_id ]
183
+ sql = f"UPDATE tasks SET { set_clause } WHERE task_id = ?"
184
+ self ._execute_query (sql , params = params )
171
185
172
186
def to_csv (self , filepath : str ) -> None :
173
187
"""
0 commit comments