import asyncio import json from typing import Any from llama_index.core.agent.workflow import AgentWorkflow from llama_index.core.base.llms.types import ( ChatMessage, ChatResponse, CompletionResponse, LLMMetadata, MessageRole, ) from llama_index.core.llms.function_calling import FunctionCallingLLM from llama_index.core.llms.llm import ToolSelection from llama_index.core.workflow import Context, JsonSerializer TOOL_CALL_LOG: list[str] = [] async def set_name(ctx: Context, name: str) -> str: """Save the user's preferred name in agent state.""" async with ctx.store.edit_state() as ctx_state: ctx_state["state"]["name"] = name TOOL_CALL_LOG.append(f"set_name(name={name})") return name async def read_name(ctx: Context) -> str: """Read the user's preferred name from agent state.""" state = await ctx.store.get("state") TOOL_CALL_LOG.append("read_name()") return state["name"]