adding and clarifying comments

This commit is contained in:
Joshua Smith
2025-03-11 13:02:08 -04:00
parent 64ffe7f635
commit b2e4999562

View File

@@ -53,7 +53,7 @@ class AgentGoalWorkflow:
#set initial goal of "pick an agent" here?? #set initial goal of "pick an agent" here??
self.goal: AgentGoal = {"tools": []} self.goal: AgentGoal = {"tools": []}
# see ../api/main.py#temporal_client.start_workflow() for how these parameters are set # see ../api/main.py#temporal_client.start_workflow() for how the input parameters are set
@workflow.run @workflow.run
async def run(self, combined_input: CombinedInput) -> str: async def run(self, combined_input: CombinedInput) -> str:
"""Main workflow execution method.""" """Main workflow execution method."""
@@ -69,24 +69,27 @@ class AgentGoalWorkflow:
if params and params.prompt_queue: if params and params.prompt_queue:
self.prompt_queue.extend(params.prompt_queue) self.prompt_queue.extend(params.prompt_queue)
waiting_for_confirm = False # controls if we confirm with the user waiting_for_confirm = False
current_tool = None current_tool = None
# interactive loop # This is the main interactive loop. Main responsibilities:
# - Selecting and changing goals as directed by the user
# - reacting to user input (from signals)
# - calling activities to determine next steps and prompts
# - executing the selected tools
while True: while True:
# wait for signals - user_prompt, end_chat, or confirm as defined below # wait indefinitely for input from signals - user_prompt, end_chat, or confirm as defined below
await workflow.wait_condition( await workflow.wait_condition(
lambda: bool(self.prompt_queue) or self.chat_ended or self.confirm lambda: bool(self.prompt_queue) or self.chat_ended or self.confirm
) )
#process signals of various kinds # handle chat-end signal
#chat-end signal
if self.chat_ended: if self.chat_ended:
workflow.logger.info("Chat ended.") workflow.logger.info("Chat ended.")
return f"{self.conversation_history}" return f"{self.conversation_history}"
# tool execution if selected and confirmed # execute tool
if self.confirm and waiting_for_confirm and current_tool and self.tool_data: if self.confirm and waiting_for_confirm and current_tool and self.tool_data:
self.confirm = False self.confirm = False
waiting_for_confirm = False waiting_for_confirm = False
@@ -120,6 +123,7 @@ class AgentGoalWorkflow:
#todo reset goal or tools if this doesn't work or whatever #todo reset goal or tools if this doesn't work or whatever
continue continue
# push messages to UI if there are any
if self.prompt_queue: if self.prompt_queue:
prompt = self.prompt_queue.popleft() prompt = self.prompt_queue.popleft()
if not prompt.startswith("###"): if not prompt.startswith("###"):
@@ -161,7 +165,7 @@ class AgentGoalWorkflow:
context_instructions=context_instructions, context_instructions=context_instructions,
) )
# connect to LLM and get...its feedback? which tool to run? ?? # connect to LLM and get it to create a prompt for the user about the tool
tool_data = await workflow.execute_activity( tool_data = await workflow.execute_activity(
ToolActivities.agent_toolPlanner, ToolActivities.agent_toolPlanner,
prompt_input, prompt_input,
@@ -186,6 +190,7 @@ class AgentGoalWorkflow:
self.confirm = False self.confirm = False
workflow.logger.info("Waiting for user confirm signal...") workflow.logger.info("Waiting for user confirm signal...")
# todo probably here we can set the next step to be change-goal
elif next_step == "done": elif next_step == "done":
workflow.logger.info("All steps completed. Exiting workflow.") workflow.logger.info("All steps completed. Exiting workflow.")
self.add_message("agent", tool_data) self.add_message("agent", tool_data)