aws / aws/bedrock-agentcore-sdk-python

[Bug] update_message fails with parameter validation error when SessionMessage.message_id is a Strands positional integer index

Ouverte Adaptée aux débutants
#556 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
764
Forks
148
Merge moyen
1 j 23 h
PR mergées (30 j)
7

Description

**Describe the bug**
When redact_latest_message is triggered (e.g. via guardrail redaction), update_message attempts to delete the old AWS event using session_message.message_id as the eventId.

However, Strands' SessionMessage.message_id is a sequential integer index (e.g. 4), not an AWS eventId string (e.g. "4#abc123f"). The AWS delete_event API requires eventId to be a string matching [0-9]+#[a-fA-F0-9]+, so [botocore rejects](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_DeleteEvent.html#API_DeleteEvent_RequestSyntax) the integer at parameter validation, causing the redaction to fail with

**Error**

```
Failed to update message: could not delete old event: Parameter validation failed: Invalid type for parameter eventId, value: 4, type: , valid types:
```

**To Reproduce**
- Strands' RepositorySessionManager.initialize_agent calls session_repository.create_message() directly with SessionMessage objects whose message_id is a sequential integer index (0, 1, 2...). It then sets _latest_agent_message[agent_id] to the last such SessionMessage.
- When redact_latest_message is subsequently called, it reads _latest_agent_message[agent_id] and passes it to update_message.
- update_message extracts old_message_id = session_message.message_id -> this is the integer 4, not an AWS eventId string.
- It then calls gmdp_client.delete_event(eventId=old_message_id), but the AWS API requires eventId to match pattern [0-9]+#[a-fA-F0-9]+ (e.g. "4#abc123f"), so botocore rejects the integer with a ParamValidationError.

**Expected behavior**
_latest_agent_message[agent_id].message_id should always contain the AWS eventId string returned by create_event, not the Strands positional integer index.

**Where**
src/bedrock_agentcore/memory/integrations/strands/session_manager.py, update_message -> delete_event call.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans src/bedrock_agentcore/memory/integrations/strands/session_manager.py, en vous concentrant sur update_message et sur le chemin create_message/create_event qui définit _latest_agent_message. Suivez quel identifiant est stocké dans SessionMessage.message_id, puis vérifiez que la rédaction du dernier message supprime l’événement sans erreur de validation des paramètres et préserve l’ID d’événement AWS.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
aws, python
Domaine
api, backend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.