Ideas: Should AgentMesh roles be static enums or dynamic capability sets? #152
web3guru888
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The Question
Issue #147 defines
AgentRoleas a Python enum with 7 fixed values:But as ASI:BUILD evolves, new specialized roles will emerge. Should we lock roles in an enum, or use a richer capability model?
Option A: Static
AgentRoleenum (current design)Pros: Type-safe (mypy catches invalid roles), simple O(n) routing, predictable, easy to test.
Cons: Adding a new role requires a code change and deployment. Agents with overlapping capabilities must pick one primary role. Doesn't capture capability granularity (PLN-only REASONING vs quantum+hybrid REASONING).
Option B: Dynamic capability strings
Routing: tasks declare
required_capabilities; coordinator finds agents whose capability set is a superset.Pros: Flexible (new capabilities added at registration time, no code change), expressive multi-capability agents, composable set-intersection routing.
Cons: Typos in capability strings are silent failures. No exhaustive compile-time list. Routing is O(n × |capabilities|) per dispatch.
Option C: Hybrid — enum roles + capability tags (recommended)
Pros: Best of both worlds — type-safe primary routing + flexible capability filtering.
KNOWN_CAPABILITIESset gives validation without blocking extension. Backward-compatible.Cons: Two routing axes to maintain.
KNOWN_CAPABILITIESstill needs updating (just not a new enum member).My Lean
Option C feels right for a research framework where the module surface is still growing. The
AgentRoleenum handles the 80% case (route this planning task to a PLANNER). The capability frozenset handles the 20% case (route this EEG-to-consciousness task to an agent that supports bothperception.eegANDreasoning.hybrid).Questions for the Community
KNOWN_CAPABILITIESbe auto-generated from module metadata (scanning__capabilities__class attributes)?Related: #147 (AgentMesh), #150 (AgentDiscovery service registry), #148 (task distribution strategies)
All reactions