Create chat context with required managers. Args: tool_manager: Tool management interface model_manager: Model configuration and LLM client manager session_id: Optional session ID for conversation tracking max_history_messages: Slidin
(
self,
tool_manager: ToolManager,
model_manager: ModelManager,
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",
)
| 50 | """ |
| 51 | |
| 52 | def __init__( |
| 53 | self, |
| 54 | tool_manager: ToolManager, |
| 55 | model_manager: ModelManager, |
| 56 | session_id: str | None = None, |
| 57 | max_history_messages: int = 0, |
| 58 | infinite_context: bool = False, |
| 59 | token_threshold: int = 4000, |
| 60 | max_turns_per_segment: int = 20, |
| 61 | enable_vm: bool = False, |
| 62 | vm_mode: str = "passive", |
| 63 | vm_budget: int = 128_000, |
| 64 | health_interval: int = 0, |
| 65 | enable_plan_tools: bool = False, |
| 66 | agent_id: str = "default", |
| 67 | ): |
| 68 | """ |
| 69 | Create chat context with required managers. |
| 70 | |
| 71 | Args: |
| 72 | tool_manager: Tool management interface |
| 73 | model_manager: Model configuration and LLM client manager |
| 74 | session_id: Optional session ID for conversation tracking |
| 75 | max_history_messages: Sliding window size (0 = unlimited) |
| 76 | infinite_context: Enable infinite context mode in SessionManager |
| 77 | token_threshold: Token threshold for infinite context segmentation |
| 78 | max_turns_per_segment: Max turns per segment before context packing |
| 79 | enable_vm: Enable AI Virtual Memory subsystem (experimental) |
| 80 | vm_mode: VM mode - strict, relaxed, or passive |
| 81 | vm_budget: Max tokens for VM L0 working set (context window budget) |
| 82 | health_interval: Background health check interval in seconds (0 = disabled) |
| 83 | enable_plan_tools: Enable plan_create/plan_execute as LLM-callable tools |
| 84 | """ |
| 85 | self.tool_manager = tool_manager |
| 86 | self.model_manager = model_manager |
| 87 | self.session_id = session_id or self._generate_session_id() |
| 88 | self.agent_id = agent_id |
| 89 | |
| 90 | # Context management |
| 91 | self._max_history_messages = max_history_messages |
| 92 | self._infinite_context = infinite_context |
| 93 | self._token_threshold = token_threshold |
| 94 | self._max_turns_per_segment = max_turns_per_segment |
| 95 | self._enable_vm = enable_vm |
| 96 | self._vm_mode = vm_mode |
| 97 | self._vm_budget = vm_budget |
| 98 | self._health_interval = health_interval |
| 99 | self._enable_plan_tools = enable_plan_tools |
| 100 | |
| 101 | # Core session manager - always required |
| 102 | self.session: SessionManager = SessionManager(session_id=self.session_id) |
| 103 | self._system_prompt: str = "" |
| 104 | |
| 105 | # Procedural memory for tool learning |
| 106 | self.tool_memory = ToolMemoryManager.create(session_id=self.session_id) |
| 107 | self.procedural_formatter = ProceduralContextFormatter( |
| 108 | config=FormatterConfig( |
| 109 | max_recent_calls=5, |
nothing calls this directly
no test coverage detected