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)