Commit Graph

19 Commits

Author SHA1 Message Date
Roberto Rodriguez 75274ac607
Adding DaprWorkflowContext from dapr.ext.workflow (#99) 2025-04-24 04:05:43 -07:00
Casper Nielsen f129754486
Fix/30 add linter action (#95)
* Fix: Fix Setup lint GitHub action #30

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove branch filter on PR and remove on push

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove on mergequeue

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add tox.ini file

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Return on push

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: tox -e ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore .ruff_cache

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Update tox file

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Add mypy.ini

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore if line is too long

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Set the ignore in command instead

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W503

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: 541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W503

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Ignore F401, unused imports as __init__ files has them

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Return linebreak as tox -e ruff yields that

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore W503 as ruff introduces it

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W293

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ruff want's the space before :

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore space before :

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add dev-requirements.txt

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Correct python version

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Ref dev-requirements.txt

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add mypy cache dir

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Update mypy version

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Exclude cookbook and quicstarts

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove unused import

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Add specific sub module ignore on error for future smaller fixing

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Reintroduce branches filter on push and pull_request

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* chore: Ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: ruff formatting

* Chore: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: E401

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: E711

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

---------

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>
2025-04-23 22:58:48 -07:00
Roberto Rodriguez f9eb48c02c added cookbook to show example 2025-04-23 18:34:21 -04:00
Roberto Rodriguez bd0859d181
Async‑first workflow runner, sync wrapper & registration closure fix (#93)
* Async workflow runner, sync wrapper & registration closure fix

* updated cookbook notebooks to show sync and async with workflow monitoring

* updated quickstarts to use the updated sync workflow monitoring
2025-04-22 09:20:04 -07:00
Roberto Rodriguez 099dc5d2fb
Hierarchical LLM config on Tasks + workflow/ decorator refactor (#92)
* updated dependencies versions

* Updated model validator for HuggingFace-Hub client to catch model and hub url early

* split task registration into discover + register phases, improved LLM client init in tasks and workflow wrappers

* improve decorator to access method attributes

* wrapping workflow decotrators to log, validate, etc., without losing signature/docs

* Improved LLM-based task client and cleaned execution of LLM, agent and python function

* Added an example of multiple models being defined per workflow task after updates

* Updated quickstarts basic agent runs to async

* Added model attribute to huggingface-hub client class

* Fixed random and roundrobin orchestrators TriggerAction schema, trigger action and task to process agent response

* Updated quickstart multi-agent workflows and actor-based agents docs

* added .dapr to gitignore
2025-04-22 06:17:36 -07:00
Roberto Rodriguez b939d7d2f5
Add transactional `register_agent` with optimistic‑concurrency + retry (#91)
* add transactional `register_agent` with optimistic‑concurrency + retry

* Added basic calc example from bibryam to validate actor registration works and overall demo works

---------

Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
2025-04-21 07:53:33 -07:00
Yaron Schneider f5dc9372e7
Revert "Fix: Setup lint GitHub action #30 (#85)" (#88)
This reverts commit 199fcf9d02.
2025-04-18 15:39:26 -07:00
Casper Nielsen 199fcf9d02
Fix: Setup lint GitHub action #30 (#85)
* Fix: Fix Setup lint GitHub action #30

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove branch filter on PR and remove on push

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove on mergequeue

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add tox.ini file

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Return on push

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: tox -e ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore .ruff_cache

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Update tox file

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Add mypy.ini

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore if line is too long

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Set the ignore in command instead

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W503

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: 541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W503

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Ignore F401, unused imports as __init__ files has them

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Return linebreak as tox -e ruff yields that

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore W503 as ruff introduces it

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W293

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E203

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F841

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: W291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F811

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: F541

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ruff want's the space before :

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Ignore space before :

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: E291

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add dev-requirements.txt

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Correct python version

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Ref dev-requirements.txt

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Add mypy cache dir

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Update mypy version

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Fix: Exclude cookbook and quicstarts

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Remove unused import

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Chore: Add specific sub module ignore on error for future smaller fixing

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* Reintroduce branches filter on push and pull_request

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

* chore: Ruff

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>

---------

Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>
2025-04-15 18:20:34 -07:00
Roberto Rodriguez c872c5a8bd
Integrate MCP Client + Enable Async Tool Execution for Agent Framework (#72)
* Enable async-first execution for AgentTool and ToolExecutor

* Update basic agent patterns to support async tool execution

* Updated assistant agentic workflow base to support async tool execution

* fix #70. Updated input for workflow task agent execution

* Update agent actor base to support async tool execution

* Updated logging on workflow message decorator

* Enable lazy initialization of schemas for Orchestrator agentic workflows

* minor update on quickstart 05 apps to follow the right structure

* added basic single-agent example of a dapr workflow agent

* Integrate MCP client with full tool and prompt support

* Created MCP examples in cookbook
2025-04-10 14:31:03 -07:00
Roberto Rodriguez 13c6b65af7
Refactor AgenticWorkflow to Support Pub/Sub Streaming and Flexible Execution Modes (#59)
* Moved Messaging under Workflow and modularized main components.

* Removed WorkflowService and added as_service() to AgenticWorkflow for pub/sub support in headless and service modes.

* Added utility to safely retrieve instance methods decorated with a specific attribute

* Updated Agent and Orchestrator workflows to support the latest messaging system changes.

* Updated AgentActors to integrate with latest messaging system under workflows.

* Made service_port optional to allow random port assignment.

* dapr agents imports and logging

* Updated Multi-agent workflows, deleted JSON logs and tested NVIDIA LLM client notebook

* Integrated new messaging system into multi-agent quickstarts

* Updated agentic workflows docs to reflect changes

* Updated quickstart multi-agent workflows app to run in headless mode

* Fixed Orchestrator as a service and exposed built-in route to start workflow over HTTP

* Updated INFO logging to DEBUG

* updated cookbook with latest changes

* updated quickstart mukti-agent workflows to integrate orchestrator as service change

* Updated docs to trigger agentic workflow over HTTP by default.

* Upgrade Jinja2 to address sandbox breakout vulnerability
2025-03-25 21:13:57 +02:00
Elena Kolevska c6c29faae6
Removes additional address arguments for Dapr client init (#54)
* Removes additional address arguments for Dapr client init

Relies on env variables instead

Signed-off-by: Elena Kolevska <elena@kolevska.com>

correct casing in dapr multi app run files

Signed-off-by: Elena Kolevska <elena@kolevska.com>

removes dummy file

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Updates readmes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
2025-03-21 16:25:26 +02:00
Marc Duiker 4e5f30c999
Remove sandbox refs (#33)
* Remove sandbox refs

Signed-off-by: Marc Duiker <marcduiker@users.noreply.github.com>

* Remove install from source

Signed-off-by: Marc Duiker <marcduiker@users.noreply.github.com>

---------

Signed-off-by: Marc Duiker <marcduiker@users.noreply.github.com>
2025-03-11 08:57:24 -07:00
Roberto Rodriguez 04ddf1acbd
Fixing Agent Assistant Workflow (ToolCalling) Logic (#29)
* Fixed tool executor reference and tool calling logic to update tool history the right way

* Removed dapr config for workflows. No needed anymore

* Implement safe parallel state writes with atomic merging

* Extend workflow state to track tool executions

* removing nested double quotes from Assistant agent logging
2025-03-09 16:27:27 -07:00
Elena Kolevska 70143ec33b
Fixes roundrobin workflow orchestrator and aligns all three orchestrators (#21)
* first round of fixes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds orchestrator interface

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Moves the abstract methods to the base class

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
2025-03-06 11:12:50 -08:00
Bilgin Ibryam 36a7492393
Quickstarts and fixes (#14)
* Initial version of quickstarts

* Renames floki to dapr_agents and adds missing dotenv dependencies

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Updates all dapr dependencies

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes 1

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* dapr wf fix

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* fix llm call quickstart

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes readmes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes quickstarts 4 and 5. Changes orchestrator type in quickstart 5 to Random because the Roundrobin one currently has a bug

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds mechanical markdown to quickstarts

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds llm call quickstart to automated testing

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Updates docs with instructions to run tests

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds tests for quickstarts 3 and 4

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Added testing for quickstart 5

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Set up venv in makefile

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Test tweaks

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
Co-authored-by: Elena Kolevska <elena@kolevska.com>
Co-authored-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
2025-03-06 09:55:49 -08:00
Roberto Rodriguez 7fac47b6d4
Enhanced Workflow and Task Registration, Dynamic Message Routing, Structured Validation, and Unified API Integration (#18)
* Refactored Workflow & Task Decorators for Easier Standalone Registration

* Refactored WorkflowApp: Improved Task & Workflow Registration, Enhanced State Management

* Refactored WorkflowTask: Improved LLM Execution, Validation, and Chat History Support

* Refactored API Server & Workflow Services: Unified FastAPI & Dapr Integration

* Refactored Pub/Sub and Message Routing: Unified Dapr Integration & CloudEvent Parsing

* Introduced AgenticWorkflowService: Unified Agent Workflows, State Management & Messaging

* Enhanced Orchestrators with Dapr Workflow Patterns & Intelligent Message Routing

* Updated Text Printer for Agents to show their name.

* Introduced Assistant Agent with Tool-Driven LLM Workflow, Dapr Messaging, and Adaptive Execution

* Consolidated Actor Wrappers into Unified Agent Actor Service and updated agent response logic

* Removed workflows folder from Actors directory. Workflow App and Service folders taking over.

* Introduced Execution Framework with Docker and Local Code Executors for Agents.

* Refactored Dapr gRPC Configuration: Unified Naming and Improved Initialization Logic

* Updated VectorStoreBase to Use Explicit EmbedderBase Type Annotation

* Enhanced Structured Response Handling: JSON Schema & Iterable Support

* Ran notebooks with latest version.

* Updated agentic workflow docs

* removed floki from huggingface chat client

* Updated init files for latest changes

* updated dapr pip package to 1.5.0 to use latest version

* removed floki reference from code and docs. Tags in README still point to floki

* Added a dummy notebook to test ReAct Agents
2025-03-04 06:09:31 -08:00
yaron2 2d52cffd74 floki -> dapr file/code reference change
Signed-off-by: yaron2 <schneider.yaron@live.com>
2025-01-27 16:31:25 -08:00
Roberto Rodriguez 87d072dae5 Refreshed all notebooks with dapr_agents module 2025-01-25 19:05:01 -05:00
Roberto Rodriguez d87dcda832 FLOKI Initial Contribution 2025-01-14 13:05:22 -05:00