Files
cleveragents-core/features/agent_langgraph_port.feature
brent.edwards 17fe46d925
CI / lint (pull_request) Successful in 18s
CI / typecheck (pull_request) Successful in 26s
CI / security (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 14s
CI / build (pull_request) Successful in 12s
CI / behave (3.13) (pull_request) Failing after 3m50s
CI / docker (pull_request) Has been skipped
CI / helm (pull_request) Has been skipped
CI / coverage (pull_request) Failing after 4m20s
test(behave): fix behave tests
There had been over 100 behave tests failing. There should be none failing now.
2026-02-12 04:47:02 +00:00

231 lines
7.6 KiB
Gherkin

Feature: Actor-first port of v2 agent and LangGraph suites
As a developer migrating v2 agent flows
I want actor-only agent and LangGraph coverage
So that v3 matches the v2 behaviors without provider/model flags
# TODO: Uncomment when step definitions are implemented
# Background:
# Given the agent system is initialized with actor-first configuration
#
# # From langgraph_state_management.feature
# Scenario: LangGraph with actor-based state management
# Given I have a stateful LangGraph configuration:
# """
# {
# "name": "stateful_graph",
# "actor": "openai/gpt-4",
# "checkpointing": true,
# "enable_time_travel": true,
# "nodes": {
# "accumulate": {
# "type": "function",
# "function": "add_to_state"
# }
# },
# "edges": [
# {"source": "start", "target": "accumulate"},
# {"source": "accumulate", "target": "end"}
# ]
# }
# """
# When I create the stateful graph
# Then the graph should be created with actor "openai/gpt-4"
# And the graph state should be persisted
# And time travel should be enabled
#
# # From agent_modules_coverage.feature
# Scenario: Create agent with actor configuration
# Given I have an agent configuration:
# """
# {
# "name": "test_agent",
# "type": "base",
# "actor": "anthropic/claude-3"
# }
# """
# When I create an agent from the configuration
# Then the agent should be created successfully
# And the agent should use actor "anthropic/claude-3"
# And the agent module should be accessible
#
# # From chain_agent_comprehensive.feature
# Scenario: Chain agent with actor and steps
# Given I have a chain agent configuration:
# """
# {
# "name": "test_chain",
# "type": "chain",
# "actor": "openai/gpt-3.5-turbo",
# "steps": ["validate", "transform", "output"],
# "prompt": "Process this: {message}"
# }
# """
# When I create a chain agent from the configuration
# Then the chain agent should be created successfully
# And the chain agent should have 3 steps
# And the chain agent should use actor "openai/gpt-3.5-turbo"
#
# Scenario: Process message with actor-based chain agent
# Given I have a chain agent with actor "local/custom-processor"
# And the chain has steps ["parse", "analyze", "format"]
# When I process the message "Test input"
# Then the chain should use the specified actor
# And the result should show processing through all steps
#
# # From composite_agent_coverage.feature pattern
# Scenario: Composite agent with multiple actors
# Given I have a composite agent configuration:
# """
# {
# "name": "multi_actor_composite",
# "type": "composite",
# "agents": [
# {
# "name": "analyzer",
# "actor": "openai/gpt-4",
# "role": "analyze"
# },
# {
# "name": "generator",
# "actor": "anthropic/claude-3",
# "role": "generate"
# },
# {
# "name": "validator",
# "actor": "local/validator",
# "role": "validate"
# }
# ]
# }
# """
# When I create a composite agent from the configuration
# Then the composite agent should have 3 sub-agents
# And each sub-agent should use its configured actor
# And parallel processing should work with all actors
#
# # From reactive_agents.feature pattern
# Scenario: Reactive agent with actor-based streaming
# Given I have a reactive agent configuration:
# """
# {
# "name": "stream_agent",
# "type": "reactive",
# "actor": "openai/gpt-4",
# "stream_config": {
# "stream_type": "transform",
# "operators": ["map", "filter", "reduce"]
# }
# }
# """
# When I create a reactive agent from the configuration
# Then the agent should support reactive streaming
# And the stream should use actor "openai/gpt-4"
# And operators should transform data through the actor
#
# # From tool_agent.feature pattern
# Scenario: Tool agent with actor and tool configuration
# Given I have a tool agent configuration:
# """
# {
# "name": "tool_agent",
# "type": "tool",
# "actor": "openai/gpt-4",
# "tools": [
# {
# "name": "calculator",
# "type": "function",
# "function": "calculate"
# },
# {
# "name": "search",
# "type": "api",
# "endpoint": "search_api"
# }
# ]
# }
# """
# When I create a tool agent from the configuration
# Then the tool agent should have 2 tools available
# And the tool agent should use actor "openai/gpt-4"
# And tool calls should be routed through the actor
#
# # LangGraph visualization with actors
# Scenario: Visualize actor-based LangGraph
# Given I have a complex LangGraph with multiple actors:
# """
# {
# "name": "visualization_graph",
# "nodes": {
# "input": {
# "type": "input",
# "actor": "openai/gpt-3.5-turbo"
# },
# "process": {
# "type": "llm",
# "actor": "anthropic/claude-3"
# },
# "validate": {
# "type": "tool",
# "actor": "local/validator"
# },
# "output": {
# "type": "output",
# "actor": "openai/gpt-4"
# }
# },
# "edges": [
# {"source": "input", "target": "process"},
# {"source": "process", "target": "validate"},
# {"source": "validate", "target": "output"}
# ]
# }
# """
# When I visualize the graph
# Then the visualization should show all nodes with their actors
# And the edge flow should be clearly represented
# And actor transitions should be highlighted
#
# # Agent factory with default actor
# Scenario: Agent factory creates agents with default actor
# Given I have an agent factory with default actor "openai/gpt-4"
# When I create multiple agents using the factory:
# | agent_name | agent_type |
# | parser | chain |
# | analyzer | tool |
# | generator | composite |
# Then all agents should use the default actor "openai/gpt-4"
# And each agent should have the correct type
#
# # LangGraph with conditional routing based on actor capabilities
# Scenario: Conditional routing based on actor capabilities
# Given I have a LangGraph with conditional routing:
# """
# {
# "name": "capability_router",
# "nodes": {
# "router": {
# "type": "conditional",
# "conditions": [
# {
# "if": "needs_vision",
# "then": "vision_processor",
# "actor": "openai/gpt-4-vision"
# },
# {
# "if": "needs_code",
# "then": "code_generator",
# "actor": "anthropic/claude-3-opus"
# },
# {
# "else": "general_processor",
# "actor": "openai/gpt-3.5-turbo"
# }
# ]
# }
# }
# }
# """
# When I route a request that needs vision
# Then the request should be routed to "openai/gpt-4-vision"
# And the routing decision should be based on actor capabilities