[ 
https://issues.apache.org/jira/browse/CAMEL-25668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Luigi De Masi updated CAMEL-25668:
----------------------------------
    Description: 
h2. Purpose

Give the existing Semantic experts consistent, explicit artifact names while 
keeping the TypeSafe AI component independently usable without a dependency on 
camel-semantic.

This task covers two different packaging changes:

* Extract the TypeSafe AI semantic adapter from camel-typesafe-ai into a new 
camel-semantic-typesafe-ai module.
* Rename the existing camel-wolf-defender module/artifact to 
camel-semantic-wolf-defender. Wolf Defender is already a Semantic expert 
module, with its local inference implementation and supporting exception; it 
has no separate Camel routing endpoint. This is a module rename, not an 
adapter/backend split.

h2. TypeSafe AI: extract the adapter

* Add components/camel-ai/camel-semantic-typesafe-ai, depending on 
camel-semantic and camel-typesafe-ai.
* Move TypeSafeAiSemanticAdapter and the applicable Semantic-specific tests to 
the new module.
* Keep the component, endpoints, producer, client configuration and managed 
transport in camel-typesafe-ai. Reuse that transport from the extracted adapter.
* Remove camel-typesafe-ai's dependency on camel-semantic. Do not introduce a 
reverse dependency from the component to the new adapter module.
* Preserve existing operations, accepted inputs, parameters, batching, typed 
results, provider uncertainty, exceptions and lifecycle behavior.

h2. Wolf Defender: rename the module

* Rename components/camel-ai/camel-wolf-defender and its Maven artifact to 
camel-semantic-wolf-defender.
* Keep the adapter, inference implementation, supporting exception and tests 
together. Preserve their Java packages and class names; no inference API 
extraction or new routing component is required.
* Keep the existing model provisioning, native dependencies, resource limits, 
concurrency, lifecycle, failure behavior and expert semantics unchanged.

h2. Explicit input validation

* Validate the input shapes and modalities accepted by each expert before 
provider requests or local inference, including direct adapter calls and 
batches.
* TypeSafe AI accepts text and its supported structured application state 
(String, Map and List). Wolf Defender accepts text only, subject to its 
existing nonblank, character and token limits.
* Reject unsupported images, audio, video, binary objects and explicit media 
parts with clear validation exceptions. Do not stringify unsupported inputs, 
silently remove parts or invoke preprocessing/fallback services. A structured 
wrapper must not bypass the checks for explicit media content.
* Apply the applicable validation at the TypeSafe provider/component boundary 
as well as its Semantic adapter boundary, without introducing a dependency from 
camel-typesafe-ai to camel-semantic. Do not require shared Semantic media 
classes in the provider component.
* Preserve legitimate structured state and ordinary textual content; do not 
infer a media modality merely from arbitrary user text or field names.
* Add positive tests for each supported input shape and negative tests showing 
rejection before HTTP/model invocation, including a batch with an invalid 
input. Document any newly enforced rejection of previously accepted unsupported 
values in the upgrade guide.

h2. Build, metadata and migration

* Update reactor modules, dependency management/BOM entries, relevant 
dependency declarations, generated catalog metadata and documentation mirrors.
* Update expert artifact identity to the module that contains each adapter, 
preserving provider identity and operation meaning.
* Update documentation, examples and applicable Camel JBang dependency 
resolution/usage references to use the new artifacts. Preserve explicit named 
expert selection and the existing runtime metadata/tooling contract.
* Document the migration in the appropriate upgrade guide: TypeSafe Semantic 
users add camel-semantic-typesafe-ai; direct TypeSafe component users continue 
using camel-typesafe-ai; Wolf Defender users replace camel-wolf-defender with 
camel-semantic-wolf-defender.
* Preserve existing Java adapter class names where practical. Document any 
necessary TypeSafe bean-class or import changes explicitly rather than silently 
changing route behavior.

h2. Acceptance criteria

# camel-typesafe-ai can build and execute its component functionality without 
camel-semantic or camel-semantic-typesafe-ai on the application's classpath.
# camel-semantic-typesafe-ai supplies the existing TypeSafe expert using the 
component's configured transport, including custom endpoint/client settings and 
batching.
# camel-semantic-wolf-defender supplies the same Wolf Defender expert and local 
inference implementation under the renamed artifact, without introducing a 
separate backend module or changing the Java API.
# Dependency graphs are acyclic, and the provider component does not depend on 
its Semantic adapter module.
# Existing Semantic behavior remains covered by the moved/adapted tests: 
explicit registry references, capability inspection, supported inputs and 
operations, result types and probabilities, validation, exceptions and service 
lifecycle. Metadata inspection must not load the Wolf model or perform 
inference.
# Relevant Java/XML/YAML examples and Camel JBang usage resolve the new 
artifacts. Existing audit/result rendering continues to use the common Semantic 
contracts.
# Build metadata, generated artifacts, documentation and upgrade guidance 
consistently reflect the new artifact names.
# Invalid or unsupported inputs fail before provider/model invocation for both 
experts, with regression tests for supported text/structured inputs and 
rejected media.

h2. Scope boundary

The OpenAI Decisions integration and camel-semantic-openai belong in a separate 
issue. This refactoring does not add OpenAI support, multimodal inputs, image 
audit rendering, a Semantic API/runtime split, or new inference behavior.

h2. References

* [TypeSafe AI module at the merged Semantic 
baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-typesafe-ai]
* [Wolf Defender module at the same 
baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-wolf-defender]
* [Merged explicit-expert and audit changes, PR 
27791|https://github.com/apache/camel/pull/27791]

_AI-generated by Codex on behalf of luigidemasi (Luigi De Masi)._


  was:
h2. Purpose

Give the existing Semantic experts consistent, explicit artifact names while 
keeping the TypeSafe AI component independently usable without a dependency on 
camel-semantic.

This task covers two different packaging changes:

* Extract the TypeSafe AI semantic adapter from camel-typesafe-ai into a new 
camel-semantic-typesafe-ai module.
* Rename the existing camel-wolf-defender module/artifact to 
camel-semantic-wolf-defender. Wolf Defender is already a Semantic expert 
module, with its local inference implementation and supporting exception; it 
has no separate Camel routing endpoint. This is a module rename, not an 
adapter/backend split.

h2. TypeSafe AI: extract the adapter

* Add components/camel-ai/camel-semantic-typesafe-ai, depending on 
camel-semantic and camel-typesafe-ai.
* Move TypeSafeAiSemanticAdapter and the applicable Semantic-specific tests to 
the new module.
* Keep the component, endpoints, producer, client configuration and managed 
transport in camel-typesafe-ai. Reuse that transport from the extracted adapter.
* Remove camel-typesafe-ai's dependency on camel-semantic. Do not introduce a 
reverse dependency from the component to the new adapter module.
* Preserve existing operations, accepted inputs, parameters, batching, typed 
results, provider uncertainty, exceptions and lifecycle behavior.

h2. Wolf Defender: rename the module

* Rename components/camel-ai/camel-wolf-defender and its Maven artifact to 
camel-semantic-wolf-defender.
* Keep the adapter, inference implementation, supporting exception and tests 
together. Preserve their Java packages and class names; no inference API 
extraction or new routing component is required.
* Keep the existing model provisioning, native dependencies, resource limits, 
concurrency, lifecycle, failure behavior and expert semantics unchanged.

h2. Build, metadata and migration

* Update reactor modules, dependency management/BOM entries, relevant 
dependency declarations, generated catalog metadata and documentation mirrors.
* Update expert artifact identity to the module that contains each adapter, 
preserving provider identity and operation meaning.
* Update documentation, examples and applicable Camel JBang dependency 
resolution/usage references to use the new artifacts. Preserve explicit named 
expert selection and the existing runtime metadata/tooling contract.
* Document the migration in the appropriate upgrade guide: TypeSafe Semantic 
users add camel-semantic-typesafe-ai; direct TypeSafe component users continue 
using camel-typesafe-ai; Wolf Defender users replace camel-wolf-defender with 
camel-semantic-wolf-defender.
* Preserve existing Java adapter class names where practical. Document any 
necessary TypeSafe bean-class or import changes explicitly rather than silently 
changing route behavior.

h2. Acceptance criteria

# camel-typesafe-ai can build and execute its component functionality without 
camel-semantic or camel-semantic-typesafe-ai on the application's classpath.
# camel-semantic-typesafe-ai supplies the existing TypeSafe expert using the 
component's configured transport, including custom endpoint/client settings and 
batching.
# camel-semantic-wolf-defender supplies the same Wolf Defender expert and local 
inference implementation under the renamed artifact, without introducing a 
separate backend module or changing the Java API.
# Dependency graphs are acyclic, and the provider component does not depend on 
its Semantic adapter module.
# Existing Semantic behavior remains covered by the moved/adapted tests: 
explicit registry references, capability inspection, supported inputs and 
operations, result types and probabilities, validation, exceptions and service 
lifecycle. Metadata inspection must not load the Wolf model or perform 
inference.
# Relevant Java/XML/YAML examples and Camel JBang usage resolve the new 
artifacts. Existing audit/result rendering continues to use the common Semantic 
contracts.
# Build metadata, generated artifacts, documentation and upgrade guidance 
consistently reflect the new artifact names.

h2. Scope boundary

The OpenAI Decisions integration and camel-semantic-openai belong in a separate 
issue. This refactoring does not add OpenAI support, multimodal inputs, image 
audit rendering, a Semantic API/runtime split, or new inference behavior.

h2. References

* [TypeSafe AI module at the merged Semantic 
baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-typesafe-ai]
* [Wolf Defender module at the same 
baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-wolf-defender]
* [Merged explicit-expert and audit changes, PR 
27791|https://github.com/apache/camel/pull/27791]

_AI-generated by Codex on behalf of luigidemasi (Luigi De Masi)._



> camel-semantic: Extract TypeSafe adapter and rename Wolf Defender module
> ------------------------------------------------------------------------
>
>                 Key: CAMEL-25668
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25668
>             Project: Camel
>          Issue Type: Task
>          Components: camel-ai
>            Reporter: Luigi De Masi
>            Assignee: Luigi De Masi
>            Priority: Major
>
> h2. Purpose
> Give the existing Semantic experts consistent, explicit artifact names while 
> keeping the TypeSafe AI component independently usable without a dependency 
> on camel-semantic.
> This task covers two different packaging changes:
> * Extract the TypeSafe AI semantic adapter from camel-typesafe-ai into a new 
> camel-semantic-typesafe-ai module.
> * Rename the existing camel-wolf-defender module/artifact to 
> camel-semantic-wolf-defender. Wolf Defender is already a Semantic expert 
> module, with its local inference implementation and supporting exception; it 
> has no separate Camel routing endpoint. This is a module rename, not an 
> adapter/backend split.
> h2. TypeSafe AI: extract the adapter
> * Add components/camel-ai/camel-semantic-typesafe-ai, depending on 
> camel-semantic and camel-typesafe-ai.
> * Move TypeSafeAiSemanticAdapter and the applicable Semantic-specific tests 
> to the new module.
> * Keep the component, endpoints, producer, client configuration and managed 
> transport in camel-typesafe-ai. Reuse that transport from the extracted 
> adapter.
> * Remove camel-typesafe-ai's dependency on camel-semantic. Do not introduce a 
> reverse dependency from the component to the new adapter module.
> * Preserve existing operations, accepted inputs, parameters, batching, typed 
> results, provider uncertainty, exceptions and lifecycle behavior.
> h2. Wolf Defender: rename the module
> * Rename components/camel-ai/camel-wolf-defender and its Maven artifact to 
> camel-semantic-wolf-defender.
> * Keep the adapter, inference implementation, supporting exception and tests 
> together. Preserve their Java packages and class names; no inference API 
> extraction or new routing component is required.
> * Keep the existing model provisioning, native dependencies, resource limits, 
> concurrency, lifecycle, failure behavior and expert semantics unchanged.
> h2. Explicit input validation
> * Validate the input shapes and modalities accepted by each expert before 
> provider requests or local inference, including direct adapter calls and 
> batches.
> * TypeSafe AI accepts text and its supported structured application state 
> (String, Map and List). Wolf Defender accepts text only, subject to its 
> existing nonblank, character and token limits.
> * Reject unsupported images, audio, video, binary objects and explicit media 
> parts with clear validation exceptions. Do not stringify unsupported inputs, 
> silently remove parts or invoke preprocessing/fallback services. A structured 
> wrapper must not bypass the checks for explicit media content.
> * Apply the applicable validation at the TypeSafe provider/component boundary 
> as well as its Semantic adapter boundary, without introducing a dependency 
> from camel-typesafe-ai to camel-semantic. Do not require shared Semantic 
> media classes in the provider component.
> * Preserve legitimate structured state and ordinary textual content; do not 
> infer a media modality merely from arbitrary user text or field names.
> * Add positive tests for each supported input shape and negative tests 
> showing rejection before HTTP/model invocation, including a batch with an 
> invalid input. Document any newly enforced rejection of previously accepted 
> unsupported values in the upgrade guide.
> h2. Build, metadata and migration
> * Update reactor modules, dependency management/BOM entries, relevant 
> dependency declarations, generated catalog metadata and documentation mirrors.
> * Update expert artifact identity to the module that contains each adapter, 
> preserving provider identity and operation meaning.
> * Update documentation, examples and applicable Camel JBang dependency 
> resolution/usage references to use the new artifacts. Preserve explicit named 
> expert selection and the existing runtime metadata/tooling contract.
> * Document the migration in the appropriate upgrade guide: TypeSafe Semantic 
> users add camel-semantic-typesafe-ai; direct TypeSafe component users 
> continue using camel-typesafe-ai; Wolf Defender users replace 
> camel-wolf-defender with camel-semantic-wolf-defender.
> * Preserve existing Java adapter class names where practical. Document any 
> necessary TypeSafe bean-class or import changes explicitly rather than 
> silently changing route behavior.
> h2. Acceptance criteria
> # camel-typesafe-ai can build and execute its component functionality without 
> camel-semantic or camel-semantic-typesafe-ai on the application's classpath.
> # camel-semantic-typesafe-ai supplies the existing TypeSafe expert using the 
> component's configured transport, including custom endpoint/client settings 
> and batching.
> # camel-semantic-wolf-defender supplies the same Wolf Defender expert and 
> local inference implementation under the renamed artifact, without 
> introducing a separate backend module or changing the Java API.
> # Dependency graphs are acyclic, and the provider component does not depend 
> on its Semantic adapter module.
> # Existing Semantic behavior remains covered by the moved/adapted tests: 
> explicit registry references, capability inspection, supported inputs and 
> operations, result types and probabilities, validation, exceptions and 
> service lifecycle. Metadata inspection must not load the Wolf model or 
> perform inference.
> # Relevant Java/XML/YAML examples and Camel JBang usage resolve the new 
> artifacts. Existing audit/result rendering continues to use the common 
> Semantic contracts.
> # Build metadata, generated artifacts, documentation and upgrade guidance 
> consistently reflect the new artifact names.
> # Invalid or unsupported inputs fail before provider/model invocation for 
> both experts, with regression tests for supported text/structured inputs and 
> rejected media.
> h2. Scope boundary
> The OpenAI Decisions integration and camel-semantic-openai belong in a 
> separate issue. This refactoring does not add OpenAI support, multimodal 
> inputs, image audit rendering, a Semantic API/runtime split, or new inference 
> behavior.
> h2. References
> * [TypeSafe AI module at the merged Semantic 
> baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-typesafe-ai]
> * [Wolf Defender module at the same 
> baseline|https://github.com/apache/camel/tree/12e8bdcdf1affa19b3d62786d4a4001db936b164/components/camel-ai/camel-wolf-defender]
> * [Merged explicit-expert and audit changes, PR 
> 27791|https://github.com/apache/camel/pull/27791]
> _AI-generated by Codex on behalf of luigidemasi (Luigi De Masi)._



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

Reply via email to