Files
cleveragents-core/features/scope_chain_resolver_extension.feature
HAL9000 40642f0279 feat(context): implement custom scope resolver registration mechanism
- Add ScopeChainResolverExtension protocol to extension_protocols.py
- Register scope.chain_resolver as 31st extension point in extension_catalog.py
- Implement BDD tests for scope chain resolver registration and invocation
- Update extension point count from 30 to 31
- Support custom entity name resolution through pluggable scope resolvers

Closes #5705
2026-06-13 23:43:22 -04:00

61 lines
2.3 KiB
Gherkin

Feature: Scope chain resolver extension registration and invocation
As a plugin developer
I want to register custom scope chain resolvers
So that I can extend entity name resolution with custom logic
Background:
Given the plugin manager is initialized
And the extension catalog is loaded
Scenario: ScopeChainResolverExtension protocol is defined
When I check the extension protocols
Then ScopeChainResolverExtension protocol should exist
And it should have a resolver_name property
And it should have a can_resolve method
And it should have a resolve method
Scenario: Scope chain resolver extension point is registered
When I get all extension point definitions
Then the extension point "scope.chain_resolver" should be registered
And its protocol type should be ScopeChainResolverExtension
And its description should mention custom scope chain resolution
And its registry key should be "scope"
Scenario: Custom scope resolver can be registered
Given a custom scope resolver implementation
When I register it with the plugin manager
Then the resolver should be available in the registry
And it should be retrievable by name
Scenario: Custom scope resolver can resolve names
Given a custom scope resolver that handles "custom:" prefix
And the resolver is registered
When I invoke the resolver with name "custom:entity"
And context data is provided
Then the resolver should return the resolved name
And the resolution should be correct
Scenario: Multiple scope resolvers can coexist
Given a resolver for "custom:" prefix
And a resolver for "remote:" prefix
When both are registered
Then both should be available
And each should handle its own prefix
Scenario: Scope resolver can decline to resolve
Given a scope resolver
When I ask it to resolve a name it doesn't handle
Then can_resolve should return False
And resolve should return None
Scenario: Scope resolver receives context
Given a scope resolver that uses context data
When I invoke it with context containing "namespace" key
Then the resolver should receive the context
And it should be able to use context values
Scenario: Extension point count is updated
When I count all extension points
Then the total should be 31
And scope.chain_resolver should be included