66from ....schema .result import Result
77from ....schema .orm import Task
88from ....service .data import task as TD
9- from ....env import LOG
9+ from ....schema . session . task import TaskStatus
1010from .ctx import TaskCtx
1111
1212
1313async def _append_messages_to_task_handler (
1414 ctx : TaskCtx ,
1515 llm_arguments : dict ,
1616) -> Result [str ]:
17- task_order = llm_arguments .get ("task_order" , None )
17+ task_order : int = llm_arguments .get ("task_order" , None )
1818 message_order_indexes = llm_arguments .get ("message_ids" , [])
1919 if not task_order :
2020 return Result .resolve (
@@ -25,6 +25,7 @@ async def _append_messages_to_task_handler(
2525 f"Task order { task_order } is out of range, appending failed."
2626 )
2727 actually_task_id = ctx .task_ids_index [task_order - 1 ]
28+ actually_task = ctx .task_index [task_order - 1 ]
2829 actually_message_ids = [
2930 ctx .message_ids_index [i ]
3031 for i in message_order_indexes
@@ -34,6 +35,10 @@ async def _append_messages_to_task_handler(
3435 return Result .resolve (
3536 f"No message ids to append, skip: { message_order_indexes } "
3637 )
38+ if actually_task .task_status in (TaskStatus .SUCCESS , TaskStatus .FAILED ):
39+ return Result .resolve (
40+ f"Task { task_order } is already { actually_task .task_status } , appending failed."
41+ )
3742 r = await TD .append_messages_to_task (
3843 ctx .db_session ,
3944 actually_message_ids ,
@@ -56,6 +61,7 @@ async def _append_messages_to_task_handler(
5661 "name" : "append_messages_to_task" ,
5762 "description" : """Link current message ids to a task for tracking progress and context.
5863Use this to associate conversation messages with relevant tasks.
64+ Make sure you append messages first(if any), then update the task status.
5965If the task is marked as 'success' or 'failed', don't append messages to it.""" ,
6066 "parameters" : {
6167 "type" : "object" ,
0 commit comments