Release v0.26.4#868
Conversation
Greptile SummaryBugfix release (
Confidence Score: 5/5Safe to merge — the change is a focused one-line guard with recursive fallback, well-tested, and consistent with established patterns in the file. The fix is minimal and targeted: a single isinstance check added before the existing dict/list walk, using the same model_dump(serialize_as_any=True) path already used by purify_json and purify_json_dict. A dedicated regression test pins the exact failure mode. No other callsites are affected, and the version bump is consistent across pyproject.toml, uv.lock, and CHANGELOG.md. No files require special attention. Important Files Changed
Sequence DiagramsequenceDiagram
participant TW as Temporal Worker
participant KJ as Kajson Converter
participant DE as DeliveryExecutor
participant CJ as clean_json_content
TW->>KJ: Deserialize working_memory_raw (dict[str, Any])
KJ-->>TW: Rehydrates __class__ markers → BaseModel instances inside dict
TW->>DE: act_deliver(working_memory_raw with BaseModel values)
DE->>CJ: clean_json_dumps(working_memory_raw)
CJ->>CJ: isinstance(content, BaseModel)? YES
CJ->>CJ: model_dump(serialize_as_any=True) → plain dict
CJ->>CJ: Recurse on plain dict (no more BaseModel)
CJ-->>DE: JSON-safe structure
DE-->>TW: working_memory.json delivered successfully
Reviews (1): Last reviewed commit: "Release v0.26.4" | Re-trigger Greptile |
Release v0.26.4
Bumps version from
0.26.3to0.26.4.Changelog
Fixed
working_memory_rawcontains rehydrated Pydantic instances.WorkingMemory.dump_for_temporal()embeds__class__/__module__markers onListContentitems so the receiving workflow can hydrate them. Kajson's Temporal data converter then eagerly rebuilds those dicts back intoBaseModelinstances (e.g.PageContentfromPage[]outputs) on the activity worker that runs delivery — even thoughworking_memory_rawis typed asdict[str, Any].clean_json_content()previously walked only dicts/lists/scalars and letBaseModelinstances reachjson.dumps, which raisedTypeError: Object of type PageContent is not JSON serializableand abortedact_deliver.clean_json_contentnow reduces anyBaseModelit encounters viamodel_dump(serialize_as_any=True)(the canonicalsmart_dumppath) before continuing the recursive walk.Summary by cubic
Fixes a crash in Temporal delivery when
working_memory_rawincludes rehydrated Pydantic models by serializing them to JSON-safe dicts. Bumps version to0.26.4.clean_json_contentnow converts anyBaseModelviamodel_dump(serialize_as_any=True)before recursion to avoidTypeErrorduringjson.dumps.PageContentinworking_memory_rawand verifies the JSON output in delivery.Written for commit dbe4a50. Summary will update on new commits.