diff --git a/.github/workflows/notify-letta-cloud.yml b/.github/workflows/notify-letta-cloud.yml deleted file mode 100644 index 0874be59..00000000 --- a/.github/workflows/notify-letta-cloud.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Notify Letta Cloud - -on: - push: - branches: - - main - -jobs: - notify: - runs-on: ubuntu-latest - if: ${{ !contains(github.event.head_commit.message, '[sync-skip]') }} - steps: - - name: Trigger repository_dispatch - run: | - curl -X POST \ - -H "Authorization: token ${{ secrets.SYNC_PAT }}" \ - -H "Accept: application/vnd.github.v3+json" \ - https://api.github.com/repos/letta-ai/letta-cloud/dispatches \ - -d '{"event_type":"oss-update"}' diff --git a/letta/functions/ast_parsers.py b/letta/functions/ast_parsers.py index acc73bef..e169f596 100644 --- a/letta/functions/ast_parsers.py +++ b/letta/functions/ast_parsers.py @@ -34,6 +34,19 @@ def resolve_type(annotation: str): return BUILTIN_TYPES[annotation] try: + if annotation.startswith("list["): + inner_type = annotation[len("list[") : -1] + resolve_type(inner_type) + return list + elif annotation.startswith("dict["): + inner_types = annotation[len("dict[") : -1] + key_type, value_type = inner_types.split(",") + return dict + elif annotation.startswith("tuple["): + inner_types = annotation[len("tuple[") : -1] + [resolve_type(t.strip()) for t in inner_types.split(",")] + return tuple + parsed = ast.literal_eval(annotation) if isinstance(parsed, type): return parsed diff --git a/letta/server/server.py b/letta/server/server.py index af6adbfb..d4f49df2 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -353,8 +353,8 @@ class SyncServer(Server): for server_name, client in self.mcp_clients.items(): logger.info(f"Attempting to fetch tools from MCP server: {server_name}") mcp_tools = client.list_tools() - logger.info(f"MCP tools connected: {", ".join([t.name for t in mcp_tools])}") - logger.debug(f"MCP tools: {"\n".join([str(t) for t in mcp_tools])}") + logger.info(f"MCP tools connected: {', '.join([t.name for t in mcp_tools])}") + logger.debug(f"MCP tools: {', '.join([str(t) for t in mcp_tools])}") def load_agent(self, agent_id: str, actor: User, interface: Union[AgentInterface, None] = None) -> Agent: """Updated method to load agents from persisted storage""" diff --git a/tests/test_tool_sandbox/restaurant_management_system/adjust_menu_prices.py b/tests/test_tool_sandbox/restaurant_management_system/adjust_menu_prices.py index 1d3d9d3e..ffe734b3 100644 --- a/tests/test_tool_sandbox/restaurant_management_system/adjust_menu_prices.py +++ b/tests/test_tool_sandbox/restaurant_management_system/adjust_menu_prices.py @@ -8,10 +8,9 @@ def adjust_menu_prices(percentage: float) -> str: str: A formatted string summarizing the price adjustments. """ import cowsay - from tqdm import tqdm - from core.menu import Menu, MenuItem # Import a class from the codebase from core.utils import format_currency # Use a utility function to test imports + from tqdm import tqdm if not isinstance(percentage, (int, float)): raise TypeError("percentage must be a number")