Factory method for convenient creation. Args: tool_manager: Tool management interface provider: Provider to switch to (optional) model: Model to switch to (optional) api_base: API base URL override (optional) api_key: API
(
cls,
tool_manager: ToolManager,
provider: str | None = None,
model: str | None = None,
api_base: str | None = None,
api_key: str | None = None,
model_manager: ModelManager | None = None,
session_id: str | None = None,
max_history_messages: int = 0,
infinite_context: bool = False,
token_threshold: int = 4000,
max_turns_per_segment: int = 20,
enable_vm: bool = False,
vm_mode: str = "passive",
vm_budget: int = 128_000,
health_interval: int = 0,
enable_plan_tools: bool = False,
agent_id: str = "default",
)
| 163 | |
| 164 | @classmethod |
| 165 | def create( |
| 166 | cls, |
| 167 | tool_manager: ToolManager, |
| 168 | provider: str | None = None, |
| 169 | model: str | None = None, |
| 170 | api_base: str | None = None, |
| 171 | api_key: str | None = None, |
| 172 | model_manager: ModelManager | None = None, |
| 173 | session_id: str | None = None, |
| 174 | max_history_messages: int = 0, |
| 175 | infinite_context: bool = False, |
| 176 | token_threshold: int = 4000, |
| 177 | max_turns_per_segment: int = 20, |
| 178 | enable_vm: bool = False, |
| 179 | vm_mode: str = "passive", |
| 180 | vm_budget: int = 128_000, |
| 181 | health_interval: int = 0, |
| 182 | enable_plan_tools: bool = False, |
| 183 | agent_id: str = "default", |
| 184 | ) -> "ChatContext": |
| 185 | """ |
| 186 | Factory method for convenient creation. |
| 187 | |
| 188 | Args: |
| 189 | tool_manager: Tool management interface |
| 190 | provider: Provider to switch to (optional) |
| 191 | model: Model to switch to (optional) |
| 192 | api_base: API base URL override (optional) |
| 193 | api_key: API key override (optional) |
| 194 | model_manager: Pre-configured ModelManager (optional, creates new if None) |
| 195 | session_id: Session ID for conversation tracking (optional) |
| 196 | max_history_messages: Sliding window size (0 = unlimited) |
| 197 | infinite_context: Enable infinite context mode in SessionManager |
| 198 | token_threshold: Token threshold for infinite context segmentation |
| 199 | max_turns_per_segment: Max turns per segment before context packing |
| 200 | enable_vm: Enable AI Virtual Memory subsystem (experimental) |
| 201 | vm_mode: VM mode - strict, relaxed, or passive |
| 202 | vm_budget: Max tokens for VM L0 working set (context window budget) |
| 203 | health_interval: Background health check interval in seconds (0 = disabled) |
| 204 | enable_plan_tools: Enable plan_create/plan_execute as LLM-callable tools |
| 205 | |
| 206 | Returns: |
| 207 | Configured ChatContext instance |
| 208 | """ |
| 209 | if model_manager is None: |
| 210 | model_manager = ModelManager() |
| 211 | |
| 212 | if provider and (api_base or api_key): |
| 213 | model_manager.add_runtime_provider( |
| 214 | name=provider, api_key=api_key, api_base=api_base or "" |
| 215 | ) |
| 216 | |
| 217 | if provider and model: |
| 218 | model_manager.switch_model(provider, model) |
| 219 | elif provider: |
| 220 | model_manager.switch_provider(provider) |
| 221 | elif model: |
| 222 | current_provider = model_manager.get_active_provider() |