Problem
Workflow checkpoint creation can fail when A2A responses are present in workflow state. A2A Part instances are stored in framework objects through raw_representation, but the generated protobuf type reports its module as a2a_pb2, which is not importable by Python pickle in the installed A2A SDK layout.
This produces warnings such as:
Failed to create checkpoint at iteration 6: Can't pickle <class 'a2a_pb2.Part'>: No module named 'a2a_pb2'
The workflow continues running, but the affected checkpoint is not persisted.
Expected behavior
Runtime-only provider representations should not prevent the framework content, workflow state, and executor state from being checkpointed.
Scope
The fix should preserve raw_representation during the active run while excluding it from durable pickle state and restoring it as None after checkpoint restoration. Framework-native content fields such as text, URI, data, tool calls, and workflow state must remain intact.
Reproduction
Use an A2A Part as the raw_representation of framework Content or Message, then serialize a checkpoint containing that object. Pickling fails because a2a_pb2.Part cannot be imported during serialization.
Problem
Workflow checkpoint creation can fail when A2A responses are present in workflow state. A2A
Partinstances are stored in framework objects throughraw_representation, but the generated protobuf type reports its module asa2a_pb2, which is not importable by Python pickle in the installed A2A SDK layout.This produces warnings such as:
The workflow continues running, but the affected checkpoint is not persisted.
Expected behavior
Runtime-only provider representations should not prevent the framework content, workflow state, and executor state from being checkpointed.
Scope
The fix should preserve
raw_representationduring the active run while excluding it from durable pickle state and restoring it asNoneafter checkpoint restoration. Framework-native content fields such as text, URI, data, tool calls, and workflow state must remain intact.Reproduction
Use an A2A
Partas theraw_representationof frameworkContentorMessage, then serialize a checkpoint containing that object. Pickling fails becausea2a_pb2.Partcannot be imported during serialization.