Claus Ibsen created CAMEL-24805:
-----------------------------------

             Summary: camel-jbang - TUI AI panel checks the simple expressions 
in an answer before showing it, and gives the model one turn to fix them
                 Key: CAMEL-24805
                 URL: https://issues.apache.org/jira/browse/CAMEL-24805
             Project: Camel
          Issue Type: Improvement
          Components: camel-knative
            Reporter: Claus Ibsen


The TUI AI panel with a local Ollama model gets simple wrong in a specific, 
recurring way: given the catalog example {{$\{header.username\} ?: 'Guest'}} 
the model still writes {{$\{header.username ?: 'Guest'\}}} (the operator inside 
the placeholder) in every example, and similar slips with {{==}} and {{&&}} 
inside {{$\{...\}}}. A file the model writes goes through {{camel_write_file}}, 
which validates it and refuses an invalid one, so a route file ends up right 
after a retry. But the answer text does not: a snippet shown in the chat, or an 
expression in the explanation, reaches the user unchecked, and it is what the 
user copies.

Proposed:
* after the model's final answer, before it is rendered, extract the simple 
expressions from it: the {{$\{...\}}} placeholders and the fenced code blocks 
that hold a simple expression or a YAML step with {{simple:}};
* run them through the checks the tools already use ({{SimpleChecks}} in 
camel-jbang-core, which is what {{camel_validate_source}} runs, plus the 
catalog's simple validator; {{SimpleChecks.hasPlaceholderAsLogicalOperand}} 
already detects the operator-inside-the-placeholder case);
* when an error is found, send it back to the model as one correction turn 
("the answer contains an invalid simple expression: ...; fix the answer") 
within the existing tool-call budget ({{AiPanel.MAX_ITERATIONS}}), and if the 
model does not fix it, show the answer with the validator's message below it so 
the user is not misled;
* count the correction in the answer byline (CAMEL-24796) so it is measurable 
how often a model needs it.

Out of scope: the external MCP server ({{camel mcp}}); there the client renders 
the answer and the tools already validate what is written.

Tests in {{AiPanelTest}} with the fake client: an answer with {{$\{header.foo 
?: 'x'\}}} triggers one correction turn; a corrected answer is shown as is; an 
answer that stays wrong is shown with the message.

Context: the simple support for local models in the TUI AI panel (Sept 2026, 
{{camel_eval_expression}}, the simple primer in the system prompt and the 
function groups of {{camel_catalog_doc}}); this is the last step, checking what 
the model says rather than only what it writes.

_Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to