Skip to content

Conversation

sicoyle
Copy link
Contributor

@sicoyle sicoyle commented Sep 19, 2025

issue
#167

I updated the durable agent wf definition to:

  • ensure stateful actions were durable by enabling state management aspect to be atomic with the operation. For ex: if a tool is executed, then the results are immediately saved within the same activity.
  • make wf runtime task/wf registration atomic so things will only register once (this fixes a race condition where task/wf registrations occurred before runtime was fully up)
  • use deterministic time formatting from the wf context
  • updated log levels to improve dx and not log so much and also not log on replays of the wf
  • create/use helpers in the activities so they're not as large with making state management more atomic

The workflow used to look like this:
image

And now its simplified to this :)
image

Signed-off-by: Samantha Coyle <[email protected]>
@sicoyle
Copy link
Contributor Author

sicoyle commented Sep 19, 2025

I'm looking for input on activity naming still. For the generate_llm_response calls, I think that could be clearer with a few options:

  1. plan_and_call_tools and the second call being llm_final_response
  2. llm_plan and the second call being llm_generate_response
  3. More ReAct focused: reason_and_act and the second call being observe_and_respond

Open to ideas here and on other activity call names please.

Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
Signed-off-by: Samantha Coyle <[email protected]>
"cloudevents>=1.11.0,<2.0.0",
"numpy>=2.2.2,<3.0.0",
"mcp>=1.7.1,<2.0.0",
"websockets>=15.0.0,<16.0.0",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was added bc MCP's websocket client requires it so in the tests i saw MCP tool schema creation fail silently... so went ahead and added a core dep

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does the task_name generate_llm_response exist yet? or this is a placeholder for when the task names are updated

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, i renamed generate_response to generate_llm_response so now thats what it appears as in tracing
image

@Cyb3rWard0g
Copy link
Collaborator

Other than the question about the name of the task, LGTM. If the task named "generate_llm_response" does not exist yet, then it will not trigger right?

@bibryam
Copy link
Collaborator

bibryam commented Sep 22, 2025

  1. IMO ToolCallingWorkflow -> AgenticWorkflow
    as it is not always tool calling, and in fact it is an agentic workflow as per definition:

An agentic workflow is an AI-driven process where autonomous, intelligent AI agents manage complex tasks and processes with minimal human intervention, making decisions, coordinating actions, and adapting to changing circumstances in real-time.

  1. We cannot use plan, final_call, etc as we not every LLM interaction starts with a plan, or ends up in tool call.
    I think we need two names:
    run_tool -> run_tool (this is ok)
    generate_llm_response -> call_llm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants