You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "atiaomar1978-hub (via GitHub)" <gi...@apache.org> on 2026/09/18 22:22:19 UTC

[PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

atiaomar1978-hub opened a new pull request, #26606:
URL: https://github.com/apache/camel/pull/26606

   # Description
   
   Adds `llm` as the primary URI scheme for the `camel-openai` component, with `openai` retained as a backward-compatible alias. This addresses discoverability concerns in CAMEL-24339: the component works with any OpenAI-compatible API (Ollama, vLLM, LM Studio, OpenRouter, Azure OpenAI, etc.), not OpenAI alone.
   
   **Phase 1 approach (per JIRA discussion with @davsclaus):** scheme alias only — no Maven artifact rename, no Java package rename, no header constant changes.
   
   ## Changes
   
   - `@Component("llm,openai")` on `OpenAIComponent`
   - `@UriEndpoint(scheme = "llm,openai", title = "LLM,OpenAI", syntax = "llm:operation")` on `OpenAIEndpoint`
   - Regenerated catalog metadata (`llm.json`, updated `openai.json`), component/endpoint DSL (`llm()` builders), and service loader entries
   - Updated component documentation (`openai-component.adoc` title/shortname → LLM) and AI summary
   - Added 4.23 upgrade guide entry (URI alias, Endpoint DSL `llm()` migration, independent `camel.component.llm.*` config)
   - Added `docs/components/modules/ROOT/examples/json/llm.json`
   - Added `OpenAISchemeAliasTest` covering independent component instances and chat completion for both schemes
   
   ## Backward compatibility
   
   - Existing `openai:chat-completion` routes continue to work unchanged
   - Maven artifact remains `camel-openai`
   - `CamelOpenAI*` headers unchanged
   - `camel.component.openai.*` and `camel.component.llm.*` configure separate component instances
   - Component DSL retains both `llm()` and `openai()`; Endpoint DSL primary helper is now `llm()`
   
   ## Testing
   
   ```
   ./mvnw -pl components/camel-ai/camel-openai test -Dtest=OpenAISchemeAliasTest
   ```
   
   # Target
   
   - [x] I checked that the commit is targeting the correct branch (Camel 4 uses the `main` branch)
   
   # Tracking
   - [x] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change.
   
   https://issues.apache.org/jira/browse/CAMEL-24339
   
   # Apache Camel coding standards and style
   
   - [x] I checked that each commit in the pull request has a meaningful subject line and body.
   - [ ] I have run `mvn clean install -DskipTests` locally from root folder and I have committed all auto-generated changes.
   
   # AI-assisted contributions
   
   - [x] If this PR includes AI-generated code, commits have proper co-authorship attribution (e.g., `Co-authored-by` trailers) and the PR description identifies the AI tool used.
   
   _AI-generated PR description on behalf of atiaomar1978-hub (Cursor Agent)_


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #26606:
URL: https://github.com/apache/camel/pull/26606#issuecomment-5869222519

   <!-- ci-tested-modules -->
   :test_tube: **CI tested the following changed modules:**
   
   - `catalog/camel-catalog`
   - `components/camel-ai/camel-openai`
   - `components/camel-ai`
   - `core/camel-main`
   - `core/camel-util`
   - `docs`
   - `dsl/camel-componentdsl`
   - `dsl/camel-endpointdsl`
   
   > :information_source: Dependent modules were not tested because the total number of affected modules exceeded the threshold (50). Use the `test-dependents` label to force testing all dependents.
   
   ---
   
   <details><summary>:microscope: Scalpel shadow comparison — Scalpel: 574 of 695 tested, 0 compile-only — current: 574 all tested</summary>
   
   [Maveniverse Scalpel](https://github.com/maveniverse/scalpel) detected **574 affected modules** (current approach: 574).
   
   **Skip-tests mode would test 574 modules** (8 direct + 29 downstream), **skip tests for 0** (generated code, meta-modules)
   
   <details><summary>Modules Scalpel would test (574)</summary>
   
   - `archetypes` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-a2a` ← depends on affected reactor module org.apache.camel:camel-platform-http-vertx
   - `camel-activemq` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-activemq6` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-ai-observability` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ai-observability-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ai-parent` ← components/camel-ai/src/main/docs/ai-summary.adoc
   - `camel-ai-resource` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ai-tool` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-alibaba-eventbridge` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-fc` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-kms` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-mns` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-oss` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-ots` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-alibaba-sls` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-alibaba-sms` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-amqp` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-api` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-api-component-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-arangodb` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-archetype-api-component` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-archetype-component` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-archetype-dataformat` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-archetype-java` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-archetype-main` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-as2` ← depends on affected reactor module org.apache.camel:camel-jetty
   - `camel-as2-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-as2-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-asn1` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-asterisk` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-atmosphere-websocket` ← depends on affected reactor module org.apache.camel:camel-test-infra-jetty
   - `camel-atom` ← depends on affected reactor module org.apache.camel:camel-test-infra-jetty
   - `camel-attachments` ← depends on affected reactor module org.apache.camel:camel-bean
   - `camel-avro` ← depends on affected reactor module org.apache.camel:camel-spring-xml
   - `camel-avro-rpc` ← depends on affected reactor module org.apache.camel:camel-spring-xml
   - `camel-avro-rpc-jetty` ← depends on affected reactor module org.apache.camel:camel-api
   - `camel-avro-rpc-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-avro-rpc-spi` ← downstream of org.apache.camel:camel-core-model
   - `camel-aws-bedrock` ← depends on affected reactor module org.apache.camel:camel-base64
   - `camel-aws-cloudtrail` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-aws-config` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-aws-parameter-store` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-aws-secrets-manager` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws-security-hub` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-athena` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-comprehend` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-cw` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-ddb` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-ec2` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-ecs` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-eks` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-eventbridge` ← depends on affected reactor module org.apache.camel:camel-aws2-sqs
   - `camel-aws2-iam` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-kinesis` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-aws2-kms` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-aws2-lambda` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-mq` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-msk` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-polly` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-redshift` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-rekognition` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-s3` ← depends on affected reactor module org.apache.camel:camel-zip-deflater
   - `camel-aws2-s3-vectors` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-ses` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-sns` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-sqs` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-step-functions` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-sts` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-aws2-textract` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-timestream` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-aws2-transcribe` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-aws2-translate` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-azure-common` ← downstream of org.apache.camel:camel-core-model
   - `camel-azure-cosmosdb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-eventgrid` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-eventhubs` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-files` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-functions` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-azure-key-vault` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-azure-schema-registry` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-azure-servicebus` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-azure-storage-blob` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-storage-datalake` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-azure-storage-queue` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-barcode` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-base` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-base-engine` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-base64` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-bean` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-bean-validator` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-beanio` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-bindy` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-bonita` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-box` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-box-api` ← depends on affected reactor module org.apache.camel:camel-api
   - `camel-box-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-braintree` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-browse` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-caffeine` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-camunda` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cassandraql` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-catalog-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-cbor` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-chatscript` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-chunk` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cli-connector` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cli-debug` ← depends on affected reactor module org.apache.camel:camel-cli-connector
   - `camel-clickhouse` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-clickup` ← depends on affected reactor module org.apache.camel:camel-netty-http
   - `camel-cloudevents` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cluster` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-cm-sms` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-coap` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cometd` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-console` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-consul` ← depends on affected reactor module org.apache.camel:camel-spring-main
   - `camel-controlbus` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-core` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-core-all` ← depends on affected reactor module org.apache.camel:camel-xml-jaxp
   - `camel-core-catalog` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-engine` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-languages` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-model` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-processor` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-reifier` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-core-xml` ← depends on affected reactor module org.apache.camel:camel-core-engine
   - `camel-couchbase` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-couchdb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cron` ← depends on affected reactor module org.apache.camel:camel-timer
   - `camel-crypto` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-crypto-pgp` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-csv` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-cxf-common` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cxf-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-cxf-rest` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-cxf-soap` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-cxf-spring-common` ← depends on affected reactor module org.apache.camel:camel-http-base
   - `camel-cxf-spring-rest` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-cxf-spring-soap` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-cxf-spring-transport` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cxf-transport` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-cyberark-vault` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dapr` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dataformat` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-dataset` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-datasonnet` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-dataweave` ← downstream of org.apache.camel:camel-core-model
   - `camel-debezium-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-debezium-common-parent` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-debezium-db2` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debezium-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-debezium-mongodb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debezium-mysql` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debezium-oracle` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debezium-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-debezium-postgres` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debezium-sqlserver` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-debug` ← depends on affected reactor module org.apache.camel:camel-xml-io
   - `camel-dependencies` ← downstream of org.apache.camel:sync-properties-maven-plugin
   - `camel-dfdl` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dhis2` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dhis2-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dhis2-parent` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-diagram` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-direct` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-disruptor` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-djl` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dns` ← depends on affected reactor module org.apache.camel:camel-log
   - `camel-docker` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-docling` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-drill` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dropbox` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dsl-modeline` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dsl-support` ← depends on affected reactor module org.apache.camel:camel-core-model
   - `camel-duckdb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-dynamic-router` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-ehcache` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-eip-documentation-enricher-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-elasticsearch` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-elasticsearch-rest-client` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-event` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-exec` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-fastjson` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-fhir` ← depends on affected reactor module org.apache.camel:camel-hl7
   - `camel-fhir-api` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-fhir-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-file` ← depends on affected reactor module org.apache.camel:camel-core-engine
   - `camel-file-watch` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-flatpack` ← depends on affected reactor module org.apache.camel:camel-direct
   - `camel-flink` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-flowable` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-fop` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-fory` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-freemarker` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-ftp` ← depends on affected reactor module org.apache.camel:camel-spring-xml
   - `camel-ftp-common` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-geocoder` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-git` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-github2` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-bigquery` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-calendar` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-common` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-google-drive` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-firestore` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-functions` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-mail` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-google-pubsub` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-secret-manager` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-sheets` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-google-speech-to-text` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-storage` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-text-to-speech` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-vertexai` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-google-vision` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-graphql` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-grok` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-groovy` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-grpc` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-gson` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-hashicorp-vault` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-hazelcast` ← depends on affected reactor module org.apache.camel:camel-spring-main
   - `camel-health` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-hivemq` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-hl7` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-http` ← depends on affected reactor module org.apache.camel:camel-test-infra-jetty
   - `camel-http-base` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-http-common` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-huawei-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-huaweicloud-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-huaweicloud-dms` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-huaweicloud-frs` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-huaweicloud-functiongraph` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-huaweicloud-iam` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-huaweicloud-imagerecognition` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-huaweicloud-obs` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-huaweicloud-smn` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-huggingface` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-cos` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-ibm-secrets-manager` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-watson-discovery` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-watson-language` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-watson-speech-to-text` ← depends on affected reactor module org.apache.camel:camel-ibm-watson-text-to-speech
   - `camel-ibm-watson-text-to-speech` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ibm-watsonx-ai` ← depends on affected reactor module org.apache.camel:camel-vertx-websocket
   - `camel-ibm-watsonx-data` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ical` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-iggy` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-ignite` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-infinispan` ← depends on affected reactor module org.apache.camel:camel-stub
   - `camel-infinispan-common` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-infinispan-embedded` ← depends on affected reactor module org.apache.camel:camel-log
   - `camel-infinispan-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-influxdb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-influxdb2` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-iso8583` ← depends on affected reactor module org.apache.camel:camel-groovy
   - `camel-jackson` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jackson-avro` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jackson-protobuf` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jackson3` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jackson3-avro` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jackson3-protobuf` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jackson3xml` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jacksonxml` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jactl` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-jandex` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-jasypt` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-java-io` ← depends on affected reactor module org.apache.camel:camel-xml-io
   - `camel-java-joor-dsl` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-javascript` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-jaxb` ← depends on affected reactor module org.apache.camel:camel-spring-xml
   - `camel-jbang-console` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-jbang-mcp` ← depends on affected reactor module org.apache.camel:camel-java-joor-dsl
   - `camel-jbang-plugin-mcp` ← depends on affected reactor module org.apache.camel:camel-jbang-core
   - `camel-jbang-plugin-route-parser` ← depends on affected reactor module org.apache.camel:camel-route-parser
   - `camel-jbang-plugin-tui` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jbang-plugin-validate` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jcache` ← depends on affected reactor module org.apache.camel:camel-core-languages
   - `camel-jcr` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jdbc` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jetty` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-jetty-common` ← depends on affected reactor module org.apache.camel:camel-jaxb
   - `camel-jfr` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-jgroups` ← depends on affected reactor module org.apache.camel:camel-master
   - `camel-jgroups-raft` ← depends on affected reactor module org.apache.camel:camel-master
   - `camel-jira` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jms` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-jmx` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jolt` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jooq` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-joor` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-jpa` ← depends on affected reactor module org.apache.camel:camel-spring-xml
   - `camel-jq` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-jsch` ← depends on affected reactor module org.apache.camel:camel-ssh
   - `camel-jslt` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-json-validator` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jsonapi` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jsonata` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jsonb` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-jsonpath` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-jsoup` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-jt400` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-jta` ← depends on affected reactor module org.apache.camel:camel-sql
   - `camel-jte` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-kafka` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-kamelet` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-kamelet-main-support` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-keycloak` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-knative` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-knative-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-knative-http` ← depends on affected reactor module org.apache.camel:camel-http
   - `camel-knative-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-kserve` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-kubernetes` ← depends on affected reactor module org.apache.camel:camel-log
   - `camel-kudu` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-langchain4j-agent` ← depends on affected reactor module org.apache.camel:camel-telemetry
   - `camel-langchain4j-agent-api` ← depends on affected reactor module org.apache.camel:camel-api
   - `camel-langchain4j-chat` ← depends on affected reactor module org.apache.camel:camel-telemetry
   - `camel-langchain4j-core` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-langchain4j-embeddings` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-langchain4j-embeddingstore` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-langchain4j-embeddingstore-api` ← depends on affected reactor module org.apache.camel:camel-api
   - `camel-langchain4j-ingest` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-langchain4j-tokenizer` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-langchain4j-web-search` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-language` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-launcher-container` ← depends on affected reactor module org.apache.camel:camel-launcher
   - `camel-ldap` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ldif` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-log` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-lra` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-lucene` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-lumberjack` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-lzf` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-mail` ← depends on affected reactor module org.apache.camel:camel-quartz
   - `camel-mail-microsoft-oauth` ← depends on affected reactor module org.apache.camel:camel-mail
   - `camel-main` ← core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
   - `camel-management` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-management-api` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-mapstruct` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-master` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-spring-main
   - `camel-mcp-server` ← depends on affected reactor module org.apache.camel:camel-openai
   - `camel-mcp-server-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-mdc` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-metrics` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-micrometer` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-micrometer-observability` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-micrometer-prometheus` ← depends on affected reactor module org.apache.camel:camel-platform-http-main
   - `camel-microprofile-config` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-microprofile-fault-tolerance` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-microprofile-health` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-microprofile-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-milo` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-milvus` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-mina` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-mina-sftp` ← depends on affected reactor module org.apache.camel:camel-core-languages
   - `camel-minio` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-mllp` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-mock` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-mongodb` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-mongodb-gridfs` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-mustache` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-mvel` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-mybatis` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-nats` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-neo4j` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-netty` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-netty-http` ← depends on affected reactor module org.apache.camel:camel-jetty
   - `camel-oaipmh` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-oauth` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-observability-services` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-observation` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-ocsf` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ognl` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-olingo2` ← depends on affected reactor module org.apache.camel:camel-test-infra-jetty
   - `camel-olingo2-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-olingo2-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-olingo4` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-olingo4-api` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-olingo4-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-once` ← depends on affected reactor module org.apache.camel:camel-groovy
   - `camel-opa` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-openai` ← components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java, components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/llm.json, components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json, components/camel-ai/camel-openai/src/generated/resources/META-INF/services/org/apache/camel/component.properties, components/camel-ai/camel-openai/src/generated/resources/META-INF/services/org/apache/camel/component/llm, components/camel-ai/camel-openai/src/generated/resources/META-INF/services/org/apache/camel/configurer/llm-component, components/camel-ai/camel-openai/src/generated/resources/META-INF/services/org/apache/camel/configurer/llm-endpoint, components/camel-ai/camel-openai/src/main/docs/openai-component.adoc, components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIComponent.java, compo
 nents/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEndpoint.java, components/camel-ai/camel-openai/src/test/java/org/apache/camel/component/openai/OpenAISchemeAliasTest.java, own pom components/camel-ai/camel-openai/pom.xml changed
   - `camel-openapi-java` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-openapi-rest-dsl-generator` ← depends on affected reactor module org.apache.camel:camel-core-engine
   - `camel-openapi-validator` ← depends on affected reactor module org.apache.camel:camel-platform-http-vertx
   - `camel-opensearch` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-openstack` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-opentelemetry` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-opentelemetry-metrics` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-opentelemetry2` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-optaplanner` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-paho` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-paho-mqtt5` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-parquet-avro` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pdf` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pg-replication-slot` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pgevent` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pgvector` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pinecone` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-platform-http` ← depends on affected reactor module org.apache.camel:camel-http
   - `camel-platform-http-jolokia` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-platform-http-main` ← depends on affected reactor module org.apache.camel:camel-openapi-java
   - `camel-platform-http-vertx` ← depends on affected reactor module org.apache.camel:camel-vertx-http
   - `camel-plc4x` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pqc` ← depends on affected reactor module org.apache.camel:camel-crypto
   - `camel-printer` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-protobuf` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-pubnub` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-pulsar` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-python` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-python3` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-qdrant` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-quartz` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-quickfix` ← depends on affected reactor module org.apache.camel:camel-jetty
   - `camel-quickjs` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-reactive-streams` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-reactor` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-redis` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-ref` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-resilience4j` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-resilience4j-micrometer` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-resourceresolver-github` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-rest` ← depends on affected reactor module org.apache.camel:camel-core-languages
   - `camel-rest-openapi` ← depends on affected reactor module org.apache.camel:camel-vertx-http
   - `camel-rest-postman` ← depends on affected reactor module org.apache.camel:camel-vertx-http
   - `camel-restdsl-openapi-plugin` ← depends on affected reactor module org.apache.camel:camel-jetty
   - `camel-robotframework` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-rocketmq` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-rss` ← depends on affected reactor module org.apache.camel:camel-test-infra-jetty
   - `camel-rxjava` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-saga` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-salesforce` ← depends on affected reactor module org.apache.camel:camel-core-catalog
   - `camel-salesforce-codegen` ← depends on affected reactor module org.apache.camel:camel-salesforce
   - `camel-salesforce-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-sap-netweaver` ← depends on affected reactor module org.apache.camel:camel-velocity
   - `camel-saxon` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-scheduler` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-schematron` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-seda` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-semantic` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-servicenow` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-servicenow-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-servicenow-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-servlet` ← depends on affected reactor module org.apache.camel:camel-gson
   - `camel-shell` ← depends on affected reactor module org.apache.camel:camel-test-junit5
   - `camel-shiro` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-sjms` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-sjms2` ← depends on affected reactor module org.apache.camel:camel-test-infra-artemis
   - `camel-slack` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-smb` ← depends on affected reactor module org.apache.camel:camel-test-infra-smb
   - `camel-smooks` ← depends on affected reactor module org.apache.camel:camel-attachments
   - `camel-smpp` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-snakeyaml` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-snmp` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-soap` ← depends on affected reactor module org.apache.camel:camel-cxf-soap
   - `camel-solr` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-spiffe` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-splunk-hec` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-spring` ← depends on affected reactor module org.apache.camel:camel-cron
   - `camel-spring-ai-chat` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-ai-embeddings` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-spring-ai-image` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-spring-ai-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-spring-ai-vector-store` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-spring-batch` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-cloud-config` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-jdbc` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-ldap` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-main` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-spring-rabbitmq` ← depends on affected reactor module org.apache.camel:camel-http
   - `camel-spring-redis` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-spring-security` ← depends on affected reactor module org.apache.camel:camel-core-xml
   - `camel-spring-ws` ← depends on affected reactor module org.apache.camel:camel-jaxb
   - `camel-spring-xml` ← depends on affected reactor module org.apache.camel:camel-cron
   - `camel-sql` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-ssh` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-state-store` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-state-store-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-stax` ← depends on affected reactor module org.apache.camel:camel-jaxb
   - `camel-stitch` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-stream` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-streamcaching-test` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-stringtemplate` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-stripe` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-stub` ← depends on affected reactor module org.apache.camel:camel-seda
   - `camel-support` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-swift` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-syslog` ← depends on affected reactor module org.apache.camel:camel-mina
   - `camel-tahu` ← depends on affected reactor module org.apache.camel:camel-test-infra-core
   - `camel-tarfile` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-telegram` ← depends on affected reactor module org.apache.camel:camel-netty-http
   - `camel-telemetry` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-telemetry-dev` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-tensorflow-serving` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-test-infra-all` ← depends on affected reactor module org.apache.camel:camel-test-infra-qdrant
   - `camel-test-infra-artemis` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-test-infra-cli` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-test-infra-core` ← depends on affected reactor module org.apache.camel:camel-core
   - `camel-test-infra-jetty` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-test-infra-qdrant` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-test-infra-smb` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-test-junit5` ← depends on affected reactor module org.apache.camel:camel-xml-jaxb
   - `camel-test-junit6` ← depends on affected reactor module org.apache.camel:camel-xml-jaxb
   - `camel-test-main-junit5` ← depends on affected reactor module org.apache.camel:camel-yaml-io
   - `camel-test-main-junit6` ← depends on affected reactor module org.apache.camel:camel-yaml-io
   - `camel-test-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-test-spring-junit5` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-test-spring-junit6` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-thrift` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-thymeleaf` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-tika` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-timer` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-tooling-maven` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-toon` ← depends on affected reactor module org.apache.camel:camel-test-junit5
   - `camel-tracing` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-twilio` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-twitter` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-typesafe-ai` ← depends on affected reactor module org.apache.camel:camel-xml-io-dsl
   - `camel-ubl` ← depends on affected reactor module org.apache.camel:camel-test-junit5
   - `camel-undertow` ← depends on affected reactor module org.apache.camel:camel-openapi-java
   - `camel-undertow-spring-security` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-univocity-parsers` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-util` ← core/camel-util/src/main/java/org/apache/camel/util/ArtifactUtils.java
   - `camel-validator` ← depends on affected reactor module org.apache.camel:camel-xml-jaxp
   - `camel-velocity` ← depends on affected reactor module org.apache.camel:camel-management
   - `camel-vertx` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-vertx-common` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-vertx-http` ← depends on affected reactor module org.apache.camel:camel-undertow
   - `camel-vertx-parent` ← downstream of org.apache.camel:camel-core-model
   - `camel-vertx-websocket` ← depends on affected reactor module org.apache.camel:camel-main
   - `camel-wal` ← depends on affected reactor module org.apache.camel:camel-support
   - `camel-wasm` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-weather` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-weaviate` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-web3j` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-webhook` ← depends on affected reactor module org.apache.camel:camel-netty-http
   - `camel-whatsapp` ← depends on affected reactor module org.apache.camel:camel-netty-http
   - `camel-wordpress` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-workday` ← depends on affected reactor module org.apache.camel:camel-mock
   - `camel-xchange` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xj` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xml-io` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-xml-io-dsl` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xml-jaxb` ← depends on affected reactor module org.apache.camel:camel-core-model
   - `camel-xml-jaxb-dsl` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xml-jaxb-dsl-test-definition` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xml-jaxb-dsl-test-spring` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xml-jaxp` ← depends on affected reactor module org.apache.camel:camel-util
   - `camel-xmlsecurity` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xmpp` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-xpath` ← depends on affected reactor module org.apache.camel:camel-xml-jaxp
   - `camel-xslt` ← depends on affected reactor module org.apache.camel:camel-xml-jaxp
   - `camel-xslt-saxon` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-yaml-dsl-common` ← depends on affected reactor module org.apache.camel:camel-core-engine
   - `camel-yaml-dsl-validator` ← depends on affected reactor module org.apache.camel:camel-catalog
   - `camel-yaml-dsl-validator-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-yaml-dsl-validator
   - `camel-yaml-io` ← depends on affected reactor module org.apache.camel:camel-xml-io
   - `camel-zendesk` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-zip-deflater` ← depends on affected reactor module org.apache.camel:camel-test-junit6
   - `camel-zipfile` ← depends on affected reactor module org.apache.camel:camel-test-spring-junit6
   - `camel-zookeeper` ← depends on affected reactor module org.apache.camel:camel-master
   - `camel-zookeeper-master` ← depends on affected reactor module org.apache.camel:camel-ftp
   - `components` ← downstream of org.apache.camel:camel-core-model
   - `sync-properties-maven-plugin` ← depends on affected reactor module org.apache.camel:camel-util
   
   </details>
   
   > :information_source: Shadow mode — Scalpel observes but does not affect test execution. [Learn more](https://github.com/maveniverse/scalpel)
   
   </details>
   
   :warning: **Some tests are disabled on GitHub Actions** (`@DisabledIfSystemProperty(named = "ci.env.name")`) and require manual verification:
   
   - `components/camel-ai/camel-openai`: 7 test(s) disabled on GitHub Actions
   - `components/camel-ai`: 27 test(s) disabled on GitHub Actions
   
   <details><summary>Build reactor — dependencies compiled but only changed modules were tested (8 modules, 2m 56s total)</summary>
   
   **Total reactor time:** 2m 56s
   
   | Module | Duration | Status |
   | --- | --- | --- |
   | Camel :: Component DSL | 55.3s | SUCCESS |
   | Camel :: AI :: OpenAI | 36.7s | SUCCESS |
   | Camel :: Main | 26.5s | SUCCESS |
   | Camel :: Catalog :: Camel Catalog | 26.4s | SUCCESS |
   | Camel :: Docs | 19.3s | SUCCESS |
   | Camel :: Util | 10.5s | SUCCESS |
   | Camel :: AI :: Parent | 1.1s | SUCCESS |
   | Camel :: Endpoint DSL | n/a |  |
   
   **Top 20 slowest modules:**
   - `Camel :: Component DSL` (55.3s)
   - `Camel :: AI :: OpenAI` (36.7s)
   - `Camel :: Main` (26.5s)
   - `Camel :: Catalog :: Camel Catalog` (26.4s)
   - `Camel :: Docs` (19.3s)
   - `Camel :: Util` (10.5s)
   - `Camel :: AI :: Parent` (1.1s)
   
   </details>
   
   ---
   :gear: [View full build and test results](https://github.com/apache/camel/actions/runs/36405042637)


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #26606:
URL: https://github.com/apache/camel/pull/26606#issuecomment-5867339412

   <!-- regen-patch -->
   ### :warning: Generated files are out of date
   
   The [CI build](https://github.com/apache/camel/actions/runs/35929680714) regenerated files that are not committed on this PR.
   
   If *Allow edits from maintainers* is enabled, a maintainer bot will automatically
   push a "Regen" commit to this branch shortly.
   
   Otherwise, you can apply the patch manually — the missing changes are available
   as the `regen-patch` artifact of that run:
   
   ```bash
   gh pr checkout 26606 --repo apache/camel
   gh run download 35929680714 --repo apache/camel -n regen-patch
   git apply --index regen.patch && rm regen.patch pr-number
   git commit -m "Regen" && git push
   ```
   
   Alternatively, run `./etc/scripts/regen.sh` locally and commit the resulting changes.
   If the patch does not apply cleanly, update the branch from the base branch first —
   the patch was generated against the merge with the base branch.


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4083560607


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -7061,6 +7065,70 @@ default OpenAIEndpointBuilder openai(String path) {
         default OpenAIEndpointBuilder openai(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }
+        /**
+         * LLM (camel-openai)
+         * LLM endpoint for chat completion, Responses API, embeddings, audio
+         * transcription, audio translation, and text-to-speech using
+         * OpenAI-compatible APIs. The openai scheme is a supported alias.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>llm:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform: 'chat-completion', 'responses',
+         * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+         * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+         * 'audio-transcription', 'audio-translation', 'audio-speech',
+         * 'moderation', 'image-generation', 'image-edit', or 'webhook' (a
+         * consumer)
+         * There are 17 enums and the value can be one of: chat-completion,
+         * responses, responses-retrieve, responses-cancel, batch,
+         * batch-retrieve, batch-cancel, batch-results, embeddings,
+         * tool-execution, audio-transcription, audio-translation, audio-speech,
+         * moderation, image-generation, image-edit, webhook
+         * 
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder llm(String path) {
+            return OpenAIEndpointBuilderFactory.endpointBuilder("llm", path);
+        }
+        /**
+         * LLM (camel-openai)
+         * LLM endpoint for chat completion, Responses API, embeddings, audio
+         * transcription, audio translation, and text-to-speech using
+         * OpenAI-compatible APIs. The openai scheme is a supported alias.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>llm:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform: 'chat-completion', 'responses',
+         * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+         * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+         * 'audio-transcription', 'audio-translation', 'audio-speech',
+         * 'moderation', 'image-generation', 'image-edit', or 'webhook' (a
+         * consumer)
+         * There are 17 enums and the value can be one of: chat-completion,
+         * responses, responses-retrieve, responses-cancel, batch,
+         * batch-retrieve, batch-cancel, batch-results, embeddings,
+         * tool-execution, audio-transcription, audio-translation, audio-speech,
+         * moderation, image-generation, image-edit, webhook
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder llm(String componentName, String path) {

Review Comment:
   This method is in a generated file, but the generator will not produce it: the velocity templates only generate it for the *first* scheme of a component that has more than one. Compare `http,https`, `imap,imaps` and `coap,coaps` on main, which have no alias version of it. The next regeneration will delete it, and the CI uncommitted-changes check should fail. Please remove it and regenerate instead of adding it by hand.



##########
docs/components/modules/ROOT/examples/json/llm.json:
##########
@@ -0,0 +1,254 @@
+{

Review Comment:
   This should be a symlink (mode 120000) to the generated `llm.json` in camel-openai, like the rest of this directory, rather than a copy.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -11272,6 +11272,68 @@ public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String path) {
     public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String componentName, String path) {
         return LdifEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>llm:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform: 'chat-completion', 'responses',
+     * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+     * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+     * 'audio-transcription', 'audio-translation', 'audio-speech', 'moderation',
+     * 'image-generation', 'image-edit', or 'webhook' (a consumer)
+     * There are 17 enums and the value can be one of: chat-completion,
+     * responses, responses-retrieve, responses-cancel, batch, batch-retrieve,
+     * batch-cancel, batch-results, embeddings, tool-execution,
+     * audio-transcription, audio-translation, audio-speech, moderation,
+     * image-generation, image-edit, webhook
+     * 
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String path) {
+        return openai("llm", path);
+    }
+    /**
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>llm:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform: 'chat-completion', 'responses',
+     * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+     * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+     * 'audio-transcription', 'audio-translation', 'audio-speech', 'moderation',
+     * 'image-generation', 'image-edit', or 'webhook' (a consumer)
+     * There are 17 enums and the value can be one of: chat-completion,
+     * responses, responses-retrieve, responses-cancel, batch, batch-retrieve,
+     * batch-cancel, batch-results, embeddings, tool-execution,
+     * audio-transcription, audio-translation, audio-speech, moderation,
+     * image-generation, image-edit, webhook
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String componentName, String path) {

Review Comment:
   This method is in a generated file, but the generator will not produce it: the velocity templates only generate it for the *first* scheme of a component that has more than one. Compare `http,https`, `imap,imaps` and `coap,coaps` on main, which have no alias version of it. The next regeneration will delete it, and the CI uncommitted-changes check should fail. Please remove it and regenerate instead of adding it by hand.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java:
##########
@@ -3007,6 +3008,21 @@ public static OpaEndpointBuilderFactory.OpaHeaderNameBuilder opa() {
     public static OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder openai() {
         return OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder.INSTANCE;
     }
+    /**
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * @return the dsl builder for the headers' name.
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder llm() {

Review Comment:
   This method is in a generated file, but the generator will not produce it: the velocity templates only generate it for the *first* scheme of a component that has more than one. Compare `http,https`, `imap,imaps` and `coap,coaps` on main, which have no alias version of it. The next regeneration will delete it, and the CI uncommitted-changes check should fail. Please remove it and regenerate instead of adding it by hand.



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus merged PR #26606:
URL: https://github.com/apache/camel/pull/26606


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #26606:
URL: https://github.com/apache/camel/pull/26606#issuecomment-5750869044

   :star2: Thank you for your contribution to the Apache Camel project! :star2:
     :robot: CI automation will test this PR automatically.
   
     :camel: Apache Camel Committers, please review the following items:
   
     * First-time contributors **require MANUAL approval** for the GitHub Actions to run
     * You can use the command `/component-test (camel-)component-name1 (camel-)component-name2..` to request a test from the test bot although they are normally detected and executed by CI.
     * You can label PRs using `skip-tests` and `test-dependents` to fine-tune the checks executed by this PR.
     * Build and test logs are available in the summary page. **Only** [Apache Camel committers](https://camel.apache.org/community/team/#committers) have access to the summary.
     
     :warning: Be careful when sharing logs. Review their contents before sharing them publicly.


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4051841149


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -27,16 +27,17 @@
 import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 
 /**
- * OpenAI endpoint for chat completion, Responses API, embeddings, audio
- * transcription, audio translation, and text-to-speech.
+ * LLM endpoint for chat completion, Responses API, embeddings, audio
+ * transcription, audio translation, and text-to-speech using OpenAI-compatible
+ * APIs. The openai scheme is a supported alias.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface OpenAIEndpointBuilderFactory {

Review Comment:
   ⛔ **Blocker — stale/incomplete regeneration strips 28+ DSL builder methods**
   
   This generated file is missing a large number of `default OpenAIEndpointBuilder` methods that are still present on `main` and still backed by fields in `OpenAIConfiguration`. The deleted methods include (non-exhaustive):
   
   - `background(boolean/String)` — Responses API background execution
   - `connectTimeout(long/String)` / `readTimeout(long/String)` / `writeTimeout(long/String)` — all timeout controls
   - `conversationId(String)` — OpenAI Conversations API
   - `imageBackground(String)`, `imageCount(Integer/String)`, `imageInputFidelity(String)`, `imageModel(String)`, `imageModeration(String)`, `imageOutputCompression(Integer/String)`, `imageOutputFormat(String)`, `imagePrompt(String)`, `imageQuality(String)`, `imageResponseFormat(String)`, `imageSize(String)`, `imageStyle(String)` — all image generation/edit options
   - `moderationModel(String)` — moderation operation
   - `tags(String)` — route-tool discovery
   
   All these fields still exist in `OpenAIConfiguration.java` on this PR branch. Merging would silently remove users' ability to configure image generation, timeouts, background processing, and tool discovery from the Java Endpoint DSL — a hard regression unrelated to the scheme-alias feature.
   
   **Root cause:** the PR only ran `./mvnw -pl components/camel-ai/camel-openai test`, which does not regenerate the `camel-endpointdsl` module. The `mvn clean install -DskipTests` checkbox in the PR template is unchecked.
   
   **Fix:** run the full code-generator:
   ```
   ./mvnw -pl dsl/camel-endpointdsl generate-sources -Dfastinstall
   ```
   or follow the camel-package-maven-plugin documentation for the appropriate goal. Commit the regenerated file — it should be much larger than the current diff shows.



##########
docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc:
##########
@@ -599,6 +599,32 @@ the underlying client exposes it (for example langchain4j-chat); the agent and e
 unavailable. See
 xref:next@components:others:ai-observability.adoc[AI Observability] for metric names and span attributes.
 
+=== camel-openai (LLM scheme alias)
+
+The `camel-openai` component now registers the primary URI scheme `llm` alongside the existing
+`openai` alias. Both schemes use the same component implementation and Maven artifact
+(`camel-openai`).
+
+* New routes should prefer `llm:chat-completion` (and other `llm:` operations) for discoverability.
+* Existing routes using `openai:chat-completion` continue to work unchanged.
+* Component configuration properties accept both prefixes: `camel.component.llm.*` and
+  `camel.component.openai.*` create independent component instances when both are set.
+
+Java packages, exchange headers (`CamelOpenAI*`), and the Maven artifact id are unchanged.
+
+When using the Java Endpoint DSL, the primary scheme name changes generated helper methods:
+`EndpointHeaderBuilders.openai()` is replaced by `llm()`. Use `llm(path)` or `openai(path)`

Review Comment:
   🔧 **Inaccurate wording — `openai()` is deprecated, not removed**
   
   The sentence says "`EndpointHeaderBuilders.openai()` is replaced by `llm()`", which implies the old method was deleted. It wasn't — it's still present and annotated `@Deprecated`. Users who read this will think their code stopped compiling, when in fact they only get a deprecation warning.
   
   ```suggestion
   `EndpointHeaderBuilders.openai()` is deprecated in favour of `llm()`. Use `llm(path)` or `openai(path)`
   ```



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -12751,12 +12806,13 @@ public static OpaEndpointBuilderFactory.OpaEndpointBuilder opa(String componentN
      * @return the dsl builder
      */
     public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder openai(String path) {

Review Comment:
   ⚠️ **Missing `@Deprecated` on `openai(String path)`**
   
   The sibling methods in this PR are annotated consistently:
   - `EndpointHeaderBuilders.openai()` → `@Deprecated` ✅ (fixed in latest commit)
   - `OpenAIBuilders.openai()` in the interface → `@Deprecated` ✅ (fixed in latest commit)
   
   But `StaticEndpointBuilders.openai(String path)` here is NOT annotated `@Deprecated`. Users calling `StaticEndpointBuilders.openai("...")` directly get no deprecation warning. The velocity template change in `endpoint-headers-builders.vm` correctly adds `@Deprecated` for header-builder aliases; the equivalent fix for endpoint-builder aliases in `endpoint-builder.vm` should also apply here, or the annotation must be added manually if this file is only partially regenerated.
   
   ```suggestion
       @Deprecated
       public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder openai(String path) {
           return llm("openai", path);
       }
   ```



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4075168663


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -7061,10 +7065,38 @@ default OpenAIEndpointBuilder openai(String path) {
         default OpenAIEndpointBuilder openai(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }
+        /**
+         * OpenAI (camel-openai)
+         * LLM endpoint for chat completion, Responses API, embeddings, audio
+         * transcription, audio translation, and text-to-speech using
+         * OpenAI-compatible APIs. The openai scheme is a supported alias.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>llm:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform: 'chat-completion', 'responses',
+         * 'responses-retrieve', 'responses-cancel', 'embeddings',
+         * 'tool-execution', 'audio-transcription', 'audio-translation',
+         * 'audio-speech', 'moderation', 'image-generation', or 'image-edit'
+         * There are 12 enums and the value can be one of: chat-completion,
+         * responses, responses-retrieve, responses-cancel, embeddings,
+         * tool-execution, audio-transcription, audio-translation, audio-speech,
+         * moderation, image-generation, image-edit

Review Comment:
   ⚠️ **`llm()` operation list is stale — missing the 5 operations added in the main merge**
   
   The `openai(String path)` method above (line 7023) lists 17 operations including `batch`, `batch-retrieve`, `batch-cancel`, `batch-results`, and `webhook`. The `llm()` method here still lists only 12 (the pre-merge set). Since `llm:` is a full alias for the same endpoint, both schemes support all the same operations — the Javadoc should match.
   
   This was introduced by the merge resolution: `llm()` was hand-added at commit `828bbd5` before the batch/webhook operations landed on `main`. The regeneration step in the merge commit did not update the `llm()` overloads.
   
   Fix: regenerate the endpoint DSL after rebasing onto current `main`.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -7061,10 +7065,38 @@ default OpenAIEndpointBuilder openai(String path) {
         default OpenAIEndpointBuilder openai(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }
+        /**
+         * OpenAI (camel-openai)
+         * LLM endpoint for chat completion, Responses API, embeddings, audio
+         * transcription, audio translation, and text-to-speech using
+         * OpenAI-compatible APIs. The openai scheme is a supported alias.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>llm:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform: 'chat-completion', 'responses',
+         * 'responses-retrieve', 'responses-cancel', 'embeddings',
+         * 'tool-execution', 'audio-transcription', 'audio-translation',
+         * 'audio-speech', 'moderation', 'image-generation', or 'image-edit'
+         * There are 12 enums and the value can be one of: chat-completion,
+         * responses, responses-retrieve, responses-cancel, embeddings,
+         * tool-execution, audio-transcription, audio-translation, audio-speech,
+         * moderation, image-generation, image-edit
+         * 
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder llm(String path) {
+            return OpenAIEndpointBuilderFactory.endpointBuilder("llm", path);
+        }

Review Comment:
   ⚠️ **Missing `llm(String componentName, String path)` two-arg overload**
   
   `openai(String componentName, String path)` exists at line 7065. The `llm()` entry directly below has only the single-arg form. The two-arg overload is the standard way to register a custom component bean under a given scheme; omitting it for `llm` while providing it for `openai` is an asymmetry that will confuse users who switch from `openai` to `llm`.
   
   This can be added manually or fixed by running the DSL generator, which should produce it automatically once the `llm` scheme is registered.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -11272,6 +11272,34 @@ public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String path) {
     public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String componentName, String path) {
         return LdifEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * OpenAI (camel-openai)

Review Comment:
   ⚠️ **Wrong Javadoc title — `"OpenAI (camel-openai)"` should be `"LLM (camel-openai)"`**
   
   The block starting at this line describes the `llm(String path)` method added below. The title was not updated from the generated template.
   
   ```suggestion
       /**
        * LLM (camel-openai)
   ```



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -11272,6 +11272,34 @@ public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String path) {
     public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String componentName, String path) {
         return LdifEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * OpenAI (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>llm:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform: 'chat-completion', 'responses',
+     * 'responses-retrieve', 'responses-cancel', 'embeddings', 'tool-execution',
+     * 'audio-transcription', 'audio-translation', 'audio-speech', 'moderation',
+     * 'image-generation', or 'image-edit'
+     * There are 12 enums and the value can be one of: chat-completion,
+     * responses, responses-retrieve, responses-cancel, embeddings,
+     * tool-execution, audio-transcription, audio-translation, audio-speech,
+     * moderation, image-generation, image-edit
+     * 
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String path) {
+        return openai("llm", path);
+    }

Review Comment:
   ⚠️ **Missing `llm(String componentName, String path)` two-arg static overload + stale operation list**
   
   The `openai(String componentName, String path)` overload exists in this class. `llm` needs the same. Additionally, the operation list in the `llm(String path)` Javadoc above lists 12 operations — the pre-merge set — while `openai(String path)` now lists 17. Both should be regenerated.
   
   Note: `llm(String path)` delegates to `openai("llm", path)` — the two-arg `llm` overload should simply be:
   ```java
       public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String componentName, String path) {
           return openai(componentName, path);
       }
   ```



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java:
##########
@@ -2994,9 +2994,10 @@ public static OpaEndpointBuilderFactory.OpaHeaderNameBuilder opa() {
         return OpaEndpointBuilderFactory.OpaHeaderNameBuilder.INSTANCE;
     }
     /**
-     * OpenAI (camel-openai)
-     * OpenAI endpoint for chat completion, Responses API, embeddings, audio
-     * transcription, audio translation, and text-to-speech.
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
      * 
      * Category: ai
      * Since: 4.17

Review Comment:
   ⚠️ **Missing `llm()` header builder alias**
   
   This class provides `openai()` → `OpenAIHeaderNameBuilder.INSTANCE`. Users who write their routes using the `llm:` scheme and the fluent header DSL will look for `llm()` here, not `openai()`. Since the header constants are scheme-agnostic, the fix is a one-liner alias:
   
   ```java
       /**
        * LLM (camel-openai)
        * LLM endpoint for chat completion, Responses API, embeddings, audio
        * transcription, audio translation, and text-to-speech using
        * OpenAI-compatible APIs. The openai scheme is a supported alias.
        *
        * @return the dsl builder for the headers' name.
        */
       @Deprecated
       public static OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder llm() {
           return OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder.INSTANCE;
       }
   ```
   
   (The `@Deprecated` is not required here — `openai()` itself is not deprecated — this is just for discoverability. Drop the annotation if the intent is parity with `openai()` which is also non-deprecated.)



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -7061,10 +7065,38 @@ default OpenAIEndpointBuilder openai(String path) {
         default OpenAIEndpointBuilder openai(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }
+        /**
+         * OpenAI (camel-openai)

Review Comment:
   ⚠️ **Wrong Javadoc title — `"OpenAI (camel-openai)"` should be `"LLM (camel-openai)"`**
   
   All other `llm()` Javadoc blocks in this file use `"LLM (camel-openai)"` (e.g. line 6990, 7005, 7036). This one was copied from the `openai()` block and the title was not updated.
   
   ```suggestion
           /**
            * LLM (camel-openai)
   ```



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4061167581


##########
docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc:
##########
@@ -622,6 +622,32 @@ the underlying client exposes it (for example langchain4j-chat); the agent and e
 unavailable. See
 xref:next@components:others:ai-observability.adoc[AI Observability] for metric names and span attributes.
 
+=== camel-openai (LLM scheme alias)
+
+The `camel-openai` component now registers the primary URI scheme `llm` alongside the existing
+`openai` alias. Both schemes use the same component implementation and Maven artifact
+(`camel-openai`).
+
+* New routes should prefer `llm:chat-completion` (and other `llm:` operations) for discoverability.
+* Existing routes using `openai:chat-completion` continue to work unchanged.
+* Component configuration properties accept both prefixes: `camel.component.llm.*` and
+  `camel.component.openai.*` create independent component instances when both are set.
+
+Java packages, exchange headers (`CamelOpenAI*`), and the Maven artifact id are unchanged.
+
+When using the Java Endpoint DSL, the primary scheme name changes generated helper methods:
+`EndpointHeaderBuilders.openai()` is deprecated in favour of `llm()`. Use `llm(path)` or `openai(path)`
+(both delegate to the same component). The Component DSL still exposes both
+`Components.llm()` and `Components.openai()`.
+
+If you migrate routes from `openai:` to `llm:` URIs, copy any `camel.component.openai.*`
+properties to `camel.component.llm.*` — the two schemes use independent component instances.
+
+`Component.getDefaultName()` returns the first scheme declared in `@Component("llm,openai")`
+(`"llm"`) for both `llm` and `openai` component instances.
+
+See xref:components:openai-component.adoc[LLM Component] for details.

Review Comment:
   This is the xref that fails `xref-check` on CI - the components module needs the double colon.
   
   ```suggestion
   See xref:components::openai-component.adoc[LLM Component] for details.
   ```



##########
components/camel-ai/camel-openai/src/main/docs/openai-component.adoc:
##########
@@ -1,8 +1,8 @@
 = OpenAI Component

Review Comment:
   The heading still says `OpenAI Component` while `:doctitle:` below is `LLM` - they should match, e.g. `= LLM Component`.



##########
tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java:
##########
@@ -203,4 +203,11 @@
      * this to false for internal components such as log, message transformations and other kinds.
      */
     boolean remote() default true;
+
+    /**
+     * Comma-separated scheme names that are backward-compatible aliases of the primary scheme and should be marked
+     * {@code @Deprecated} in the Endpoint DSL. Peer schemes such as {@code http}/{@code https} or {@code coap}/
+     * {@code coaps} must not be listed here.
+     */
+    String deprecatedSchemes() default "";

Review Comment:
   This is a public SPI annotation used by every component and by external tooling, so a new attribute here is a permanent API. For a Phase 1 alias it should not be needed at all - see the review body: ordering the schemes `openai,llm` keeps every existing generated helper intact without any generator change.



##########
components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEndpoint.java:
##########
@@ -73,13 +73,14 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * OpenAI endpoint for chat completion, Responses API, embeddings, audio transcription, audio translation, and
- * text-to-speech.
+ * LLM endpoint for chat completion, Responses API, embeddings, audio transcription, audio translation, and
+ * text-to-speech using OpenAI-compatible APIs. The {@code openai} scheme is a supported alias.
  */
 @UriEndpoint(firstVersion = "4.17.0",
-             scheme = "openai",
-             title = "OpenAI",
-             syntax = "openai:operation",
+             scheme = "llm,openai",
+             deprecatedSchemes = "openai",

Review Comment:
   Deprecating the `openai` scheme was not part of the Phase 1 agreement on CAMEL-24339 ("`openai` stays as a working alias"). Please drop this; if we ever want to deprecate the scheme that should be a separate dev-list decision.



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4051883195


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -27,16 +27,17 @@
 import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 
 /**
- * OpenAI endpoint for chat completion, Responses API, embeddings, audio
- * transcription, audio translation, and text-to-speech.
+ * LLM endpoint for chat completion, Responses API, embeddings, audio
+ * transcription, audio translation, and text-to-speech using OpenAI-compatible
+ * APIs. The openai scheme is a supported alias.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface OpenAIEndpointBuilderFactory {

Review Comment:
   ⛔ **Blocker (carry-over from review #2) — Endpoint DSL fluent builder methods still missing**
   
   The catalog JSON files in this commit (`llm.json`, `openai.json`) correctly include all parameters — `background`, `connectTimeout`, `readTimeout`, `conversationId`, `imageBackground`, `imageCount`, `imageModel`, `imageSize`, `imageStyle`, `imageQuality`, `moderationModel`, `tags`, and more. But `OpenAIEndpointBuilderFactory.java` still doesn't expose fluent builder methods for any of them. The `OpenAIEndpointBuilder` interface needs one `default` method per parameter (e.g., `background(boolean)`, `connectTimeout(long)`, etc.) so that users can write:
   ```java
   from("llm:image-generation").background(true).imageModel("gpt-image-1")...
   ```
   
   This file should be much larger than the 164-line diff shown here. The fix is to run the full regeneration:
   ```
   ./mvnw -pl dsl/camel-endpointdsl generate-sources -Dfastinstall
   ```
   Commit the full regenerated file.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -2225,13 +2246,43 @@ default OpenAIEndpointBuilder openai(String path) {
          * @param path operation
          * @return the dsl builder
          */
-        default OpenAIEndpointBuilder openai(String componentName, String path) {
+        default OpenAIEndpointBuilder llm(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }

Review Comment:
   ⛔ **New blocker — `openai(String componentName, String path)` two-arg interface overload removed without a deprecated bridge**
   
   The two-arg `default OpenAIEndpointBuilder openai(String componentName, String path)` was renamed to `llm(String componentName, String path)` with no deprecated delegate left behind. Any user calling `.openai("myOpenai", "chat-completion")` on a route builder now gets a compile error — the same binary-incompatible pattern that review #1 found for the header builder and review #2's fix restored for the single-arg `openai(String path)`.
   
   Add the deprecated bridge alongside `llm(String componentName, String path)`:
   ```java
   /** @deprecated use {@link #llm(String, String)} instead. */
   @Deprecated
   default OpenAIEndpointBuilder openai(String componentName, String path) {
       return llm(componentName, path);
   }
   ```
   This must also be reflected in the `endpoint-builder.vm` template so future regenerations don't silently remove it again.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -12750,37 +12859,9 @@ public static OpaEndpointBuilderFactory.OpaEndpointBuilder opa(String componentN
      * @param path operation
      * @return the dsl builder
      */
+    @Deprecated
     public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder openai(String path) {

Review Comment:
   ⛔ **New blocker — `StaticEndpointBuilders.openai(String componentName, String path)` two-arg static overload removed without a deprecated bridge**
   
   Same issue as above but for the static utility class. The two-arg overload `openai(String componentName, String path)` was deleted outright — any code calling `StaticEndpointBuilders.openai("myOpenai", "chat-completion")` gets `NoSuchMethodError` at runtime.
   
   Add a deprecated static bridge after the single-arg `openai(String path)` method:
   ```java
   /** @deprecated use {@link #llm(String, String)} instead. */
   @Deprecated
   public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder openai(String componentName, String path) {
       return llm(componentName, path);
   }
   ```
   The `endpoint-static-builders.vm` template needs the equivalent change so regeneration emits this bridge automatically for all scheme aliases.



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4054107273


##########
tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java:
##########
@@ -832,6 +832,9 @@ protected ComponentModel findComponentProperties(
         if (schemes != null && schemes.length > 1) {
             model.setAlternativeSchemes(String.join(",", schemes));
         }
+        if (!Strings.isNullOrEmpty(uriEndpoint.deprecatedSchemes())) {
+            model.setDeprecatedSchemes(uriEndpoint.deprecatedSchemes());

Review Comment:
   ⚠️ **Blocker:** `deprecatedSchemes` is written to every scheme model derived from the same `@UriEndpoint` annotation, including alias schemes. Result: `openai.json` gets `"deprecatedSchemes": "openai"` — the scheme declaring itself deprecated in its own catalog entry.
   
   The DSL generator is safe (the self-reference guard in `isDeprecatedSchemeAlias` covers it), but catalog consumers reading JSON directly will see a semantically wrong entry.
   
   Fix: only set `deprecatedSchemes` when the current scheme is not itself listed as deprecated:
   
   ```suggestion
           if (!Strings.isNullOrEmpty(uriEndpoint.deprecatedSchemes())
                   && !Arrays.asList(uriEndpoint.deprecatedSchemes().split(",")).contains(scheme)) {
               model.setDeprecatedSchemes(uriEndpoint.deprecatedSchemes());
           }
   ```
   
   After this fix, `llm.json` will carry `"deprecatedSchemes": "openai"` and `openai.json` will carry none.



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4054207808


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java:
##########
@@ -1685,6 +1685,21 @@ public static GrpcEndpointBuilderFactory.GrpcHeaderNameBuilder grpc() {
     public static HashicorpVaultEndpointBuilderFactory.HashicorpVaultHeaderNameBuilder hashicorpVault() {
         return HashicorpVaultEndpointBuilderFactory.HashicorpVaultHeaderNameBuilder.INSTANCE;
     }
+    /**
+     * Hazelcast Atomic Number (camel-hazelcast)
+     * Increment, decrement, set, etc. Hazelcast atomic number (a grid wide
+     * number).
+     * 
+     * Category: cache,clustering
+     * Since: 2.7
+     * Maven coordinates: org.apache.camel:camel-hazelcast
+     * 
+     * @return the dsl builder for the headers' name.
+     */
+    @Deprecated
+    public static HazelcastAtomicnumberEndpointBuilderFactory.HazelcastAtomicnumberHeaderNameBuilder hazelcastAtomicvalue() {

Review Comment:
   ⛔ **Compile blocker — `HazelcastAtomicnumberEndpointBuilderFactory` was removed from main**
   
   This method (and the one below it) reference `HazelcastAtomicnumberEndpointBuilderFactory`, which no longer exists — it was deleted in commit `b8debda9a865` ("Removal of Hazelcast-atomicvalue") merged into `main` on 2026-09-15, after this PR's `merge main` commit. The DSL generator regenerated this file against a Camel state that still had `camel-hazelcast-atomicvalue`.
   
   **Fix:** rebase/merge `upstream/main` into this branch, then re-run `./mvnw -pl dsl/camel-endpointdsl generate-sources -Dfastinstall` and commit the result. The stale `hazelcastAtomicvalue()` methods will vanish.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -7093,6 +7093,50 @@ public static HashicorpVaultEndpointBuilderFactory.HashicorpVaultEndpointBuilder
     public static HashicorpVaultEndpointBuilderFactory.HashicorpVaultEndpointBuilder hashicorpVault(String componentName, String path) {
         return HashicorpVaultEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * Hazelcast Atomic Number (camel-hazelcast)
+     * Increment, decrement, set, etc. Hazelcast atomic number (a grid wide
+     * number).
+     * 
+     * Category: cache,clustering
+     * Since: 2.7
+     * Maven coordinates: org.apache.camel:camel-hazelcast
+     * 
+     * Syntax: <code>hazelcast-atomicvalue:cacheName</code>
+     * 
+     * Path parameter: cacheName (required)
+     * The name of the cache
+     * 
+     * @param path cacheName
+     * @return the dsl builder
+     */
+    @Deprecated
+    public static HazelcastAtomicnumberEndpointBuilderFactory.HazelcastAtomicnumberEndpointBuilder hazelcastAtomicvalue(String path) {

Review Comment:
   ⛔ **Compile blocker — same as above**
   
   `HazelcastAtomicnumberEndpointBuilderFactory` referenced here (and in the `hazelcastAtomicvalue(String, String)` overload below) does not exist in current `main`. These methods were generated against a stale Camel state. Same fix: rebase on `main` and regenerate.



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4051881204


##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -27,16 +27,17 @@
 import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 
 /**
- * OpenAI endpoint for chat completion, Responses API, embeddings, audio
- * transcription, audio translation, and text-to-speech.
+ * LLM endpoint for chat completion, Responses API, embeddings, audio
+ * transcription, audio translation, and text-to-speech using OpenAI-compatible
+ * APIs. The openai scheme is a supported alias.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface OpenAIEndpointBuilderFactory {

Review Comment:
   test comment



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24339: Add llm scheme alias for OpenAI-compatible component [camel]

Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #26606:
URL: https://github.com/apache/camel/pull/26606#discussion_r4075345843


##########
components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEndpoint.java:
##########
@@ -73,12 +73,12 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * OpenAI endpoint for chat completion, Responses API, embeddings, audio transcription, audio translation, and
- * text-to-speech.
+ * LLM endpoint for chat completion, Responses API, embeddings, audio transcription, audio translation, and
+ * text-to-speech using OpenAI-compatible APIs. The {@code openai} scheme is a supported alias.
  */
 @UriEndpoint(firstVersion = "4.17.0",

Review Comment:
   ⚠️ **`title = "LLM"` breaks the multi-scheme title convention — catalog regression for `openai` users.**
   
   Camel's code generator maps titles to schemes positionally: `scheme[i]` → `title[i]`. With `scheme = "openai,llm"` and a single `title = "LLM"`, the generator assigns `"LLM"` as the title for `openai.json` — confirmed by the diff (`-"title": "OpenAI"` → `+"title": "LLM"` in `catalog/components/openai.json`). Any catalog consumer, IDE plugin, or camel-jbang completion that looks up the `openai` component by name now sees `"LLM"` instead of `"OpenAI"`.
   
   The precedent is clear:
   - `@UriEndpoint(scheme = "http,https", title = "HTTP,HTTPS")` → `http.json` title: `HTTP`, `https.json` title: `HTTPS (Secure)`
   - `@UriEndpoint(scheme = "imap,imaps,pop3,pop3s,smtp,smtps", title = "IMAP,IMAPS,POP3,POP3S,SMTP,SMTPS")`
   
   Fix:
   ```suggestion
                scheme = "openai,llm",
                title = "OpenAI,LLM",
   ```
   Then regenerate so `openai.json` gets title `"OpenAI"` and `llm.json` gets title `"LLM"`.



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java:
##########
@@ -11272,6 +11272,36 @@ public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String path) {
     public static LdifEndpointBuilderFactory.LdifEndpointBuilder ldif(String componentName, String path) {
         return LdifEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>llm:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform: 'chat-completion', 'responses',
+     * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+     * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+     * 'audio-transcription', 'audio-translation', 'audio-speech', 'moderation',
+     * 'image-generation', 'image-edit', or 'webhook' (a consumer)
+     * There are 17 enums and the value can be one of: chat-completion,
+     * responses, responses-retrieve, responses-cancel, batch, batch-retrieve,
+     * batch-cancel, batch-results, embeddings, tool-execution,
+     * audio-transcription, audio-translation, audio-speech, moderation,
+     * image-generation, image-edit, webhook
+     * 
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String path) {

Review Comment:
   ⚠️ **`llm(String componentName, String path)` static two-arg overload still missing (raised in review #9).**
   
   `openai(String componentName, String path)` exists in this class. The `llm` entry only has `llm(String path)`. Add the two-arg static method:
   ```java
       /**
        * LLM (camel-openai)
        * LLM endpoint for chat completion, Responses API, embeddings, audio
        * transcription, audio translation, and text-to-speech using
        * OpenAI-compatible APIs. The openai scheme is a supported alias.
        *
        * @param componentName to use a custom component name for the endpoint instead of the default name
        * @param path operation
        * @return the dsl builder
        */
       public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder llm(String componentName, String path) {
           return openai(componentName, path);
       }
   ```



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java:
##########
@@ -7061,10 +7065,41 @@ default OpenAIEndpointBuilder openai(String path) {
         default OpenAIEndpointBuilder openai(String componentName, String path) {
             return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
         }
+        /**
+         * LLM (camel-openai)
+         * LLM endpoint for chat completion, Responses API, embeddings, audio
+         * transcription, audio translation, and text-to-speech using
+         * OpenAI-compatible APIs. The openai scheme is a supported alias.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>llm:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform: 'chat-completion', 'responses',
+         * 'responses-retrieve', 'responses-cancel', 'batch', 'batch-retrieve',
+         * 'batch-cancel', 'batch-results', 'embeddings', 'tool-execution',
+         * 'audio-transcription', 'audio-translation', 'audio-speech',
+         * 'moderation', 'image-generation', 'image-edit', or 'webhook' (a
+         * consumer)
+         * There are 17 enums and the value can be one of: chat-completion,
+         * responses, responses-retrieve, responses-cancel, batch,
+         * batch-retrieve, batch-cancel, batch-results, embeddings,
+         * tool-execution, audio-transcription, audio-translation, audio-speech,
+         * moderation, image-generation, image-edit, webhook
+         * 
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder llm(String path) {
+            return OpenAIEndpointBuilderFactory.endpointBuilder("llm", path);

Review Comment:
   ⚠️ **`llm(String componentName, String path)` two-arg overload still missing (raised in review #9).**
   
   `openai(String componentName, String path)` exists at line 7061 in this file. The `llm` entry has only the single-arg form. Users switching from `openai` to `llm` who use the two-arg form (needed when registering a custom component bean under the `llm` scheme name) will find no equivalent and must fall back to `openai()` — defeating the purpose of the alias.
   
   Add immediately after the `llm(String path)` method:
   ```java
           /**
            * LLM (camel-openai)
            * LLM endpoint for chat completion, Responses API, embeddings, audio
            * transcription, audio translation, and text-to-speech using
            * OpenAI-compatible APIs. The openai scheme is a supported alias.
            *
            * @param componentName to use a custom component name for the endpoint instead of the default name
            * @param path operation
            * @return the dsl builder
            */
           default OpenAIEndpointBuilder llm(String componentName, String path) {
               return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, path);
           }
   ```



##########
dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java:
##########
@@ -2994,9 +2994,10 @@ public static OpaEndpointBuilderFactory.OpaHeaderNameBuilder opa() {
         return OpaEndpointBuilderFactory.OpaHeaderNameBuilder.INSTANCE;
     }
     /**
-     * OpenAI (camel-openai)
-     * OpenAI endpoint for chat completion, Responses API, embeddings, audio
-     * transcription, audio translation, and text-to-speech.
+     * LLM (camel-openai)
+     * LLM endpoint for chat completion, Responses API, embeddings, audio
+     * transcription, audio translation, and text-to-speech using
+     * OpenAI-compatible APIs. The openai scheme is a supported alias.
      * 
      * Category: ai
      * Since: 4.17

Review Comment:
   ⚠️ **`llm()` header builder alias still missing (raised in review #9).**
   
   This file exposes `openai()` → `OpenAIHeaderNameBuilder.INSTANCE`. Users writing routes with the `llm:` scheme and the fluent header DSL will look for `llm()` here. The method is a trivial one-liner. Add it directly after the `openai()` block:
   ```java
       /**
        * LLM (camel-openai)
        * LLM endpoint for chat completion, Responses API, embeddings, audio
        * transcription, audio translation, and text-to-speech using
        * OpenAI-compatible APIs. The openai scheme is a supported alias.
        *
        * Category: ai
        * Since: 4.17
        * Maven coordinates: org.apache.camel:camel-openai
        *
        * @return the dsl builder
        */
       public static OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder llm() {
           return OpenAIEndpointBuilderFactory.OpenAIHeaderNameBuilder.INSTANCE;
       }
   ```



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org