Pillars¶
Declare Once¶
Fabric agent definitions should be portable across supported runtimes. Framework specificity belongs in adapters and optional extras, not in the basic fabric agent schema.
Data And Context Move Together¶
AgenticData should carry the current extended data value, active
provider context, active runtime context, logging context, and
tool/capability registry. It should extend VendorData; it should not
duplicate ExtendedData or provider behavior.
Lazy by Default¶
Optional frameworks, vendor SDKs, and tool packages must be imported only when their runner or tool is used.
Capabilities Over Boilerplate¶
Agent runners and tools should declare capabilities with decorators
collected by __init_subclass__. Dynamic facade methods are allowed
only when they route to declared capabilities.
Clear Boundaries¶
This package does not own data primitives or vendor APIs. It composes
extended-data and vendor-fabric when those capabilities are
installed. Provider connectors and dispatch stay in vendor-fabric;
framework-specific and agent-facing wrappers built from those capabilities
stay in this package.
Testable Adapters¶
Every runner and tool adapter should have unit coverage for resolution, availability, and failure behavior. End-to-end tests can stay optional and marked by runtime.
Frameworks Are Optional, Contracts Are Not¶
CrewAI, LangGraph, Strands, and local CLI runners can be optional installs. Their availability, missing dependency messages, fixture behavior, and runtime selection order must still be documented and tested.