[ 
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)

Reply via email to