From 2ec46f1b0f880568c40580a197232d3f87009b39 Mon Sep 17 00:00:00 2001 From: ehallmark Date: Sat, 30 Aug 2025 22:58:49 -0700 Subject: [PATCH 1/2] minor --- src/agentstr/mcp/nostr_mcp_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/agentstr/mcp/nostr_mcp_server.py b/src/agentstr/mcp/nostr_mcp_server.py index b45b31a..1ccdf85 100644 --- a/src/agentstr/mcp/nostr_mcp_server.py +++ b/src/agentstr/mcp/nostr_mcp_server.py @@ -129,6 +129,9 @@ async def _direct_message_callback(self, event: Event, message: str): logger.debug(f"Request: {message}") tasks = [] try: + if not message.startswith('{'): + logger.warning(f"Invalid request: {message}. SKipping...") + return request = json.loads(message) if request["action"] == "list_tools": response = await self.list_tools() From fb10a91b28f64eba31b6da599501508725523c90 Mon Sep 17 00:00:00 2001 From: ehallmark Date: Sun, 31 Aug 2025 00:40:41 -0700 Subject: [PATCH 2/2] updates --- src/agentstr/agents/providers/langgraph.py | 1 + src/agentstr/mcp/nostr_mcp_client.py | 2 +- src/agentstr/mcp/nostr_mcp_server.py | 2 +- src/agentstr/nostr_client.py | 4 ++-- src/agentstr/relays/relay.py | 2 +- src/agentstr/relays/relay_manager.py | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/agentstr/agents/providers/langgraph.py b/src/agentstr/agents/providers/langgraph.py index 48e6c54..ceef39f 100644 --- a/src/agentstr/agents/providers/langgraph.py +++ b/src/agentstr/agents/providers/langgraph.py @@ -43,6 +43,7 @@ def langgraph_chat_generator(agent: CompiledStateGraph, mcp_clients: list[NostrM for mcp_client in mcp_clients: tool_to_sats_map.update(mcp_client.tool_to_sats_map) async def chat_generator(input: ChatInput) -> AsyncGenerator[ChatOutput, None]: + logger.info(f'Langgraph chat generator input: {input}') async for chunk in agent.astream( input={"messages": [{"role": "user", "content": input.message}]}, config={ diff --git a/src/agentstr/mcp/nostr_mcp_client.py b/src/agentstr/mcp/nostr_mcp_client.py index 7636d90..3581d93 100644 --- a/src/agentstr/mcp/nostr_mcp_client.py +++ b/src/agentstr/mcp/nostr_mcp_client.py @@ -55,7 +55,7 @@ async def get_skills(self) -> list[Skill]: """ return [Skill(name=tool["name"], description=tool["description"]) for tool in (await self.list_tools())["tools"]] - async def call_tool(self, name: str, arguments: dict[str, Any], timeout: int = 60) -> dict[str, Any] | None: + async def call_tool(self, name: str, arguments: dict[str, Any], timeout: int = 120) -> dict[str, Any] | None: """Call a tool on the MCP server with provided arguments. Args: diff --git a/src/agentstr/mcp/nostr_mcp_server.py b/src/agentstr/mcp/nostr_mcp_server.py index 1ccdf85..12e1428 100644 --- a/src/agentstr/mcp/nostr_mcp_server.py +++ b/src/agentstr/mcp/nostr_mcp_server.py @@ -130,7 +130,7 @@ async def _direct_message_callback(self, event: Event, message: str): tasks = [] try: if not message.startswith('{'): - logger.warning(f"Invalid request: {message}. SKipping...") + logger.warning(f"Invalid request: {message}. Skipping...") return request = json.loads(message) if request["action"] == "list_tools": diff --git a/src/agentstr/nostr_client.py b/src/agentstr/nostr_client.py index f44b8c0..cd04ad2 100644 --- a/src/agentstr/nostr_client.py +++ b/src/agentstr/nostr_client.py @@ -218,11 +218,11 @@ async def send_direct_message(self, recipient_pubkey: str, message: str, tags: d logger.error(f"Failed to send direct message: {e!s}", exc_info=True) raise - async def receive_direct_message(self, recipient_pubkey: str, timestamp: int | None = None, timeout: int = 60) -> DecryptedMessage | None: + async def receive_direct_message(self, recipient_pubkey: str, timestamp: int | None = None, timeout: int = 120) -> DecryptedMessage | None: """Wait for and return the next direct message from a recipient.""" return await self.relay_manager.receive_message(recipient_pubkey, timestamp=timestamp, timeout=timeout) - async def send_direct_message_and_receive_response(self, recipient_pubkey: str, message: str, timeout: int = 60, tags: dict[str, str] | None = None) -> DecryptedMessage: + async def send_direct_message_and_receive_response(self, recipient_pubkey: str, message: str, timeout: int = 120, tags: dict[str, str] | None = None) -> DecryptedMessage: """Send an encrypted direct message to a recipient and wait for a response. Args: diff --git a/src/agentstr/relays/relay.py b/src/agentstr/relays/relay.py index d440406..91b7574 100644 --- a/src/agentstr/relays/relay.py +++ b/src/agentstr/relays/relay.py @@ -105,7 +105,7 @@ async def get_events(self, filters: Filters, limit: int = 10, timeout: int = 30, pass return events - async def get_event(self, filters: Filters, timeout: int = 30, close_on_eose: bool = True) -> Event | None: + async def get_event(self, filters: Filters, timeout: int = 120, close_on_eose: bool = True) -> Event | None: """Get a single event matching the filters or None if not found.""" events = await self.get_events(filters, limit=1, timeout=timeout, close_on_eose=close_on_eose) if len(events) > 0: diff --git a/src/agentstr/relays/relay_manager.py b/src/agentstr/relays/relay_manager.py index 97a5813..daaaf7d 100644 --- a/src/agentstr/relays/relay_manager.py +++ b/src/agentstr/relays/relay_manager.py @@ -77,7 +77,7 @@ async def get_events(self, filters: Filters, limit: int = 10, timeout: int = 30, result = list(event_id_map.values()) return result - async def get_event(self, filters: Filters, timeout: int = 30, close_on_eose: bool = True) -> Event: + async def get_event(self, filters: Filters, timeout: int = 120, close_on_eose: bool = True) -> Event: """Get a single event matching the filters or None if not found.""" result = await self.get_events(filters, limit=1, timeout=timeout, close_on_eose=close_on_eose) if result and len(result) > 0: