Initialize tools, session, and procedural memory. Args: on_progress: Optional callback for progress updates during startup
(
self,
on_progress: Callable[[str], None] | None = None,
)
| 447 | |
| 448 | # ── Initialization ──────────────────────────────────────────────────── |
| 449 | async def initialize( |
| 450 | self, |
| 451 | on_progress: Callable[[str], None] | None = None, |
| 452 | ) -> bool: |
| 453 | """Initialize tools, session, and procedural memory. |
| 454 | |
| 455 | Args: |
| 456 | on_progress: Optional callback for progress updates during startup |
| 457 | """ |
| 458 | try: |
| 459 | await self._initialize_tools(on_progress=on_progress) |
| 460 | self._generate_system_prompt() |
| 461 | await self._initialize_session() |
| 462 | |
| 463 | # Quick provider validation (non-blocking) |
| 464 | try: |
| 465 | _client = self.client # noqa: F841 — fails fast if no API key |
| 466 | logger.info(f"Provider {self.provider} client created successfully") |
| 467 | except Exception as e: |
| 468 | logger.warning(f"Provider validation warning: {e}") |
| 469 | logger.warning("Chat may fail when making API calls.") |
| 470 | |
| 471 | if not self.tools: |
| 472 | logger.warning("No tools available. Chat functionality may be limited.") |
| 473 | |
| 474 | logger.info( |
| 475 | f"ChatContext ready: {len(self.tools)} tools, {self.provider}/{self.model}" |
| 476 | ) |
| 477 | return True |
| 478 | |
| 479 | except Exception: |
| 480 | logger.exception("Error initializing chat context") |
| 481 | return False |
| 482 | |
| 483 | async def _initialize_session(self) -> None: |
| 484 | """Initialize the session with system prompt and context management.""" |