What
Add a small, read-only helper that converts planner-produced google.genai.types.Part lists into provider-agnostic, typed "content blocks" modelled after LangChain v1's standard content blocks.
ADK planners (PlanReActPlanner, BuiltInPlanner) emit reasoning as parts with thought=True, and PlanReActPlanner additionally annotates text with inline /*PLANNING*/-style tags that consumers must parse by hand. This helper turns that into a list of typed blocks — reasoning (with a reasoning_kind of planning/replanning/reasoning/action), text, and tool_call — so consumers branch on a type discriminator instead of re-parsing raw text.
It is additive and read-only: it never mutates the parts and doesn't change how planners build instructions or post-process responses. Existing consumers of the Part output are unaffected.
Background
Originally proposed in core ADK (google/adk-python#6185). That PR was closed and the maintainer suggested the feature belongs in adk-python-community as a community module. This issue tracks landing it here.
Proposed location
New module src/google/adk_community/planners/ exporting parts_to_content_blocks / part_to_content_block (plus the ReasoningContentBlock / TextContentBlock / ToolCallContentBlock TypedDicts, ReasoningKind, and ContentBlock). Self-contained — depends only on google-genai (already a transitive dependency via google-adk), so no new optional-dependency group is needed. Unit tests under tests/unittests/planners/.
A PR implementing this is ready to open.
What
Add a small, read-only helper that converts planner-produced
google.genai.types.Partlists into provider-agnostic, typed "content blocks" modelled after LangChain v1's standard content blocks.ADK planners (
PlanReActPlanner,BuiltInPlanner) emit reasoning as parts withthought=True, andPlanReActPlanneradditionally annotates text with inline/*PLANNING*/-style tags that consumers must parse by hand. This helper turns that into a list of typed blocks —reasoning(with areasoning_kindof planning/replanning/reasoning/action),text, andtool_call— so consumers branch on atypediscriminator instead of re-parsing raw text.It is additive and read-only: it never mutates the parts and doesn't change how planners build instructions or post-process responses. Existing consumers of the
Partoutput are unaffected.Background
Originally proposed in core ADK (google/adk-python#6185). That PR was closed and the maintainer suggested the feature belongs in
adk-python-communityas a community module. This issue tracks landing it here.Proposed location
New module
src/google/adk_community/planners/exportingparts_to_content_blocks/part_to_content_block(plus theReasoningContentBlock/TextContentBlock/ToolCallContentBlockTypedDicts,ReasoningKind, andContentBlock). Self-contained — depends only ongoogle-genai(already a transitive dependency viagoogle-adk), so no new optional-dependency group is needed. Unit tests undertests/unittests/planners/.A PR implementing this is ready to open.