christophd opened a new pull request, #28727: URL: https://github.com/apache/camel/pull/28727
## Summary Adds a new Camel JBang plugin (`camel-jbang-plugin-kaoto`) that serves the [Kaoto](https://kaoto.io/) visual route editor as a self-contained local web application. - **`camel kaoto start`** — launches an embedded Vert.x HTTP server on `127.0.0.1`, serving the Kaoto SPA and a REST API for reading/writing Camel route files (`*.camel.yaml`, `*.camel.xml`) and Citrus test files (`*.citrus.yaml`, `*.citrus.xml`, etc.) - **`camel kaoto stop`** — sends a shutdown signal to a running Kaoto server - No Docker, Node.js, or separate installation required at runtime — the Kaoto dist is extracted from the Docker image at build time and bundled in the JAR - Build-time catalog filtering reduces JAR size by keeping only whitelisted catalog versions - REST API supports routes (`/api/routes`), tests (`/api/tests`) with `test/` subdirectory support, and shutdown (`/api/shutdown`) - Security: loopback-only binding, path traversal prevention, `X-Frame-Options` / CSP headers - Includes documentation (`camel-jbang-kaoto.adoc`) with full REST API reference ### New files - `dsl/camel-jbang/camel-jbang-plugin-kaoto/` — plugin module with `KaotoStart`, `KaotoStop`, `KaotoWebServer`, `KaotoRequestHandler`, `CatalogFilter`, and 21 unit tests - `docs/user-manual/modules/ROOT/pages/camel-jbang-kaoto.adoc` — plugin documentation - Auto-generated command reference pages ### Modified files - `dsl/camel-jbang/pom.xml` — added module - `PluginType.java` — added `KAOTO` entry - `CamelJBang.java` — registered plugin commands - `nav.adoc` / `camel-jbang-commands.adoc` — doc navigation ## Test plan - [x] All 21 unit tests pass (`KaotoRequestHandlerTest` + `KaotoWebServerTest`) - [ ] Manual test: `camel plugin add kaoto && camel kaoto start` opens Kaoto in browser - [ ] Verify build with Docker/Podman available extracts Kaoto dist and filters catalogs - [ ] Verify `camel kaoto stop` shuts down the server cleanly _Claude Code on behalf of Christoph Deppisch_ 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
