# runtime/agent_memory/sync.py import httpx import asyncio from .store import AgentMemoryStore async def sync_with_remote(url: str, token: str, store: AgentMemoryStore): """ Protocol for pulling and pushing memory updates. Initially implements a basic fetch and push structure. """ headers = {"Authorization": f"Bearer {token}"} async with httpx.AsyncClient() as client: # Pull remote updates try: response = await client.get(f"{url}/pull", headers=headers) if response.status_code == 200: remote_data = response.json() # Logic to merge remote_data into store # e.g., store.apply_remote_updates(remote_data) pass except Exception as e: print(f"Failed to pull updates: {e}") # Push local updates # For simplicity, we might push the entire state or just changes try: local_data = {} # store.get_local_changes() response = await client.post(f"{url}/push", json=local_data, headers=headers) if response.status_code == 200: # Successfully pushed pass except Exception as e: print(f"Failed to push updates: {e}")