* Revert "feat: add prompt observability code (#2027)"
This reverts commit 90f1bee602.
* Fix issues with flows post merge
* Decoupling telemetry and ensure tests (#2212)
* feat: Enhance event listener and telemetry tracking
- Update event listener to improve telemetry span handling
- Add execution_span field to Task for better tracing
- Modify event handling in EventListener to use new span tracking
- Remove debug print statements
- Improve test coverage for crew and flow events
- Update cassettes to reflect new event tracking behavior
* Remove telemetry references from Crew class
- Remove Telemetry import and initialization from Crew class
- Delete _telemetry attribute from class configuration
- Clean up unused telemetry-related code
* test: Improve crew verbose output test with event log filtering
- Filter out event listener logs in verbose output test
- Ensure no output when verbose is set to False
- Enhance test coverage for crew logging behavior
* dropped comment
* refactor: Improve telemetry span tracking in EventListener
- Remove `execution_span` from Task class
- Add `execution_spans` dictionary to EventListener to track spans
- Update task event handlers to use new span tracking mechanism
- Simplify span management across task lifecycle events
* lint
* Fix failing test
---------
Co-authored-by: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com>
* WIP crew events emitter
* Refactor event handling and introduce new event types
- Migrate from global `emit` function to `event_bus.emit`
- Add new event types for task failures, tool usage, and agent execution
- Update event listeners and event bus to support more granular event tracking
- Remove deprecated event emission methods
- Improve event type consistency and add more detailed event information
* Add event emission for agent execution lifecycle
- Emit AgentExecutionStarted and AgentExecutionError events
- Update CrewAgentExecutor to use event_bus for tracking agent execution
- Refactor error handling to include event emission
- Minor code formatting improvements in task.py and crew_agent_executor.py
- Fix a typo in test file
* Refactor event system and add third-party event listeners
- Move event_bus import to correct module paths
- Introduce BaseEventListener abstract base class
- Add AgentOpsListener for third-party event tracking
- Update event listener initialization and setup
- Clean up event-related imports and exports
* Enhance event system type safety and error handling
- Improve type annotations for event bus and event types
- Add null checks for agent and task in event emissions
- Update import paths for base tool and base agent
- Refactor event listener type hints
- Remove unnecessary print statements
- Update test configurations to match new event handling
* Refactor event classes to improve type safety and naming consistency
- Rename event classes to have explicit 'Event' suffix (e.g., TaskStartedEvent)
- Update import statements and references across multiple files
- Remove deprecated events.py module
- Enhance event type hints and configurations
- Clean up unnecessary event-related code
* Add default model for CrewEvaluator and fix event import order
- Set default model to "gpt-4o-mini" in CrewEvaluator when no model is specified
- Reorder event-related imports in task.py to follow standard import conventions
- Update event bus initialization method return type hint
- Export event_bus in events/__init__.py
* Fix tool usage and event import handling
- Update tool usage to use `.get()` method when checking tool name
- Remove unnecessary `__all__` export list in events/__init__.py
* Refactor Flow and Agent event handling to use event_bus
- Remove `event_emitter` from Flow class and replace with `event_bus.emit()`
- Update Flow and Agent tests to use event_bus event listeners
- Remove redundant event emissions in Flow methods
- Add debug print statements in Flow execution
- Simplify event tracking in test cases
* Enhance event handling for Crew, Task, and Event classes
- Add crew name to failed event types (CrewKickoffFailedEvent, CrewTrainFailedEvent, CrewTestFailedEvent)
- Update Task events to remove redundant task and context attributes
- Refactor EventListener to use Logger for consistent event logging
- Add new event types for Crew train and test events
- Improve event bus event tracking in test cases
* Remove telemetry and tracing dependencies from Task and Flow classes
- Remove telemetry-related imports and private attributes from Task class
- Remove `_telemetry` attribute from Flow class
- Update event handling to emit events without direct telemetry tracking
- Simplify task and flow execution by removing explicit telemetry spans
- Move telemetry-related event handling to EventListener
* Clean up unused imports and event-related code
- Remove unused imports from various event and flow-related files
- Reorder event imports to follow standard conventions
- Remove unnecessary event type references
- Simplify import statements in event and flow modules
* Update crew test to validate verbose output and kickoff_for_each method
- Enhance test_crew_verbose_output to check specific listener log messages
- Modify test_kickoff_for_each_invalid_input to use Pydantic validation error
- Improve test coverage for crew logging and input validation
* Update crew test verbose output with improved emoji icons
- Replace task and agent completion icons from 👍 to ✅
- Enhance readability of test output logging
- Maintain consistent test coverage for crew verbose output
* Add MethodExecutionFailedEvent to handle flow method execution failures
- Introduce new MethodExecutionFailedEvent in flow_events module
- Update Flow class to catch and emit method execution failures
- Add event listener for method execution failure events
- Update event-related imports to include new event type
- Enhance test coverage for method execution failure handling
* Propagate method execution failures in Flow class
- Modify Flow class to re-raise exceptions after emitting MethodExecutionFailedEvent
- Reorder MethodExecutionFailedEvent import to maintain consistent import style
* Enable test coverage for Flow method execution failure event
- Uncomment pytest.raises() in test_events to verify exception handling
- Ensure test validates MethodExecutionFailedEvent emission during flow kickoff
* Add event handling for tool usage events
- Introduce event listeners for ToolUsageFinishedEvent and ToolUsageErrorEvent
- Log tool usage events with descriptive emoji icons (✅ and ❌)
- Update event_listener to track and log tool usage lifecycle
* Reorder and clean up event imports in event_listener
- Reorganize imports for tool usage events and other event types
- Maintain consistent import ordering and remove unused imports
- Ensure clean and organized import structure in event_listener module
* moving to dedicated eventlistener
* dont forget crew level
* Refactor AgentOps event listener for crew-level tracking
- Modify AgentOpsListener to handle crew-level events
- Initialize and end AgentOps session at crew kickoff and completion
- Create agents for each crew member during session initialization
- Improve session management and event recording
- Clean up and simplify event handling logic
* Update test_events to validate tool usage error event handling
- Modify test to assert single error event with correct attributes
- Use pytest.raises() to verify error event generation
- Simplify error event validation in test case
* Improve AgentOps listener type hints and formatting
- Add string type hints for AgentOps classes to resolve potential import issues
- Clean up unnecessary whitespace and improve code indentation
- Simplify initialization and event handling logic
* Update test_events to validate multiple tool usage events
- Modify test to assert 75 events instead of a single error event
- Remove pytest.raises() check, allowing crew kickoff to complete
- Adjust event validation to support broader event tracking
* Rename event_bus to crewai_event_bus for improved clarity and specificity
- Replace all references to `event_bus` with `crewai_event_bus`
- Update import statements across multiple files
- Remove the old `event_bus.py` file
- Maintain existing event handling functionality
* Enhance EventListener with singleton pattern and color configuration
- Implement singleton pattern for EventListener to ensure single instance
- Add default color configuration using EMITTER_COLOR from constants
- Modify log method calls to use default color and remove redundant color parameters
- Improve initialization logic to prevent multiple initializations
* Add FlowPlotEvent and update event bus to support flow plotting
- Introduce FlowPlotEvent to track flow plotting events
- Replace Telemetry method with event bus emission in Flow.plot()
- Update event bus to support new FlowPlotEvent type
- Add test case to validate flow plotting event emission
* Remove RunType enum and clean up crew events module
- Delete unused RunType enum from crew_events.py
- Simplify crew_events.py by removing unnecessary enum definition
- Improve code clarity by removing unneeded imports
* Enhance event handling for tool usage and agent execution
- Add new events for tool usage: ToolSelectionErrorEvent, ToolValidateInputErrorEvent
- Improve error tracking and event emission in ToolUsage and LLM classes
- Update AgentExecutionStartedEvent to use task_prompt instead of inputs
- Add comprehensive test coverage for new event types and error scenarios
* Refactor event system and improve crew testing
- Extract base CrewEvent class to a new base_events.py module
- Update event imports across multiple event-related files
- Modify CrewTestStartedEvent to use eval_llm instead of openai_model_name
- Add LLM creation validation in crew testing method
- Improve type handling and event consistency
* Refactor task events to use base CrewEvent
- Move CrewEvent import from crew_events to base_events
- Remove unnecessary blank lines in task_events.py
- Simplify event class structure for task-related events
* Update AgentExecutionStartedEvent to use task_prompt
- Modify test_events.py to use task_prompt instead of inputs
- Simplify event input validation in test case
- Align with recent event system refactoring
* Improve type hinting for TaskCompletedEvent handler
- Add explicit type annotation for TaskCompletedEvent in event_listener.py
- Enhance type safety for event handling in EventListener
* Improve test_validate_tool_input_invalid_input with mock objects
- Add explicit mock objects for agent and action in test case
- Ensure proper string values for mock agent and action attributes
- Simplify test setup for ToolUsage validation method
* Remove ToolUsageStartedEvent emission in tool usage process
- Remove unnecessary event emission for tool usage start
- Simplify tool usage event handling
- Eliminate redundant event data preparation step
* refactor: clean up and organize imports in llm and flow modules
* test: Improve flow persistence test cases and logging
Previously, `@start` methods triggered a `FlowStartedEvent` but did not
emit a `MethodExecutionStartedEvent`. This was fine for a single entry
point but caused ambiguity when multiple `@start` methods existed.
This commit (1) emits events for starting points, (2) adds tests
ensuring ordering, (3) adds more fields to events.
* clean up. fix type safety. address memory config docs
* improve manager
* Include fix for o1 models not supporting system messages
* more broad with o1
* address fix: Typo in expected_output string #2045
* drop prints
* drop prints
* wip
* wip
* fix failing memory tests
* Fix memory provider issue
* clean up short term memory
* revert ltm
* drop
* fix: ensure persisted state overrides class defaults
- Remove early return in Flow.__init__ to allow proper state initialization
- Add test_flow_default_override.py to verify state override behavior
- Fix issue where default values weren't being overridden by persisted state
Fixes the issue where persisted state values weren't properly overriding
class defaults when restarting a flow with a previously saved state ID.
Co-Authored-By: Joe Moura <joao@crewai.com>
* test: improve state restoration verification with has_set_count flag
Co-Authored-By: Joe Moura <joao@crewai.com>
* test: add has_set_count field to PoemState
Co-Authored-By: Joe Moura <joao@crewai.com>
* refactoring test
* fix: ensure persisted state overrides class defaults
- Remove early return in Flow.__init__ to allow proper state initialization
- Add test_flow_default_override.py to verify state override behavior
- Fix issue where default values weren't being overridden by persisted state
Fixes the issue where persisted state values weren't properly overriding
class defaults when restarting a flow with a previously saved state ID.
Co-Authored-By: Joe Moura <joao@crewai.com>
* test: improve state restoration verification with has_set_count flag
Co-Authored-By: Joe Moura <joao@crewai.com>
* test: add has_set_count field to PoemState
Co-Authored-By: Joe Moura <joao@crewai.com>
* refactoring test
* Fixing flow state
* fixing peristed stateful flows
* linter
* type fix
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Joe Moura <joao@crewai.com>
* Add @persist decorator with SQLite persistence
- Add FlowPersistence abstract base class
- Implement SQLiteFlowPersistence backend
- Add @persist decorator for flow state persistence
- Add tests for flow persistence functionality
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix remaining merge conflicts in uv.lock
- Remove stray merge conflict markers
- Keep main's comprehensive platform-specific resolution markers
- Preserve all required dependencies for persistence functionality
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix final CUDA dependency conflicts in uv.lock
- Resolve NVIDIA CUDA solver dependency conflicts
- Use main's comprehensive platform checks
- Ensure all merge conflict markers are removed
- Preserve persistence-related dependencies
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix nvidia-cusparse-cu12 dependency conflicts in uv.lock
- Resolve NVIDIA CUSPARSE dependency conflicts
- Use main's comprehensive platform checks
- Complete systematic check of entire uv.lock file
- Ensure all merge conflict markers are removed
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix triton filelock dependency conflicts in uv.lock
- Resolve triton package filelock dependency conflict
- Use main's comprehensive platform checks
- Complete final systematic check of entire uv.lock file
- Ensure TOML file structure is valid
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix merge conflict in crew_test.py
- Remove duplicate assertion in test_multimodal_agent_live_image_analysis
- Clean up conflict markers
- Preserve test functionality
Co-Authored-By: Joe Moura <joao@crewai.com>
* Clean up trailing merge conflict marker in crew_test.py
- Remove remaining conflict marker at end of file
- Preserve test functionality
- Complete conflict resolution
Co-Authored-By: Joe Moura <joao@crewai.com>
* Improve type safety in persistence implementation and resolve merge conflicts
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Add explicit type casting in _create_initial_state method
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Improve type safety in flow state handling with proper validation
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Improve type system with proper TypeVar scoping and validation
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Improve state restoration logic and add comprehensive tests
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Initialize FlowState instances without passing id to constructor
Co-Authored-By: Joe Moura <joao@crewai.com>
* feat: Add class-level flow persistence decorator with SQLite default
- Add class-level @persist decorator support
- Set SQLiteFlowPersistence as default backend
- Use db_storage_path for consistent database location
- Improve async method handling and type safety
- Add comprehensive docstrings and examples
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: Sort imports in decorators.py to fix lint error
Co-Authored-By: Joe Moura <joao@crewai.com>
* style: Organize imports according to PEP 8 standard
Co-Authored-By: Joe Moura <joao@crewai.com>
* style: Format typing imports with line breaks for better readability
Co-Authored-By: Joe Moura <joao@crewai.com>
* style: Simplify import organization to fix lint error
Co-Authored-By: Joe Moura <joao@crewai.com>
* style: Fix import sorting using Ruff auto-fix
Co-Authored-By: Joe Moura <joao@crewai.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Joe Moura <joao@crewai.com>
Co-authored-by: João Moura <joaomdmoura@gmail.com>
* feat: add unique ID to flow states
- Add FlowState base model with UUID field
- Update type variable T to use FlowState
- Ensure all states (structured and unstructured) get UUID
- Fix type checking in _create_initial_state method
Co-Authored-By: Joe Moura <joao@crewai.com>
* docs: update documentation to reflect automatic UUID generation in flow states
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: sort imports in flow.py
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: sort imports according to PEP 8
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: auto-fix import sorting with ruff
Co-Authored-By: Joe Moura <joao@crewai.com>
* test: add comprehensive tests for flow state UUID functionality
Co-Authored-By: Joe Moura <joao@crewai.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Joe Moura <joao@crewai.com>
* docs: add comprehensive docstrings to Flow class and methods
- Added NumPy-style docstrings to all decorator functions
- Added detailed documentation to Flow class methods
- Included parameter types, return types, and examples
- Enhanced documentation clarity and completeness
Co-Authored-By: Joe Moura <joao@crewai.com>
* feat: add secure path handling utilities
- Add path_utils.py with safe path handling functions
- Implement path validation and security checks
- Integrate secure path handling in flow_visualizer.py
- Add path validation in html_template_handler.py
- Add comprehensive error handling for path operations
Co-Authored-By: Joe Moura <joao@crewai.com>
* docs: add comprehensive docstrings and type hints to flow utils (#1819)
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: add type annotations and fix import sorting
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: add type annotations to flow utils and visualization utils
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: resolve import sorting and type annotation issues
Co-Authored-By: Joe Moura <joao@crewai.com>
* fix: properly initialize and update edge_smooth variable
Co-Authored-By: Joe Moura <joao@crewai.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Joe Moura <joao@crewai.com>
* Almost working!
* It fully works but not clean enought
* Working but not clean engouth
* Everything is workign
* WIP. Working on adding and & or to flows. In the middle of setting up template for flow as well
* template working
* Everything is working
* More changes and todos
* Add more support for @start
* Router working now
* minor tweak to
* minor tweak to conditions and event handling
* Update logs
* Too trigger happy with cleanup
* Added in Thiago fix
* Flow passing results again
* Working on docs.
* made more progress updates on docs
* Finished talking about controlling flows
* add flow output
* fixed flow output section
* add crews to flows section is looking good now
* more flow doc changes
* Update docs and add more examples
* drop visualizer
* save visualizer
* pyvis is beginning to work
* pyvis working
* it is working
* regular methods and triggers working. Need to work on router next.
* properly identifying router and router children nodes. Need to fix color
* children router working. Need to support loops
* curving cycles but need to add curve conditionals
* everythin is showing up properly need to fix curves
* all working. needs to be cleaned up
* adjust padding
* drop lib
* clean up prior to PR
* incorporate joao feedback
* final tweaks for joao
* Refactor to make crews easier to understand
* update CLI and templates
* Fix crewai version in flows
* Fix merge conflict
* Almost working!
* It fully works but not clean enought
* Working but not clean engouth
* Everything is workign
* WIP. Working on adding and & or to flows. In the middle of setting up template for flow as well
* template working
* Everything is working
* More changes and todos
* Add more support for @start
* Router working now
* minor tweak to
* minor tweak to conditions and event handling
* Update logs
* Too trigger happy with cleanup
* Added in Thiago fix
* Flow passing results again
* Working on docs.
* made more progress updates on docs
* Finished talking about controlling flows
* add flow output
* fixed flow output section
* add crews to flows section is looking good now
* more flow doc changes
* Update docs and add more examples
* drop visualizer
* save visualizer
* pyvis is beginning to work
* pyvis working
* it is working
* regular methods and triggers working. Need to work on router next.
* properly identifying router and router children nodes. Need to fix color
* children router working. Need to support loops
* curving cycles but need to add curve conditionals
* everythin is showing up properly need to fix curves
* all working. needs to be cleaned up
* adjust padding
* drop lib
* clean up prior to PR
* incorporate joao feedback
* final tweaks for joao