Skip to content

Draft demo of all AWS AgentCore capabilities#6979

Draft
mathieu-stennier wants to merge 28 commits into
mainfrom
tshepo-demo-all-connectors
Draft

Draft demo of all AWS AgentCore capabilities#6979
mathieu-stennier wants to merge 28 commits into
mainfrom
tshepo-demo-all-connectors

Conversation

@mathieu-stennier

Copy link
Copy Markdown
Contributor

Description

Related issues

closes #

Checklist

  • Backport labels are added if these code changes should be backported. No backport label is added to the latest
    release, as this branch will be rebased onto main before the next release. Example backport labels:
    • backport stable/8.8: for changes that should be included in the next 8.8.x release.
    • or backport release-8.8.7: for changes that should be included in the specific release 8.8.7, and this
      release has already been created. The release branch will be merged back into stable/8.8 later, so the change
      will be included in future 8.8.x releases as well.
  • Tests/Integration tests for the changes have been added if applicable.
  • If the change requires a documentation update, it has been added to the appropriate section in the documentation.

tshepomaredi and others added 28 commits April 15, 2026 09:44
Adds a new outbound connector for AWS Bedrock Knowledge Base Retrieve API.
Enables semantic search over documents indexed in a Bedrock Knowledge Base.

- BedrockAgentRuntimeClient-based implementation
- Retrieve operation with query and numberOfResults parameters
- Results returned as Camunda Document (JSON)
- Error handling: throttling retry, KB errors, serialization errors
- Element template with authentication, configuration, and operation groups
- Unit tests: executor (2), input validation (3) — all passing
- Remove redundant @PropertyConstraints where @notblank is present
- Remove unused REGION constant from BaseTest
- Rename nextToken to paginationToken for clarity
- Extract error codes into constants
- Add retry backoff (3 retries, 5s) for throttling
- Use generic createClient() pattern
… paginationToken test

- Remove operationDiscriminator from inputVariables (nested inside operation object)
- Add test assertion for paginationToken pass-through
- Add test for null paginationToken when no more results
- Return documentReference + content per chunk (matching Vector DB RetrievedChunk)
- Remove Document/ObjectMapper wrapping — return plain result entries
- Remove ThrottlingException handling — rely on SDK built-in retry
- Remove unused BedrockKnowledgeBaseResponse class
- Add connector to default-bundle (bundle/pom.xml + default-bundle/pom.xml)
- ObjectMapper no longer needed
- Filter out retrieval results without content
- Add tests: KB ID and numberOfResults passed correctly
- Add tests: S3 location present and absent
- Add tests: metadata mapping
- Add tests: chunks without content filtered out
- Add tests: document created for every chunk
- 11/11 tests passing
…tests

- Use Document.unwrap() instead of toString() for clean metadata values
- Change metadata type to Map<String, Object> to support unwrapped primitives
- Assert document creation content matches chunk text
- Import times() statically
- Execute Python code in AWS Bedrock AgentCore sandbox
- 3-step API: start session, invoke (async streaming), stop session
- Returns stdout, stderr, exitCode, executionTimeMs, images (base64 data URIs)
- Session timeout configurable (default 900s)
- Connector type: io.camunda:aws-bedrock-codeinterpreter:1
- Wrap code + sessionTimeoutSeconds into input DTO (input.code, input.sessionTimeoutSeconds)
- Extract error codes and session name into constants
- Add retry backoff (3 retries, 5s) for throttling exceptions
- Lower default session timeout from 900s to 300s
- Use Document API for images instead of base64 strings
- Auto-retrieve generated files: listFiles + readFiles after execution
- Image bytes read from resource.blob in readFiles response
- Update element template bindings to use input. prefix
- Update tests for multi-step invocation pattern
- Extract client creation into generic createClient() method
- Introduce AutoCloseable CodeInterpreterSession for try-with-resources
- Session name includes elementInstanceKey for AWS-side correlation
- Use 'ignored' for unused lambda parameters
- Extract listGeneratedFiles, readFiles, convertToDocuments methods
- Return all generated files (not just images), renamed to 'files'
- Handle text files via resource.text() in addition to resource.blob()
- Diff file list before/after execution to detect new files only
- Filter out hidden files/directories (dotfiles)
- Read files individually for graceful error handling
- Add max total size limit (10MB) alongside max file count (10)
- LOG.warn on session stop failure
- Default mimeType extracted to constant
- engineVersion set to ^8.9 with TODO for ^8.10
- Template ID added to ignore-templates.json
- Make max files and max total bytes configurable via connector input
- Refactor listGeneratedFiles and readFiles to use functional streams
- Extract extractData and extractMimeType for improved readability
- Add input validation for null/blank code with tests
- Simplify retrieveNewFiles with extracted filterNewFiles and readFilesAndCheckSizeLimit
- Remove ThrottlingException handling — rely on SDK built-in retry
- Remove unused retry constants and imports
- Add connector to default-bundle (bundle/pom.xml + default-bundle/pom.xml)
- Avoid inline conditionals — use proper if/else blocks throughout
- Rename extractFileName to extractFileNameFromListResult with javadoc
- Use fileName parameter directly in convertToDocuments (no block.text() fallback)
- Replace future.join() with future.get(5, MINUTES) to prevent indefinite hangs
- Handle TimeoutException, InterruptedException, ExecutionException
- Group extract methods together at bottom of class with section comments
- Add javadoc to extraction helpers
…ge/CI ID, tests

