Claus Ibsen created CAMEL-26071:
-----------------------------------

             Summary: camel-aws-bedrock - aws-bedrock-agent-runtime: invokeFlow 
does not convert the body, and an operation picked by the header fails on an 
endpoint of another operation
                 Key: CAMEL-26071
                 URL: https://issues.apache.org/jira/browse/CAMEL-26071
             Project: Camel
          Issue Type: Bug
          Components: camel-aws2
    Affects Versions: 4.18.0, 4.22.0, 4.23.0
            Reporter: Claus Ibsen
             Fix For: 4.24.0


Found while adding the catalog body types of aws-bedrock-agent-runtime 
(CAMEL-24961).

h4. 1. invokeFlow does not convert the body

invokeFlow takes a String, a FlowInput or a List of FlowInput, and fails for 
anything else ({{BedrockAgentRuntimeProducer}}, main ed3d719b379c, lines 
375-400), while invokeAgent converts the body to a String (line 641). So bytes, 
a stream or a file from a file consumer fail. Checked on 4.24.0-SNAPSHOT with 
{{camel run}} against a fake of the AWS API that logs the requests it gets: a 
byte[] body gives {{IllegalArgumentException: invokeFlow expects the body to be 
a List<FlowInput>, a single FlowInput or a String when pojoRequest=false. Got: 
[B}}.

*Proposed change*: convert the other bodies to a String, as invokeAgent does.

h4. 2. An operation picked by the header fails on an endpoint of another 
operation

The asynchronous client that invokeAgent, invokeInlineAgent and invokeFlow need 
is only created when the operation option of the endpoint is one of them 
({{BedrockAgentRuntimeEndpoint}}, lines 76-83). The 
{{CamelAwsBedrockAgentRuntimeOperation}} header can pick them on an endpoint of 
retrieve or retrieveAndGenerate, and then every exchange fails. Checked on 
4.24.0-SNAPSHOT with {{camel run}} against a fake of the AWS API that logs the 
requests it gets: {{IllegalStateException: BedrockAgentRuntimeAsyncClient is 
not available}}.

*Proposed change*: create the asynchronous client when an exchange first needs 
it.

h4. 3. No operation fails with a NullPointerException

The operation option has no default, and with no header, {{switch 
(determineOperation(exchange))}} (line 84) fails with a NullPointerException. 
Checked on 4.24.0-SNAPSHOT with {{camel run}} against a fake of the AWS API 
that logs the requests it gets.

*Proposed change*: fail with a message that says to set the operation option or 
header.

h4. Also read in the code, not run

* modelId and knowledgeBaseId are marked required for every operation 
({{BedrockAgentRuntimeConfiguration}}, lines 47-52), but only retrieve and 
retrieveAndGenerate use them, so tooling flags endpoints of invokeAgent and 
invokeFlow.
* The catalog says {{CamelAwsBedrockAgentRuntimeCitations}} is a String; it is 
a {{List<Citation>}}. The page names a {{bedrockRuntimeClient}} (line 47).

_Claude Code on behalf of davsclaus_



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

Reply via email to