This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new a2a044f0d093 Fix camel export to auto-detect kamelets version from 
classpath (#23781)
a2a044f0d093 is described below

commit a2a044f0d093f42d9d8644ba6775ec5575fdb9a9
Author: Salvatore Mongiardo <[email protected]>
AuthorDate: Fri Jun 5 19:04:35 2026 +0200

    Fix camel export to auto-detect kamelets version from classpath (#23781)
    
    The --kamelets-version option was hardcoded to a compile-time default
    from parent/pom.xml in ExportBaseCommand, CatalogKamelet, CatalogDoc,
    and KameletTools. When the actual kamelets jar on the classpath has a
    different version (e.g. in productized builds), wrong version is used.
    
    Remove the compile-time defaults and let 
VersionHelper.extractKameletsVersion()
    detect the actual version from the classpath at runtime, falling back to the
    compiled-in default only when no kamelets jar is found.
---
 .../jbang-commands/camel-jbang-catalog-kamelet.adoc    |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-debug.adoc   |  2 +-
 .../jbang-commands/camel-jbang-dependency-copy.adoc    |  2 +-
 .../jbang-commands/camel-jbang-dependency-list.adoc    |  2 +-
 .../jbang-commands/camel-jbang-dependency-update.adoc  |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-dev.adoc     |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-doc.adoc     |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-export.adoc  |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-init.adoc    |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-run.adoc     |  2 +-
 .../ROOT/pages/jbang-commands/camel-jbang-sbom.adoc    |  2 +-
 .../META-INF/camel-jbang-commands-metadata.json        | 18 +++++++++---------
 .../dsl/jbang/core/commands/ExportBaseCommand.java     |  8 +++++---
 .../org/apache/camel/dsl/jbang/core/commands/Init.java |  2 +-
 .../org/apache/camel/dsl/jbang/core/commands/Run.java  |  3 ++-
 .../dsl/jbang/core/commands/catalog/CatalogDoc.java    |  9 ++++++---
 .../jbang/core/commands/catalog/CatalogKamelet.java    |  6 ++----
 .../dsl/jbang/core/commands/mcp/KameletTools.java      |  6 +++---
 18 files changed, 39 insertions(+), 35 deletions(-)

diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
index 9ef1464a2b83..838371b055c7 100644
--- 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
+++ 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
@@ -20,7 +20,7 @@ camel catalog kamelet [options]
 |===
 | Option | Description | Default | Type
 | `--filter` | Filter by name or description |  | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--sort` | Sort by name, type, support-level, or description | name | String
 | `--type,--filter-type` | Filter by type: source, sink, or action |  | String
 | `-h,--help` | Display the help and sub-commands |  | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
index 1a81efa627e8..9b1701b5cdd2 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
@@ -41,7 +41,7 @@ camel debug [options]
 | `--jfr` | Enables Java Flight Recorder saving recording to disk on exit | 
false | boolean
 | `--jfr-profile` | Java Flight Recorder profile to use (such as default or 
profile) |  | String
 | `--jvm-debug` | To enable JVM remote debugging on port 4004 by default. The 
supported values are true to enable the remote debugging, false to disable the 
remote debugging or a number to use a custom port |  | int
-| `--kamelets-version` | Apache Camel Kamelets version |  | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues) | false | boolean
 | `--local-kamelet-dir` | Local directory (or github link) for loading 
Kamelets (takes precedence). Multiple directories can be specified separated by 
comma. |  | String
 | `--log-lines` | Number of log lines to display on top of screen | 10 | int
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
index 7bf8df7878d9..c3cac1ae45fd 100644
--- 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
+++ 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
@@ -35,7 +35,7 @@ camel dependency copy [options]
 | `--hawtio-version` | Version of the Hawtio web console | 
HawtioVersion.HAWTIO_VERSION | String
 | `--ignore-loading-error` | Whether to ignore route loading and compilation 
errors (use this with care!) | false | boolean
 | `--java-version,--java` | Java version (21, 25) | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues | true | boolean
 | `--local-kamelet-dir` | Local directory for loading Kamelets (takes 
precedence) |  | String
 | `--logging` | Can be used to turn on logging to console (logs by default to 
file in <user home>/.camel directory) | false | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
index 586494301fcd..9a76157aa87d 100644
--- 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
+++ 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
@@ -35,7 +35,7 @@ camel dependency list [options]
 | `--hawtio-version` | Version of the Hawtio web console | 
HawtioVersion.HAWTIO_VERSION | String
 | `--ignore-loading-error` | Whether to ignore route loading and compilation 
errors (use this with care!) | false | boolean
 | `--java-version,--java` | Java version (21, 25) | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues | true | boolean
 | `--local-kamelet-dir` | Local directory for loading Kamelets (takes 
precedence) |  | String
 | `--logging` | Can be used to turn on logging to console (logs by default to 
file in <user home>/.camel directory) | false | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
index e106d7f7c8f1..f916144bb389 100644
--- 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
+++ 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
@@ -36,7 +36,7 @@ camel dependency update [options]
 | `--hawtio-version` | Version of the Hawtio web console | 
HawtioVersion.HAWTIO_VERSION | String
 | `--ignore-loading-error` | Whether to ignore route loading and compilation 
errors (use this with care!) | false | boolean
 | `--java-version,--java` | Java version (21, 25) | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues | true | boolean
 | `--local-kamelet-dir` | Local directory for loading Kamelets (takes 
precedence) |  | String
 | `--logging` | Can be used to turn on logging to console (logs by default to 
file in <user home>/.camel directory) | false | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dev.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dev.adoc
index 88a9443a4fc3..2d3e8e603461 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dev.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dev.adoc
@@ -39,7 +39,7 @@ camel dev [options]
 | `--jfr` | Enables Java Flight Recorder saving recording to disk on exit | 
false | boolean
 | `--jfr-profile` | Java Flight Recorder profile to use (such as default or 
profile) |  | String
 | `--jvm-debug` | To enable JVM remote debugging on port 4004 by default. The 
supported values are true to enable the remote debugging, false to disable the 
remote debugging or a number to use a custom port |  | int
-| `--kamelets-version` | Apache Camel Kamelets version |  | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues) | false | boolean
 | `--local-kamelet-dir` | Local directory (or github link) for loading 
Kamelets (takes precedence). Multiple directories can be specified separated by 
comma. |  | String
 | `--logging` | Can be used to turn off logging | true | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
index 3bf6b1ae3b91..0ee30d064345 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
@@ -25,7 +25,7 @@ camel doc [options]
 | `--filter` | Filter option listed in tables by name, description, or group | 
 | String
 | `--fresh` | Make sure we use fresh (i.e. non-cached) resources | false | 
boolean
 | `--header` | Whether to display component message headers | false | boolean
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--open-url` | Opens the online documentation form the Camel website in the 
web browser | false | boolean
 | `--quarkus-artifact-id` _(deprecated)_ | Deprecated. This value is not used 
anymore. It is kept only for backwards compatibility and will be removed in 
Camel 5.x. Camel commands may use either 'quarkus-bom' or 'quarkus-camel-bom' 
artifactIds depending on the context. | quarkus-bom | String
 | `--quarkus-ext-registry` | The base URI of Quarkus Extension Registry. The 
default is {@value RuntimeType#QUARKUS_EXTENSION_REGISTRY_BASE_URL} unless 
camel.jbang.quarkus.platform.url system property is set (the /client/platforms 
suffix is removed if present). |  | String
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
index 32209ab22df2..84a940458c3f 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
@@ -35,7 +35,7 @@ camel export [options]
 | `--hawtio-version` | Version of the Hawtio web console | 
HawtioVersion.HAWTIO_VERSION | String
 | `--ignore-loading-error` | Whether to ignore route loading and compilation 
errors (use this with care!) | false | boolean
 | `--java-version,--java` | Java version (21, 25) | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues | true | boolean
 | `--local-kamelet-dir` | Local directory for loading Kamelets (takes 
precedence) |  | String
 | `--logging` | Can be used to turn on logging to console (logs by default to 
file in <user home>/.camel directory) | false | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
index d6f92e69357c..f9792e234294 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
@@ -22,7 +22,7 @@ camel init [options]
 | `--clean-dir,--clean-directory` | Whether to clean directory first (deletes 
all files in directory) |  | boolean
 | `--dir,--directory` | Directory relative path where the new Camel 
integration will be saved | . | String
 | `--from-kamelet` | To be used when extending an existing Kamelet |  | String
-| `--kamelets-version` | Apache Camel Kamelets version |  | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--list` | List available templates |  | boolean
 | `--pipe` | When creating a yaml file should it be created as a Pipe CR |  | 
boolean
 | `--repo,--repos` | Additional maven repositories (Use commas to separate 
multiple repositories) |  | String
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
index 74ba2ea80773..18c48842fba5 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
@@ -39,7 +39,7 @@ camel run [options]
 | `--jfr` | Enables Java Flight Recorder saving recording to disk on exit | 
false | boolean
 | `--jfr-profile` | Java Flight Recorder profile to use (such as default or 
profile) |  | String
 | `--jvm-debug` | To enable JVM remote debugging on port 4004 by default. The 
supported values are true to enable the remote debugging, false to disable the 
remote debugging or a number to use a custom port |  | int
-| `--kamelets-version` | Apache Camel Kamelets version |  | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues) | false | boolean
 | `--local-kamelet-dir` | Local directory (or github link) for loading 
Kamelets (takes precedence). Multiple directories can be specified separated by 
comma. |  | String
 | `--logging` | Can be used to turn off logging | true | boolean
diff --git 
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc 
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
index b15316ac0c93..1cbc76e30d42 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
@@ -36,7 +36,7 @@ camel sbom [options]
 | `--hawtio-version` | Version of the Hawtio web console | 
HawtioVersion.HAWTIO_VERSION | String
 | `--ignore-loading-error` | Whether to ignore route loading and compilation 
errors (use this with care!) | false | boolean
 | `--java-version,--java` | Java version (21, 25) | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version | 
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from 
classpath if not set) |  | String
 | `--lazy-bean` | Whether to use lazy bean initialization (can help with 
complex classloading issues | true | boolean
 | `--local-kamelet-dir` | Local directory for loading Kamelets (takes 
precedence) |  | String
 | `--logging` | Can be used to turn on logging to console (logs by default to 
file in <user home>/.camel directory) | false | boolean
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
 
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
index 024b48cdbcaa..019f53a12b41 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
@@ -2,32 +2,32 @@
   "commands": [
     { "name": "ask", "fullName": "ask", "description": "Ask a question about a 
running Camel application using AI", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Ask", "options": [ { "names": 
"--api-key", "description": "API key. Also reads ANTHROPIC_API_KEY, 
OPENAI_API_KEY, or LLM_API_KEY env vars", "javaType": "java.lang.String", 
"type": "string" }, { "names": "--api-type", "description": "API type: 
'ollama', 'openai', or 'anthropic'", "javaType": "LlmClient.ApiType", "type" 
[...]
     { "name": "bind", "fullName": "bind", "description": "DEPRECATED: Bind 
source and sink Kamelets as a new Camel integration", "deprecated": true, 
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.bind.Bind", "options": 
[ { "names": "--error-handler", "description": "Add error handler 
(none|log|sink:<endpoint>). Sink endpoints are expected in the format 
[[apigroup\/]version:]kind:[namespace\/]name, plain Camel URIs or Kamelet 
name.", "javaType": "java.lang.String", "type": "stri [...]
-    { "name": "catalog", "fullName": "catalog", "description": "List artifacts 
from Camel Catalog", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand", "options": [ 
{ "names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": 
"component", "fullName": "catalog component", "description": "List components 
from the Camel Catalog", "sourceClass": "org.apache.camel.dsl.jbang.co [...]
+    { "name": "catalog", "fullName": "catalog", "description": "List artifacts 
from Camel Catalog", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand", "options": [ 
{ "names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": 
"component", "fullName": "catalog component", "description": "List components 
from the Camel Catalog", "sourceClass": "org.apache.camel.dsl.jbang.co [...]
     { "name": "cmd", "fullName": "cmd", "description": "Performs commands in 
the running Camel integrations, such as start\/stop route, or change logging 
levels.", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.action.CamelAction", "options": [ { 
"names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": 
"browse", "fullName": "cmd browse", "description": "Browse pending messages on 
endpoints [...]
     { "name": "completion", "fullName": "completion", "description": "Generate 
completion script for bash\/zsh", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Complete", "options": [ { "names": 
"-h,--help", "description": "Display the help and sub-commands", "javaType": 
"boolean", "type": "boolean" } ] },
     { "name": "config", "fullName": "config", "description": "Get and set user 
configuration values", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.config.ConfigCommand", "options": [ { 
"names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "get", 
"fullName": "config get", "description": "Display user configuration value", 
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.config. [...]
-    { "name": "debug", "fullName": "debug", "description": "Debug local Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Debug", 
"options": [ { "names": "--ago", "description": "Use ago instead of yyyy-MM-dd 
HH:mm:ss in timestamp.", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background", "description": "Run in the background", "defaultValue": 
"false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To  [...]
-    { "name": "dependency", "fullName": "dependency", "description": "Displays 
all Camel dependencies required to run", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.DependencyCommand", "options": [ { 
"names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": 
"copy", "fullName": "dependency copy", "description": "Copies all Camel 
dependencies required to run to a specific directory", "sourc [...]
-    { "name": "dev", "fullName": "dev", "description": "Run in dev mode with 
live reload", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Dev", 
"options": [ { "names": "--background", "description": "Run in the background", 
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To wait for run in background to startup 
successfully, before returning", "defaultValue": "true", "javaType": "boolean", 
"type": "boolean" }, [...]
+    { "name": "debug", "fullName": "debug", "description": "Debug local Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Debug", 
"options": [ { "names": "--ago", "description": "Use ago instead of yyyy-MM-dd 
HH:mm:ss in timestamp.", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background", "description": "Run in the background", "defaultValue": 
"false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To  [...]
+    { "name": "dependency", "fullName": "dependency", "description": "Displays 
all Camel dependencies required to run", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.DependencyCommand", "options": [ { 
"names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": 
"copy", "fullName": "dependency copy", "description": "Copies all Camel 
dependencies required to run to a specific directory", "sourc [...]
+    { "name": "dev", "fullName": "dev", "description": "Run in dev mode with 
live reload", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Dev", 
"options": [ { "names": "--background", "description": "Run in the background", 
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To wait for run in background to startup 
successfully, before returning", "defaultValue": "true", "javaType": "boolean", 
"type": "boolean" }, [...]
     { "name": "dirty", "fullName": "dirty", "description": "Check if there are 
dirty files from previous Camel runs that did not terminate gracefully", 
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.process.Dirty", 
"options": [ { "names": "--clean", "description": "Clean dirty files which are 
no longer in use", "defaultValue": "false", "javaType": "boolean", "type": 
"boolean" }, { "names": "-h,--help", "description": "Display the help and 
sub-commands", "javaType": "boolean", " [...]
-    { "name": "doc", "fullName": "doc", "description": "Shows documentation 
for kamelet, component, and other Camel resources", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc", "options": [ { 
"names": "--camel-version", "description": "To use a different Camel version 
than the default version", "javaType": "java.lang.String", "type": "string" }, 
{ "names": "--download", "description": "Whether to allow automatic downloading 
JAR dependencies (over the internet [...]
+    { "name": "doc", "fullName": "doc", "description": "Shows documentation 
for kamelet, component, and other Camel resources", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc", "options": [ { 
"names": "--camel-version", "description": "To use a different Camel version 
than the default version", "javaType": "java.lang.String", "type": "string" }, 
{ "names": "--download", "description": "Whether to allow automatic downloading 
JAR dependencies (over the internet [...]
     { "name": "doctor", "fullName": "doctor", "description": "Checks the 
environment and reports potential issues", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Doctor", "options": [ { "names": 
"-h,--help", "description": "Display the help and sub-commands", "javaType": 
"boolean", "type": "boolean" } ] },
     { "name": "eval", "fullName": "eval", "description": "Evaluate Camel 
expressions and scripts", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.EvalCommand", "options": [ { "names": 
"-h,--help", "description": "Display the help and sub-commands", "javaType": 
"boolean", "type": "boolean" } ], "subcommands": [ { "name": "expression", 
"fullName": "eval expression", "description": "Evaluates Camel expression", 
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.action.EvalEx [...]
     { "name": "explain", "fullName": "explain", "description": "Explain what a 
Camel route does using AI\/LLM", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Explain", "options": [ { "names": 
"--api-key", "description": "API key for authentication. Also reads 
ANTHROPIC_API_KEY, OPENAI_API_KEY, or LLM_API_KEY env vars", "javaType": 
"java.lang.String", "type": "string" }, { "names": "--api-type", "description": 
"API type: 'ollama', 'openai' (OpenAI-compatible), or 'anthropic' (A [...]
-    { "name": "export", "fullName": "export", "description": "Export to other 
runtimes (Camel Main, Spring Boot, or Quarkus)", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Export", "options": [ { "names": 
"--build-property", "description": "Maven build properties, ex. 
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, { 
"names": "--camel-spring-boot-version", "description": "Camel version to use 
with Spring Boot", "javaType": "java.lang.String", "ty [...]
+    { "name": "export", "fullName": "export", "description": "Export to other 
runtimes (Camel Main, Spring Boot, or Quarkus)", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Export", "options": [ { "names": 
"--build-property", "description": "Maven build properties, ex. 
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, { 
"names": "--camel-spring-boot-version", "description": "Camel version to use 
with Spring Boot", "javaType": "java.lang.String", "ty [...]
     { "name": "get", "fullName": "get", "description": "Get status of Camel 
integrations", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.CamelStatus", "options": [ { 
"names": "--watch", "description": "Execute periodically and showing output 
fullscreen", "javaType": "boolean", "type": "boolean" }, { "names": 
"-h,--help", "description": "Display the help and sub-commands", "javaType": 
"boolean", "type": "boolean" } ], "subcommands": [ { "name": "bean", 
"fullName": "get  [...]
     { "name": "harden", "fullName": "harden", "description": "Suggest security 
hardening for Camel routes using AI\/LLM", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Harden", "options": [ { "names": 
"--api-key", "description": "API key for authentication. Also reads 
OPENAI_API_KEY or LLM_API_KEY env vars", "javaType": "java.lang.String", 
"type": "string" }, { "names": "--api-type", "description": "API type: 'ollama' 
or 'openai' (OpenAI-compatible)", "defaultValue": "ollama", [...]
     { "name": "hawtio", "fullName": "hawtio", "description": "Launch Hawtio 
web console", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.Hawtio", "options": [ { 
"names": "--host", "description": "Hostname to bind the Hawtio web console to", 
"defaultValue": "127.0.0.1", "javaType": "java.lang.String", "type": "string" 
}, { "names": "--openUrl", "description": "To automatic open Hawtio web console 
in the web browser", "defaultValue": "true", "javaType": "boolean", "type": 
[...]
     { "name": "infra", "fullName": "infra", "description": "List and Run 
external services for testing and prototyping", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.infra.InfraCommand", "options": [ { 
"names": "--json", "description": "Output in JSON Format", "javaType": 
"boolean", "type": "boolean" }, { "names": "-h,--help", "description": "Display 
the help and sub-commands", "javaType": "boolean", "type": "boolean" } ], 
"subcommands": [ { "name": "get", "fullName": "infra  [...]
-    { "name": "init", "fullName": "init", "description": "Creates a new Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Init", 
"options": [ { "names": "--clean-dir,--clean-directory", "description": 
"Whether to clean directory first (deletes all files in directory)", 
"javaType": "boolean", "type": "boolean" }, { "names": "--dir,--directory", 
"description": "Directory relative path where the new Camel integration will be 
saved", "defaultValue": ".", "javaType" [...]
+    { "name": "init", "fullName": "init", "description": "Creates a new Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Init", 
"options": [ { "names": "--clean-dir,--clean-directory", "description": 
"Whether to clean directory first (deletes all files in directory)", 
"javaType": "boolean", "type": "boolean" }, { "names": "--dir,--directory", 
"description": "Directory relative path where the new Camel integration will be 
saved", "defaultValue": ".", "javaType" [...]
     { "name": "jolokia", "fullName": "jolokia", "description": "Attach Jolokia 
JVM Agent to a running Camel integration", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.Jolokia", "options": [ { 
"names": "--port", "description": "To use a specific port number when attaching 
Jolokia JVM Agent (default a free port is found in range 8778-9999)", 
"javaType": "int", "type": "integer" }, { "names": "--stop", "description": 
"Stops the Jolokia JVM Agent in the running Camel inte [...]
     { "name": "log", "fullName": "log", "description": "Tail logs from running 
Camel integrations", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.action.CamelLogAction", "options": [ 
{ "names": "--find", "description": "Find and highlight matching text (ignore 
case).", "javaType": "java.lang.String", "type": "string" }, { "names": 
"--follow", "description": "Keep following and outputting new log lines (press 
enter to exit).", "defaultValue": "true", "javaType": "boolean", "typ [...]
     { "name": "nano", "fullName": "nano", "description": "Nano editor to edit 
file", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Nano", 
"options": [ { "names": "-h,--help", "description": "Display the help and 
sub-commands", "javaType": "boolean", "type": "boolean" } ] },
     { "name": "plugin", "fullName": "plugin", "description": "Manage plugins 
that add sub-commands to this CLI", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.plugin.PluginCommand", "options": [ { 
"names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "add", 
"fullName": "plugin add", "description": "Add new plugin", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.plugin.PluginA [...]
     { "name": "ps", "fullName": "ps", "description": "List running Camel 
integrations", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.ListProcess", "options": [ { 
"names": "--json", "description": "Output in JSON Format", "javaType": 
"boolean", "type": "boolean" }, { "names": "--pid", "description": "List only 
pid in the output", "javaType": "boolean", "type": "boolean" }, { "names": 
"--remote", "description": "Break down counters into remote\/total pairs", 
"javaType": [...]
     { "name": "restart", "fullName": "restart", "description": "Restarts 
running Camel integrations (stop + re-launch)", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.RestartProcess", "options": [ 
{ "names": "-h,--help", "description": "Display the help and sub-commands", 
"javaType": "boolean", "type": "boolean" } ] },
-    { "name": "run", "fullName": "run", "description": "Run as local Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Run", 
"options": [ { "names": "--background", "description": "Run in the background", 
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To wait for run in background to startup 
successfully, before returning", "defaultValue": "true", "javaType": "boolean", 
"type": "boolean" }, { [...]
-    { "name": "sbom", "fullName": "sbom", "description": "Generate a CycloneDX 
or SPDX SBOM for a specific project", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.SBOMGenerator", "options": [ { 
"names": "--build-property", "description": "Maven build properties, ex. 
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, { 
"names": "--camel-spring-boot-version", "description": "Camel version to use 
with Spring Boot", "javaType": "java.lang.String", "type" [...]
+    { "name": "run", "fullName": "run", "description": "Run as local Camel 
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Run", 
"options": [ { "names": "--background", "description": "Run in the background", 
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names": 
"--background-wait", "description": "To wait for run in background to startup 
successfully, before returning", "defaultValue": "true", "javaType": "boolean", 
"type": "boolean" }, { [...]
+    { "name": "sbom", "fullName": "sbom", "description": "Generate a CycloneDX 
or SPDX SBOM for a specific project", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.SBOMGenerator", "options": [ { 
"names": "--build-property", "description": "Maven build properties, ex. 
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, { 
"names": "--camel-spring-boot-version", "description": "Camel version to use 
with Spring Boot", "javaType": "java.lang.String", "type" [...]
     { "name": "script", "fullName": "script", "description": "Run Camel 
integration as shell script for terminal scripting", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.Script", "options": [ { "names": 
"--logging", "description": "Can be used to turn on logging (logs to file in 
<user home>\/.camel directory)", "defaultValue": "false", "javaType": 
"boolean", "type": "boolean" }, { "names": "--logging-level", "description": 
"Logging level (ERROR, WARN, INFO, DEBUG, TRACE)", "d [...]
     { "name": "shell", "fullName": "shell", "description": "Interactive Camel 
JBang shell.", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Shell", 
"options": [ { "names": "-h,--help", "description": "Display the help and 
sub-commands", "javaType": "boolean", "type": "boolean" } ] },
     { "name": "stop", "fullName": "stop", "description": "Shuts down running 
Camel integrations", "sourceClass": 
"org.apache.camel.dsl.jbang.core.commands.process.StopProcess", "options": [ { 
"names": "--kill", "description": "To force killing the process (SIGKILL)", 
"javaType": "boolean", "type": "boolean" }, { "names": "-h,--help", 
"description": "Display the help and sub-commands", "javaType": "boolean", 
"type": "boolean" } ] },
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 8e17ee6c2899..a5b25f76642c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -171,9 +171,8 @@ public abstract class ExportBaseCommand extends 
CamelCommand {
     protected String camelVersion;
 
     @CommandLine.Option(names = {
-            "--kamelets-version" }, description = "Apache Camel Kamelets 
version",
-                        defaultValue = RuntimeType.KAMELETS_VERSION)
-    protected String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+            "--kamelets-version" }, description = "Apache Camel Kamelets 
version (auto-detected from classpath if not set)")
+    protected String kameletsVersion;
 
     @CommandLine.Option(names = { "--profile" }, scope = 
CommandLine.ScopeType.INHERIT,
                         completionCandidates = 
ProfileCompletionCandidates.class,
@@ -535,6 +534,9 @@ public abstract class ExportBaseCommand extends 
CamelCommand {
     protected abstract Integer export() throws Exception;
 
     protected Integer runSilently(boolean ignoreLoadingError, boolean 
lazyBean, boolean verbose) throws Exception {
+        if (kameletsVersion == null) {
+            kameletsVersion = VersionHelper.extractKameletsVersion();
+        }
         Run run = new Run(getMain());
         // need to declare the profile to use for run
         run.exportBaseDir = exportBaseDir;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index da2d911daf10..2bae2e1c22de 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -86,7 +86,7 @@ public class Init extends CamelCommand {
     private String fromKamelet;
 
     @Option(names = {
-            "--kamelets-version" }, description = "Apache Camel Kamelets 
version")
+            "--kamelets-version" }, description = "Apache Camel Kamelets 
version (auto-detected from classpath if not set)")
     private String kameletsVersion;
 
     @Option(names = { "--pipe" },
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 4a84c6af6c94..f3cd2c2385cc 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -197,7 +197,8 @@ public class Run extends CamelCommand {
             description = "To run using a different Camel Spring Boot version 
than the default version.")
     String camelSpringBootVersion;
 
-    @Option(names = { "--kamelets-version" }, description = "Apache Camel 
Kamelets version")
+    @Option(names = { "--kamelets-version" },
+            description = "Apache Camel Kamelets version (auto-detected from 
classpath if not set)")
     String kameletsVersion;
 
     @CommandLine.Mixin
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
index 47be173a6c6e..87a73be26465 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
@@ -40,6 +40,7 @@ import 
org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
 import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.common.TerminalWidthHelper;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.main.util.SuggestSimilarHelper;
 import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.tooling.model.BaseOptionModel;
@@ -108,9 +109,8 @@ public class CatalogDoc extends CamelCommand {
     boolean example;
 
     @CommandLine.Option(names = {
-            "--kamelets-version" }, description = "Apache Camel Kamelets 
version",
-                        defaultValue = RuntimeType.KAMELETS_VERSION)
-    String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+            "--kamelets-version" }, description = "Apache Camel Kamelets 
version (auto-detected from classpath if not set)")
+    String kameletsVersion;
 
     CamelCatalog catalog;
 
@@ -141,6 +141,9 @@ public class CatalogDoc extends CamelCommand {
 
     @Override
     public Integer doCall() throws Exception {
+        if (kameletsVersion == null) {
+            kameletsVersion = VersionHelper.extractKameletsVersion();
+        }
         this.catalog = loadCatalog();
 
         String prefix = StringHelper.before(name, ":");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
index a6cc5bd627fe..bc00499e416e 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
@@ -29,7 +29,6 @@ import com.github.freva.asciitable.Column;
 import com.github.freva.asciitable.HorizontalAlign;
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
-import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.TerminalWidthHelper;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.main.download.DependencyDownloaderClassLoader;
@@ -60,9 +59,8 @@ public class CatalogKamelet extends CamelCommand {
     String filterName;
 
     @CommandLine.Option(names = {
-            "--kamelets-version" }, description = "Apache Camel Kamelets 
version",
-                        defaultValue = RuntimeType.KAMELETS_VERSION)
-    String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+            "--kamelets-version" }, description = "Apache Camel Kamelets 
version (auto-detected from classpath if not set)")
+    String kameletsVersion;
 
     public CatalogKamelet(CamelJBangMain main) {
         super(main);
diff --git 
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
index cd167e5ed52d..0610376a1156 100644
--- 
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
+++ 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
@@ -29,7 +29,7 @@ import io.quarkiverse.mcp.server.ToolCallException;
 import org.apache.camel.dsl.jbang.core.commands.catalog.KameletCatalogHelper;
 import org.apache.camel.dsl.jbang.core.commands.catalog.KameletModel;
 import org.apache.camel.dsl.jbang.core.commands.catalog.KameletOptionModel;
-import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 
 /**
  * MCP Tools for querying the Kamelet Catalog using Quarkus MCP Server.
@@ -54,7 +54,7 @@ public class KameletTools {
 
         try {
             String version = kameletsVersion != null && 
!kameletsVersion.isBlank()
-                    ? kameletsVersion : RuntimeType.KAMELETS_VERSION;
+                    ? kameletsVersion : VersionHelper.extractKameletsVersion();
 
             Map<String, Object> kamelets = 
KameletCatalogHelper.loadKamelets(version, null);
 
@@ -111,7 +111,7 @@ public class KameletTools {
 
         try {
             String version = kameletsVersion != null && 
!kameletsVersion.isBlank()
-                    ? kameletsVersion : RuntimeType.KAMELETS_VERSION;
+                    ? kameletsVersion : VersionHelper.extractKameletsVersion();
 
             KameletModel km = KameletCatalogHelper.loadKameletModel(kamelet, 
version, null);
             if (km == null) {


Reply via email to