- Use Duration for sessionTimeout (ISO 8601, e.g. PT5M)
- Rename maxTotalBytes to maxTotalFileSize
- Add language dropdown (Python, JavaScript, TypeScript)
- Make Code Interpreter ID configurable (default aws.codeinterpreter.v1)
- Change readFileBlocks to accept single path
- Null-safe doc.metadata().getSize()
- Validate maxFiles > 0 with Math.max
- Rename jobKey to elementInstanceKey
- Session carries codeInterpreterIdentifier for consistent usage
- Add Session Settings property group
- Add tests: language, CI ID, Duration timeout, element instance key
- 10/10 tests passing
- Language field is now an enum (Python, JavaScript, TypeScript)
- Language selection comes before code field in template
- Remove 'Python' from code field description
- Add @min(1) bean validation on maxFiles and maxTotalFileSize
- Align invocation timeout with session timeout
- Remove redundant @PropertyConstraints(notEmpty = true)
Adds a new outbound connector for invoking external agents running in
AWS Bedrock AgentCore Runtime. Uses sync client with
invokeAgentRuntimeAsBytes() for simple request/response pattern.

- Connector type: io.camunda:aws-bedrock-agentcore-runtime:1
- Supports agentRuntimeArn, prompt, and optional sessionId
- Returns agent response text, sessionId, and statusCode
- 4/4 unit tests passing
- Element template generated
Invoke external agents deployed on AWS Bedrock AgentCore Runtime.

- Sync client with invokeAgentRuntimeAsBytes()
- Input DTO wrapper (agentRuntimeArn, prompt with FEEL, optional sessionId)
- Generic createClient() with endpoint override support
- Error handling with ConnectorException for BedrockAgentCoreException
- Added to default-bundle for SaaS/runtime availability
- Template ID in ignore-templates.json (pending 8.10)
- Official AWS Bedrock SVG icon
- 5/5 unit tests passing
…urable content type

- Replace prompt (String) with payload (Object) for flexible FEEL-based payloads
- Use ObjectMapper for payload serialization, remove manual escapeJson()
- Add configurable contentType field (defaults to application/json)
- Deserialize JSON responses to Map for FEEL expression access
- Fall back to String for non-JSON responses
- ObjectMapper as static field in connector function
- 7/7 tests passing
- Rename contentType to payloadContentType, move after payload field
- Remove @feel from agentRuntimeArn
- Blank payloadContentType falls back to application/json
- Only parse JSON response when accept content type contains 'json'
- Deserialize to Object.class instead of Map.class for arrays/primitives
- Use ObjectMapperSupplier.getMapperInstance() for AWS consistency
- Add documentationRef to @ElementTemplate
- Fix test ARN to 12-digit account ID
- Update parent version to 8.10.0-SNAPSHOT
Implements outbound connector for retrieving persistent knowledge from
AWS Bedrock AgentCore Long-Term Memory (issue #6853).

Operations:
- Retrieve Memory Records: semantic search across extracted memories
- List Memory Records: browse/filter stored memory records

Both operations return memory record summaries with content, score,
metadata, namespaces, and pagination support.

closes #6853
@CLAassistant

CLAassistant commented May 13, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
0 out of 2 committers have signed the CLA.

❌ mathieu-stennier
❌ tshepomaredi
You have signed the CLA already but the status is still pending? Let us recheck it.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
0 out of 2 committers have signed the CLA.

❌ tshepomaredi
❌ mathieu-stennier
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants