diff --git a/assets/aris/acp-servers/external-acp-server/server.py b/assets/aris/acp-servers/external-acp-server/server.py index f58461e6..a1d3a6b5 100644 --- a/assets/aris/acp-servers/external-acp-server/server.py +++ b/assets/aris/acp-servers/external-acp-server/server.py @@ -327,26 +327,30 @@ class AcpServer: try: if method == "acp.capabilities": - return JsonRpcResponse(id=request.id, result=self.get_capabilities()) + response = JsonRpcResponse(id=request.id, result=self.get_capabilities()) elif method == "session.start": - return await self._handle_session_start(request, notify) + response = await self._handle_session_start(request, notify) elif method == "session.message": - return await self._handle_session_message(request, notify) + response = await self._handle_session_message(request, notify) elif method == "session.cancel": - return self._handle_session_cancel(request) + response = self._handle_session_cancel(request) elif method == "session.close": - return self._handle_session_close(request) + response = self._handle_session_close(request) else: - return JsonRpcResponse( + response = JsonRpcResponse( id=request.id, error={"code": -32601, "message": f"Unknown method: {method}"} ) + if response and response.id is None: + response.id = request.id + return response + except asyncio.CancelledError: raise except Exception as e: @@ -486,7 +490,6 @@ class AcpServer: "error": True }, notify) return JsonRpcResponse( - id=None, error={"code": -32602, "message": f"Unknown provider: {provider_name}"} ) @@ -499,7 +502,6 @@ class AcpServer: "error": True }, notify) return JsonRpcResponse( - id=None, error={"code": -32602, "message": f"Provider not available: {provider_name}"} ) diff --git a/lib/runtime/gateway_acp_client.dart b/lib/runtime/gateway_acp_client.dart index 21b4e952..9920b247 100644 --- a/lib/runtime/gateway_acp_client.dart +++ b/lib/runtime/gateway_acp_client.dart @@ -801,8 +801,8 @@ class GatewayAcpClient { consumeEventPayload(eventLines.join('\n')); } if (!completer.isCompleted) { - throw const GatewayAcpException( - 'ACP SSE ended without JSON-RPC response', + throw GatewayAcpException( + 'ACP SSE ended without JSON-RPC response for request $requestId', code: 'ACP_SSE_NO_RESULT', ); }