Repository navigation
TFrameX v0.1.3 - Refactor & Critical Bug Fixes
TFrameX v0.1.3 Release Notes
This release focuses on significant internal refactoring for improved project structure, robustness, and adherence to modern Python packaging standards. It also addresses critical import issues, including circular dependencies.
There are more examples now!!!
✨ New Features & Enhancements
- Improved Project Structure: The internal layout of the
tframexlibrary has been reorganized into more logical sub-packages (agents,flows,models,patterns,util). This enhances maintainability and clarity for future development. - Introduction of
EngineClass: A newEngineclass (tframex.util.engine.Engine) has been introduced to handle agent instantiation and execution logic, decoupling it from theTFrameXRuntimeContext. This promotes better separation of concerns. - Enhanced Logging: Implemented a new logging configuration utility (
tframex.util.logging.logging_config) providing colored and structured logging output by default for better debugging and operational visibility. - Modern Packaging:
- Transitioned primary packaging configuration to
pyproject.toml, adhering to modern Python standards (PEP 517, PEP 621). - Updated license specification in
pyproject.tomlto uselicense = { file = "LICENSE" }and removed deprecated license classifiers, addressingsetuptoolsdeprecation warnings. - Corrected package discovery in
pyproject.toml(changedwhere = ["src"]towhere = ["."]) to accurately reflect the project structure, resolving build errors related toegg_base.
- Transitioned primary packaging configuration to
- Default Behavior Change for Agents: The
@app.agentdecorator'sstrip_think_tagsparameter now defaults toTrue. This means agents will, by default, remove<think>...</think>blocks from their final output, leading to cleaner responses unless explicitly overridden.
🐛 Bug Fixes
- Critical: Resolved Circular Import: Fixed a significant circular import issue between
tframex.util.engineandtframex.agents.baseby deferring agent class imports within theEngineclass. This resolvesImportError: cannot import name '...' from partially initialized moduleerrors that prevented the library from loading correctly. - Critical: Ensured Package Integrity: Added missing
__init__.pyfiles to all new subdirectories (agents,flows,models,patterns,util,util/logging). This is essential for Python to recognize these directories as importable packages and was a root cause of initialModuleNotFoundErrorissues. - Corrected Top-Level Imports: The main
tframex/__init__.pyhas been updated to correctly re-export all public classes and functions from their new, refactored locations, ensuring a consistent API for library users.
🛠️ Internal Changes
- The
TFrameXRuntimeContextnow delegates agent and tool calls to the newEngineinstance. LLMAgentconstructor now accepts anengineparameter instead ofapp_runtime_ref.Flow.executemethod now accepts anengineparameter instead ofapp_runtime.
(Note: While these are internal, they represent breaking changes for users directly subclassing or instantiating these components outside the standard@app.agentandapp.run_context()pathways.)
⚠️ Known Considerations / Potential Minor Breaking Changes for Users
- Default
strip_think_tags: As mentioned,strip_think_tagsfor agents now defaults toTrue. If your application previously relied on<think>tags being present in the output by default, you might need to explicitly setstrip_think_tags=Falsein your agent definitions. - Advanced API for
LLMAgentandFlow.execute: Users directly instantiatingLLMAgentor subclassingFlowand overridingexecutewill need to update their code to accommodate the newengineparameter. Standard usage throughTFrameXAppdecorators andrun_contextshould remain unaffected.
📦 Installation & Setup
For Users (Installing TFrameX as a library):
To install or upgrade to this version:
pip install tframex==0.1.3Or, if installing from a local wheel:
pip install path/to/tframex-0.1.3-py3-none-any.whlFor Developers (Contributing to TFrameX or running examples from source):
If you're developing TFrameX itself or want to run examples directly from a cloned repository, we recommend setting up a dedicated virtual environment. You can use uv for its speed, or pip with venv.
Setting up with uv (Recommended):
First, install uv by following the instructions at astral.sh/uv.
Then, in your cloned TFrameX repository:
# Clone the repository (if you haven't already)
# git clone https://github.com/TesslateAI/TFrameX.git
# cd TFrameX
# Create and activate a virtual environment using uv
uv venv
source .venv/bin/activate # On macOS/Linux
# For Windows PowerShell: .venv\Scripts\Activate.ps1
# For Windows Command Prompt: .venv\Scripts\activate.bat
# Install TFrameX in editable mode along with its dependencies.
# This command also installs the [examples] and [dev] optional dependencies
# defined in pyproject.toml, which are useful for running examples and development.
uv pip install -e ".[examples,dev]"
# Alternatively, if you only need to run examples without development tools:
# uv pip install -e ".[examples]"
# To install only the core library in editable mode:
# uv pip install -e .This approach installs TFrameX in "editable" mode, meaning changes you make to the source code are immediately reflected in the activated virtual environment. The .[examples,dev] part installs optional dependencies grouped under examples and dev in the pyproject.toml file, which are useful for running the provided examples and for development tasks like linting and formatting.