mirror of
https://github.com/googleapis/genai-toolbox.git
synced 2026-01-29 01:08:01 -05:00
## Description This PR introduces support for merging multiple prebuilt configurations. To ensure compatibility, the following restrictions apply: - No Naming Collisions: Configurations cannot share duplicate names for any resources (Tools, Sources, Toolsets, Auth Services, etc.). - Shared Environment Variables: If multiple sources rely on the same environment variable, they must share the same value; unique values for the same variable are not supported ## Usage Examples ### Successful Initialization You can load multiple prebuilt configurations by either repeating the --prebuilt flag or by providing a comma-separated list. **Option 1:** Multiple Flags ``` ./toolbox --prebuilt alloydb-postgres --prebuilt alloydb-postgres-admin ``` **Option 2:** Comma-Separated Values ``` ./toolbox --prebuilt alloydb-postgres,alloydb-postgres-admin ``` ### Initialization Failure (Resource Conflict) If two or more configurations define a resource with the same name (such as a Tool or Source, etc.), the server will fail to start and display a conflict error. ``` ./toolbox --prebuilt alloydb-postgres --prebuilt cloud-sql-mysql 2026-01-13T11:14:50.758121799Z INFO "Using prebuilt tool configurations for: alloydb-postgres, cloud-sql-mysql" 2026-01-13T11:14:50.764578167Z ERROR "resource conflicts detected:\n - tool 'execute_sql' (file #2)\n - tool 'list_active_queries' (file #2)\n - tool 'get_query_plan' (file #2)\n - tool 'list_tables' (file #2)\n\nPlease ensure each source, authService, tool, toolset and prompt has a unique name across all files" ``` ## PR Checklist > Thank you for opening a Pull Request! Before submitting your PR, there are a > few things you can do to make sure it goes smoothly: - [x] Make sure you reviewed [CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md) - [x] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [x] Ensure the tests and linter pass - [x] Code coverage does not decrease (if any source code was changed) - [x] Appropriate docs were updated (if necessary) - [x] Make sure to add `!` if this involve a breaking change 🛠️ Fixes #1855 --------- Co-authored-by: Averi Kitsch <akitsch@google.com>