Files
cleveragents-core/features/actor_hierarchy.feature

179 lines
8.1 KiB
Gherkin

Feature: Hierarchical Actor YAML Schema Extensions
As a developer configuring actors
I want to extend actor YAML with LSP bindings, tool-source references,
and improved subgraph support
So that graph nodes have fine-grained control over language servers and tools
# -------------------------------------------------------------------
# LSP Binding on NodeDefinition
# -------------------------------------------------------------------
Scenario: Node with explicit LSP binding
Given a hierarchy actor YAML with node lsp_binding
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "code_writer" should have lsp_binding
And the hierarchy node "code_writer" lsp_binding server should be "local/pyright"
And the hierarchy node "code_writer" lsp_binding languages should contain "python"
Scenario: Node with auto LSP binding
Given a hierarchy actor YAML with auto lsp_binding
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "implementer" should have lsp_binding
And the hierarchy node "implementer" lsp_binding auto should be true
Scenario: Node without LSP binding is valid
Given a hierarchy actor YAML with no lsp_binding
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "agent_node" should not have lsp_binding
Scenario: LSP binding with invalid server name
Given a hierarchy actor YAML with lsp_binding server "no-namespace"
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "lsp_binding"
# -------------------------------------------------------------------
# Tool-Source References on NodeDefinition
# -------------------------------------------------------------------
Scenario: Node with tool_sources referencing skills
Given a hierarchy actor YAML with node tool_sources skills
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "executor" should have tool_sources
And the hierarchy node "executor" tool_sources should have 1 items
Scenario: Node with tool_sources referencing MCP server
Given a hierarchy actor YAML with node tool_sources mcp
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy node "executor" tool_sources item 0 type should be "mcp"
And the hierarchy node "executor" tool_sources item 0 name should be "local/filesystem"
Scenario: Node with tool_sources referencing builtin group
Given a hierarchy actor YAML with node tool_sources builtin
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy node "executor" tool_sources item 0 type should be "builtin"
And the hierarchy node "executor" tool_sources item 0 group should be "file_operations"
Scenario: Node with mixed tool_sources
Given a hierarchy actor YAML with mixed node tool_sources
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy node "executor" tool_sources should have 3 items
Scenario: Node with invalid tool_sources type
Given a hierarchy actor YAML with invalid tool_sources type
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "tool_sources"
Scenario: Node without tool_sources is valid
Given a hierarchy actor YAML with no lsp_binding
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "agent_node" should not have tool_sources
# -------------------------------------------------------------------
# Subgraph Node Enhancements
# -------------------------------------------------------------------
Scenario: Subgraph node with actor_ref
Given a hierarchy actor YAML with subgraph actor_ref
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy graph node "review" should have type "subgraph"
And the hierarchy node "review" actor_ref should be "local/code-reviewer"
Scenario: Subgraph node with actor_ref non-namespaced fails
Given a hierarchy actor YAML with subgraph actor_ref "bad-ref"
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "actor_ref"
# -------------------------------------------------------------------
# Skills Field on ActorConfigSchema
# -------------------------------------------------------------------
Scenario: Actor with skills list
Given a hierarchy actor YAML with skills list
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor should have 2 skills
Scenario: Actor with empty skills is valid
Given a hierarchy actor YAML with empty skills
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor should have 0 skills
# -------------------------------------------------------------------
# LSP Fields on ActorConfigSchema (top-level)
# -------------------------------------------------------------------
Scenario: Actor with lsp list
Given a hierarchy actor YAML with lsp list
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor lsp should have 2 items
Scenario: Actor with lsp auto binding
Given a hierarchy actor YAML with lsp auto
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor lsp_auto should be true
Scenario: Actor with lsp_capabilities list
Given a hierarchy actor YAML with lsp_capabilities
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor lsp_capabilities should contain "diagnostics"
Scenario: Actor with lsp_capabilities all
Given a hierarchy actor YAML with lsp_capabilities all
When I parse the hierarchy actor YAML
Then the hierarchy actor should be valid
And the hierarchy actor lsp_capabilities should be "all"
# -------------------------------------------------------------------
# Precise Validation Error Messages
# -------------------------------------------------------------------
Scenario: Missing entry node gives precise field path
Given a hierarchy actor YAML with bad entry_node "nonexistent"
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "entry_node"
And the hierarchy parse error should mention "nonexistent"
Scenario: Duplicate node IDs gives precise error
Given a hierarchy actor YAML with duplicate node ids
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "Duplicate"
Scenario: Cycle detection gives node path
Given a hierarchy actor YAML with cycle
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "cycle"
Scenario: Edge referencing non-existent node gives precise error
Given a hierarchy actor YAML with bad edge from_node "ghost"
When I parse the hierarchy actor YAML expecting failure
Then the hierarchy parse error should mention "ghost"
# -------------------------------------------------------------------
# Loader Integration with Hierarchical Actors
# -------------------------------------------------------------------
Scenario: Loader discovers hierarchical actor YAML
Given a hierarchy temp dir with a hierarchical actor YAML file
When I create a hierarchy loader and run discovery
Then the hierarchy loader should find 1 actors
And the hierarchy loaded actor should have skills
And the hierarchy loaded actor should have lsp
Scenario: Loader rejects actor with invalid lsp_binding
Given a hierarchy temp dir with invalid lsp_binding actor YAML
When I create a hierarchy loader and run discovery expecting error
Then the hierarchy loader error should mention "lsp_binding"