Croway opened a new pull request, #1876: URL: https://github.com/apache/camel-spring-boot/pull/1876
## Why `camel-ai-tool` is the unified AI tool component created in apache/camel `62df1f793ec5` (CAMEL-23382). It replaced `camel-spring-ai-tools` and is the component that the MCP server and the LLM producers read tools from — but no Spring Boot starter exists for it, so Spring Boot users have to add the plain `camel-ai-tool` dependency by hand. Companion to #1875, which removes the now-orphan `camel-spring-ai-tools-starter`. ## Change `./starter-create ai-tool`, then the generator runs that fill in the rest: - `components-starter/camel-ai-tool-starter` — auto-configuration, configuration properties, converter, `AutoConfiguration.imports`, LICENSE/NOTICE - `components-starter/pom.xml` (aggregator) - `tooling/camel-spring-boot-bom/pom.xml`, `tooling/camel-spring-boot-dependencies/pom.xml` - `catalog/camel-catalog-provider-springboot` — `components.properties` and `components/ai-tool.json` - `docs/spring-boot/modules/ROOT/pages/starters/ai-tool.adoc` and its `nav.adoc` entry Same file scope as previous starter additions here, e.g. `8e9b8de47b1` (camel-duckdb). The doc page xrefs `ai-tool-component.adoc`, which exists in the Camel component docs, so the doc validation build resolves it. Component options exposed as `camel.component.ai-tool.*`: `description`, `parameters`, `tags`, plus the usual `bridge-error-handler` / `autowired-enabled` / `enabled`. ## Test `AiToolComponentAutoConfigurationTest` boots the auto-configuration and asserts: 1. `ai-tool` resolves to an `AiToolComponent` 2. `camel.component.ai-tool.tags` is copied onto the component by the starter's `ComponentCustomizer` 3. an `ai-tool` route lands in the `AiToolRegistry` under that tag (and not in the default pool), with the JSON Schema built from its `parameter.NAME` options ## Verification - `mvn verify` in `components-starter/camel-ai-tool-starter`: 2 tests, BUILD SUCCESS - `./mvnw -o validate` over the full reactor: BUILD SUCCESS --- _Claude Code on behalf of Federico Mariani_ 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
