@@ -3,6 +3,7 @@
|
3 | 3 | import logging |
4 | 4 | import threading |
5 | 5 | import heapq |
| 6 | +import time |
6 | 7 | import traceback |
7 | 8 | import inspect |
8 | 9 | from typing import List, Literal, NamedTuple, Optional |
@@ -283,7 +284,11 @@ def reset(self):
|
283 | 284 | self.success = True |
284 | 285 | self.old_prompt = {} |
285 | 286 | |
286 | | -def add_message(self, event, data, broadcast: bool): |
| 287 | +def add_message(self, event, data: dict, broadcast: bool): |
| 288 | +data = { |
| 289 | +**data, |
| 290 | +"timestamp": int(time.time() * 1000), |
| 291 | + } |
287 | 292 | self.status_messages.append((event, data)) |
288 | 293 | if self.server.client_id is not None or broadcast: |
289 | 294 | self.server.send_sync(event, data, self.server.client_id) |
@@ -394,6 +399,9 @@ def execute(self, prompt, prompt_id, extra_data={}, execute_outputs=[]):
|
394 | 399 | if self.success is not True: |
395 | 400 | self.handle_execution_error(prompt_id, prompt, current_outputs, executed, error, ex) |
396 | 401 | break |
| 402 | +else: |
| 403 | +# Only execute when the while-loop ends without break |
| 404 | +self.add_message("execution_success", { "prompt_id": prompt_id }, broadcast=False) |
397 | 405 | |
398 | 406 | for x in executed: |
399 | 407 | self.old_prompt[x] = copy.deepcopy(prompt[x]) |
|