[
https://issues.apache.org/jira/browse/CAMEL-25750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-25750:
-----------------------------------
Assignee: Claus Ibsen
> camel-jbang - camel validate fills the gaps of its body walk with the body
> types a running app observed, and an MCP tool says what the body was at each
> step
> ------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25750
> URL: https://issues.apache.org/jira/browse/CAMEL-25750
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang, camel-yaml-dsl
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.24.0
>
>
> Step 2 of the design note of 2026-10-05 on CAMEL-24844 (observed types feed
> the authoring tools).
> The body walk of the YAML validator ({{BodyTypeFlow}} and {{TextBodyFlow}} in
> camel-yaml-dsl-validator) reports only where it is certain what the body is:
> after the file consumer, a setBody with a constant, a marshal, a
> convertBodyTo String or byte[], or a {{direct:}} route that ends with one of
> those. After kafka, jms, an HTTP call, a bean or a Kamelet it does not know
> the body and says nothing, which is right for a file that has never run.
> In a dev loop the app has usually run those steps already ({{camel run
> --dev}}, or a model through camel-jbang-mcp), and the message history
> recorded the body type at each one ({{MessageHistory.getBodyType()}}, 4.23).
> Today that fact is shown for one exchange only: {{camel history}} and the
> {{camel_runtime_history}} tool return the history of the last completed
> exchange.
> h3. Proposal
> # *Observed types per step.* With message history on (the dev profile), the
> running app keeps the body types seen at each route node: the last one, and
> whether it varied. Each node carries its source location (CAMEL-24972), so a
> tool can match it to a line of the file. camel-jbang reads it like the other
> runtime facts.
> # *The validator takes them as facts.* When {{camel validate}} or
> {{camel_validate_source}} checks a file of a running app, an observed type
> fills a step where the static walk says unknown, and the existing checks
> apply: {{$\{body\[x\]\}}} on a body that was seen to be a String is reported,
> whatever component produced it. A type that varied, or a step that has not
> run, stays unknown and gets no report.
> # *An MCP tool says what the body was at each step* of the running app, from
> the same data and not only the last exchange, so a model reads it before it
> writes the next step instead of guessing.
> This covers what was run, and only that. Paths that were not tried stay
> unknown, which is honest.
> h3. Measure
> The body type collisions per series of the local-model benchmark, with the
> static walk alone and with observed types.
> h3. Not in scope
> The error messages (step 1, CAMEL-25749), the catalog metadata (CAMEL-24961).
> _Filed by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)