diff --git a/todo.md b/todo.md
new file mode 100644
index 0000000..2d79665
--- /dev/null
+++ b/todo.md
@@ -0,0 +1,22 @@
+# todo list
+[ ] create people management scenario
+ -- check pay status
+ -- book work travel
+ -- check PTO levels
+ -- check insurance coverages
+ -- book PTO around a date (https://developers.google.com/calendar/api/guides/overview)?
+ -- scenario should use multiple tools
+ -- expense management
+ -- check in on the health of the team
+[ ] demo the reasons why:
+ -- Orchestrate interactions across distributed data stores and tools
+ -- Hold state, potentially over long periods of time
+ -- Ability to ‘self-heal’ and retry until the (probabilistic) LLM returns valid data
+ -- Support for human intervention such as approvals
+ -- Parallel processing for efficiency of data retrieval and tool use
+ -- Insight into the agent’s performance
+
+[ ] customize prompts in [workflow to manage scenario](./workflows/tool_workflow.py)
+[ ] add in new tools?
+[ ] create tests
+[ ] non-retry the api key error - "Invalid API Key provided: sk_test_**J..." and "AuthenticationError"
\ No newline at end of file
diff --git a/workflows/agent_goal_workflow.py b/workflows/agent_goal_workflow.py
index fdc8fc5..9e17537 100644
--- a/workflows/agent_goal_workflow.py
+++ b/workflows/agent_goal_workflow.py
@@ -42,9 +42,11 @@ class AgentGoalWorkflow:
self.confirm: bool = False
self.tool_results: List[Dict[str, Any]] = []
+ # see ../api/main.py#temporal_client.start_workflow() for how these parameters are set
@workflow.run
async def run(self, combined_input: CombinedInput) -> str:
"""Main workflow execution method."""
+ # setup phase
params = combined_input.tool_params
agent_goal = combined_input.agent_goal
@@ -55,18 +57,23 @@ class AgentGoalWorkflow:
if params and params.prompt_queue:
self.prompt_queue.extend(params.prompt_queue)
- waiting_for_confirm = False
+ waiting_for_confirm = False # controls if we confirm with the user
current_tool = None
+ # interactive loop
while True:
+ # wait for signals
await workflow.wait_condition(
lambda: bool(self.prompt_queue) or self.chat_ended or self.confirm
)
+ #process signals of various kinds
+ #chat-end signal
if self.chat_ended:
workflow.logger.info("Chat ended.")
return f"{self.conversation_history}"
+ # tool execution if selected and confirmed
if self.confirm and waiting_for_confirm and current_tool and self.tool_data:
self.confirm = False
waiting_for_confirm = False
@@ -135,6 +142,7 @@ class AgentGoalWorkflow:
)
self.tool_data = tool_data
+ # move forward in the tool chain
next_step = tool_data.get("next")
current_tool = tool_data.get("tool")