Returns the cached runner for the given app.
(self, app_name: str)
| 645 | self.default_app_name = os.getenv("ADK_DEFAULT_APP_NAME") |
| 646 | |
| 647 | async def get_runner_async(self, app_name: str) -> Runner: |
| 648 | """Returns the cached runner for the given app.""" |
| 649 | # Handle cleanup |
| 650 | if app_name in self.runners_to_clean: |
| 651 | self.runners_to_clean.remove(app_name) |
| 652 | runner = self.runner_dict.pop(app_name, None) |
| 653 | await cleanup.close_runners(list([runner])) |
| 654 | |
| 655 | # Return cached runner if exists |
| 656 | if app_name in self.runner_dict: |
| 657 | return self.runner_dict[app_name] |
| 658 | |
| 659 | # Create new runner |
| 660 | envs.load_dotenv_for_agent(os.path.basename(app_name), self.agents_dir) |
| 661 | agent_or_app = self.agent_loader.load_agent(app_name) |
| 662 | |
| 663 | if self.default_llm_model: |
| 664 | from .cli import _override_default_llm_model |
| 665 | |
| 666 | _override_default_llm_model(self.default_llm_model) |
| 667 | |
| 668 | # Instantiate extra plugins if configured |
| 669 | extra_plugins_instances = self._instantiate_extra_plugins() |
| 670 | |
| 671 | plugins_yaml_path = os.path.join(self.agents_dir, app_name, "plugins.yaml") |
| 672 | bq_analytics_config = None |
| 673 | if os.path.exists(plugins_yaml_path): |
| 674 | with open(plugins_yaml_path, "r", encoding="utf-8") as f: |
| 675 | plugins_config = yaml.safe_load(f) |
| 676 | if plugins_config and isinstance(plugins_config, dict): |
| 677 | bq_analytics_config = plugins_config.get("bigquery_agent_analytics") |
| 678 | |
| 679 | # All YAML agents are treated as visual builder agents. |
| 680 | is_visual_builder_agent = os.path.exists( |
| 681 | os.path.join(self.agents_dir, app_name, "root_agent.yaml") |
| 682 | ) |
| 683 | |
| 684 | def _maybe_add_bq_plugin(plugins: list[BasePlugin]) -> list[BasePlugin]: |
| 685 | if bq_analytics_config and all([ |
| 686 | bq_analytics_config.get("project_id"), |
| 687 | bq_analytics_config.get("dataset_id"), |
| 688 | bq_analytics_config.get("dataset_location"), |
| 689 | ]): |
| 690 | from ..plugins.bigquery_agent_analytics_plugin import BigQueryAgentAnalyticsPlugin |
| 691 | |
| 692 | plugins.append( |
| 693 | BigQueryAgentAnalyticsPlugin( |
| 694 | project_id=bq_analytics_config.get("project_id"), |
| 695 | dataset_id=bq_analytics_config.get("dataset_id"), |
| 696 | table_id=bq_analytics_config.get("table_id"), |
| 697 | location=bq_analytics_config.get("dataset_location"), |
| 698 | ) |
| 699 | ) |
| 700 | return plugins |
| 701 | |
| 702 | def _wrap_loaded_agent( |
| 703 | app_name: str, |
| 704 | agent_or_app: Any, |