Claus Ibsen created CAMEL-26563:
-----------------------------------

             Summary: camel-jbang-mcp - Citrus tests: answer from the Citrus 
catalog, with a tooling model for it
                 Key: CAMEL-26563
                 URL: https://issues.apache.org/jira/browse/CAMEL-26563
             Project: Camel
          Issue Type: New Feature
          Components: camel-jbang, camel-jbang-mcp, tooling
            Reporter: Claus Ibsen
             Fix For: 4.24.0


Citrus YAML tests (test/<name>.citrus.it.yaml, run with camel test run) are a 
good way for an AI agent to check what it built. The camel-jbang-mcp server 
knows Camel well, but almost nothing about Citrus:
* camel_catalog_doc and camel_catalog_find answer for Camel components and 
EIPs. They know camel-test-citrus (a Camel component), not the actions of a 
Citrus test.
* The only Citrus help is the sample tests of the examples 
(camel_catalog_examples with filter citrus, CAMEL-26493).

In the local-model benchmark (example test-citrus-orders), the model invented 
the YAML of a Citrus test in 14 of 14 runs: an http action with uri, method and 
expectStatus, and log and assert-log actions that Citrus does not have. A 
separate change checks a Citrus test against the test schema of the Citrus 
catalog when it is written. That catches the mistakes, but the agent still has 
no way to look up what an action takes.

*The Citrus catalog*
Citrus publishes a catalog much like camel-catalog: 
org.citrusframework:citrus-catalog-schema (also inside citrus-jbang), for the 
Citrus version Camel uses (5.1.0):
* test actions (161, with sub-actions such as http-sendRequest and 
camel-cli-verify), containers (12), endpoints (41), functions (43), validation 
matchers (31) and infra services (78);
* each entry has a title, a description, its module, and the JSON schema of its 
keys, with a description per key, the required keys and an advanced group;
* citrus-testcase.json, the JSON schema of a YAML test.

Some descriptions are missing (76 of 161 actions, 365 of 757 keys). The Citrus 
issue https://github.com/citrusframework/citrus/issues/1918 asks for them.

*Proposal*
# A tooling model for Citrus: POJOs that represent the Citrus catalog (test 
action, container, endpoint, function and validation matcher, with their 
options), read from the catalog JSON, as camel-tooling-model does for 
camel-catalog (ComponentModel, EipModel, JsonMapper). One parser for the MCP 
server, the CLI and editors.
# MCP: let an agent look up a Citrus test action (what it does, its keys with 
descriptions, the required and advanced keys, a short YAML sample), and list 
the actions, endpoints, functions and validation matchers. To decide: a tool of 
its own, or a part of the catalog tools (see the tool consolidation in 
CAMEL-25639).
# The write-time check of a Citrus test can then add the description of each 
key it lists.
# Later: code completion for Citrus test files in editors, from the same model, 
as the YAML DSL completion works from the YAML DSL schema.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to