personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix todos:todo agent crash from string output_path

Dream scheduler sends output_path as a raw string in the request dict,
but _run_agent and related functions call .exists() on it expecting a
Path object. Coerce output_path to Path at all four read sites.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+4 -4
+4 -4
think/agents.py
··· 746 746 event["transcript"] = transcript 747 747 event["transcript_chars"] = len(transcript) 748 748 event["transcript_files"] = sum(config.get("source_counts", {}).values()) 749 - output_path = config.get("output_path") 749 + output_path = Path(config["output_path"]) if config.get("output_path") else None 750 750 if output_path: 751 751 event["output_path"] = str(output_path) 752 752 ··· 796 796 from .providers import PROVIDER_REGISTRY, get_provider_module 797 797 798 798 provider = config.get("provider", "google") 799 - output_path = config.get("output_path") 799 + output_path = Path(config["output_path"]) if config.get("output_path") else None 800 800 801 801 if provider not in PROVIDER_REGISTRY: 802 802 valid = ", ".join(sorted(PROVIDER_REGISTRY.keys())) ··· 910 910 system_instruction = ( 911 911 f"{system_instruction}\n\n{extra_ctx}" if system_instruction else extra_ctx 912 912 ) 913 - output_path = config.get("output_path") 913 + output_path = Path(config["output_path"]) if config.get("output_path") else None 914 914 output_format = config.get("output") 915 915 916 916 # Get generation parameters from config (set in frontmatter) ··· 1052 1052 model = config.get("model") 1053 1053 is_cogitate = config["type"] == "cogitate" 1054 1054 refresh = config.get("refresh", False) 1055 - output_path = config.get("output_path") 1055 + output_path = Path(config["output_path"]) if config.get("output_path") else None 1056 1056 1057 1057 # Emit start event 1058 1058 start_event: dict[str, Any] = {