To simplify task management, Elkar provides a TaskModifier class with five core methods. These methods handle interactions with the store and queue, allowing you to focus on task logic directly.
Get Task
Retrieves a task, either from the store or via the method.
Copy
await task_modifier.get_task( from_store=False # Set to True to fetch from the store )
Get Task Send Params
Fetches the parameters needed to send a task.
Copy
await task_modifier.get_task_send_params()
Status Update
Describes the state of the task and the agent’s progress. Messages in the status are appended to the task’s history.
Copy
await task_modifier.set_status( TaskStatus( state=TaskState.COMPLETED, message=Message(parts=[TextPart(text="I've finished the task!")]) ))
Artifact Update
Artifacts represent the result of the task. Indices are used to identify artifacts within a task. Updates append to existing artifacts if the index matches and the chunk is not the last one.
Copy
await task_modifier.upsert_artifact( Artifact(parts=[TextPart(text="I've finished the task!")], index=0))
Append Messages to History
Stores relevant information, such as thoughts or past communications, related to the task.
Copy
await task_modifier.add_messages_to_history( [Message(parts=[TextPart(text="I'm working on the task...")])])