[
https://issues.apache.org/jira/browse/CAMEL-25652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-25652:
-----------------------------------
Assignee: Claus Ibsen
> Component metadata: an internal flag, next to remote, for components that
> only reach the CamelContext
> -----------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25652
> URL: https://issues.apache.org/jira/browse/CAMEL-25652
> Project: Camel
> Issue Type: Improvement
> Components: camel-catalog, camel-jbang, tooling
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.24.0
>
>
> The component metadata has one dimension for where a component reaches:
> {{@UriEndpoint(remote = ...)}}, published as {{"remote"}} in the catalog JSON
> and as {{Endpoint.isRemote()}}. 69 of the 412 components are {{remote:
> false}}, and they are of two kinds:
> * components that stay inside the CamelContext: its routes and in-memory
> queues, its log, the test endpoints (direct, seda, disruptor, disruptor-vm,
> log, mock, stub, browse, dataset, dataset-test, the caffeine caches, the
> metrics components, event)
> * components that reach the machine they run on: they run code (exec, shell,
> class, bean, language, mvel, wasm), load a template, stylesheet or schema by
> URI and so read a file or fetch a URL (velocity, freemarker, mustache,
> thymeleaf, xslt, xquery, validator, json-validator, jolt, jslt and others),
> or drive the JVM (jmx, controlbus)
> The labels do not tell them apart either: exec is "core", and the template
> components share "transformation" with plain mappers.
> Tooling needs the difference. The AI tools of Camel TUI send a message to an
> endpoint without asking when it stays inside the integration (a test message
> to log: or direct: should not need a confirmation), and ask the user first
> otherwise. For now the TUI keeps its own list of internal components
> ({{ToolConfirms.INTERNAL_SCHEMES}}); camel-jbang-mcp has the same need.
> Proposal, a positive flag next to remote:
> * {{@UriEndpoint(internal = true)}}: the endpoint only reaches the
> CamelContext (its routes, in-memory state and log), and no file, process,
> code, or resource named in the URI. It implies {{remote = false}}.
> * Published in the catalog JSON as {{"internal": true}} and in
> {{ComponentModel}}; maybe also a default {{Endpoint.isInternal()}}.
> * False by default, so a new component is not internal until its author says
> so. Marking the other side instead (such as {{hostAccess = true}}) fails open
> when it is forgotten.
> * Set on the components in the first bullet above.
> The TUI and camel-jbang-mcp then read it from the catalog of the
> integration's Camel version, with their own list as the fallback for older
> catalogs. A runtime use could follow: with the prod profile, a warning when a
> toD or a recipient list resolves a URI built from message data to a component
> that is neither remote nor internal.
> An alternative is a three-way reach (context, host, network) in place of
> remote. It models it better, but {{Endpoint.isRemote()}} is public API, so
> the additive flag is the smaller change.
> _Claude Code on behalf of Claus Ibsen_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)