davsclaus opened a new pull request, #27139: URL: https://github.com/apache/camel/pull/27139
_Claude Code on behalf of davsclaus_ [CAMEL-25161](https://issues.apache.org/jira/browse/CAMEL-25161) The AI project overview (CAMEL-25143) labels routes and groups them into capabilities. Inside a route, the business view of the TUI diagram had nothing more to show than the technical one: a `when` box read `when[jsonpath{$.order[?(@.product=='widget')]}]`. This PR gives the decision points of a route plain-language labels. It also makes the business view read in words throughout. ### Decision points in the overview - The YAML, XML and Java readers of the project overview collect choice, when, otherwise, filter, split, aggregate, loop, doTry, doCatch and circuitBreaker, with what they decide on (`simple: ${header.x} > 5`, the exception types). There are at most 10 per route, so the prompt stays small enough for local models. - A decision point is addressed by its path in the route, such as `choice[1]/when[2]` or `split[1]/filter[1]`. Only decision points count, so adding a `to` or `log` does not change a path. Every DSL gives the same path, and so does the running route tree, which is how the TUI matches its nodes to the labels. ### camel-summary.md - The prompt lists the decision points, and the answer has a `STEPS:` section: `route / path: label | why`. - The file keeps them in a `## Steps ✦ AI-assisted` section. Labels of decision points that are gone are dropped on merge. - `camel_project_overview` lists the decisions of a route with `aiLabel`/`aiWhy`. `camel_save_project_summary` takes `steps`, also in the camel-jbang-mcp server. - A route that starts a flow (an entry point that passes work to another route) is never grouped as utility. A local model put the file intake of widget-gadget there. The answer parser drops it from UTILITY, the grouping puts it with the one group it feeds, and the prompt says so. The grouping from the facts alone is unchanged. ### TUI route diagram, business view (`b`) - A decision point shows its AI label, marked `✦`. The Info panel of the node shows the label, why, and the code. The technical view keeps the expression. - Endpoints without a description read in words: `File: src/main/data`, `AMQP: queue:order.queue` (the component's title from the catalog, without options). - A box linking to another route shows that route's description or AI label. A route's own label comes from its description, its AI label or what it consumes, not the generated `route1`. - Link markers: a `to` box that shows the route it links to has only the arrow. A `from` box names its caller in words. The Info panel shows the linked route's label beside its id. - Fix: with utility routes turned off, the link from a route's `from` to a hidden caller now works. Tried in the TUI on the Spring Boot widget-gadget example with a local model (qwen3.6:35b-a3b) writing the summary. ### Tests - camel-jbang-core AI tests: 329 (new: `RouteDecisionsTest` for YAML/XML/Java paths, step labels in `IntegrationSummaryTest`, the utility guard in `ProjectCapabilitiesTest`) - camel-jbang-mcp: 421 - camel-jbang-plugin-tui: 1431 (new: `RouteStepHintsTest` with the route tree of the route-structure console, `BusinessEndpointLabelsTest`) 🤖 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]
