{"record":{"id":"7a43f422a749e98c","repo":"deepset-ai/haystack","slug":"receiver-does-not-exist-input-connections-of","errorCode":null,"errorMessage":"'${receiver} does not exist. Input connections of ${receiver_component_name} are: {}","messagePattern":"'(.+?) does not exist\\. Input connections of (.+?) are: (.+?)","errorType":"exception","errorClass":"PipelineConnectError","httpStatus":null,"severity":"error","filePath":"haystack/core/pipeline/base.py","lineNumber":654,"sourceCode":"                f\"for example by using the '@component.output_types' decorator.\"\n            )\n\n        # If the name of either socket is given, get the socket\n        sender_socket: OutputSocket | None = None\n        if sender_socket_name:\n            sender_socket = sender_sockets.get(sender_socket_name)\n            if not sender_socket:\n                raise PipelineConnectError(\n                    f\"'{sender}' does not exist. \"\n                    f\"Output connections of {sender_component_name} are: \"\n                    + \", \".join([f\"{name} (type {_type_name(socket.type)})\" for name, socket in sender_sockets.items()])\n                )\n\n        receiver_socket: InputSocket | None = None\n        if receiver_socket_name:\n            receiver_socket = receiver_sockets.get(receiver_socket_name)\n            if not receiver_socket:\n                raise PipelineConnectError(\n                    f\"'{receiver} does not exist. \"\n                    f\"Input connections of {receiver_component_name} are: \"\n                    + \", \".join(\n                        [f\"{name} (type {_type_name(socket.type)})\" for name, socket in receiver_sockets.items()]\n                    )\n                )\n\n        # Look for a matching connection among the possible ones.\n        # Note that if there is more than one possible connection but two sockets match by name, they're paired.\n        sender_socket_candidates: list[OutputSocket] = (\n            [sender_socket] if sender_socket else list(sender_sockets.values())\n        )\n        receiver_socket_candidates: list[InputSocket] = (\n            [receiver_socket] if receiver_socket else list(receiver_sockets.values())\n        )\n\n        conversion_strategy = None\n","sourceCodeStart":636,"sourceCodeEnd":672,"githubUrl":"https://github.com/deepset-ai/haystack/blob/e318778c9bf60a1963e3b5f451359655dd696c30/haystack/core/pipeline/base.py#L636-L672","documentation":"Pipeline.connect() raises PipelineConnectError when an explicitly given receiver socket name does not match any input socket of the receiver component. The error lists the valid input connections and their types. Note the message itself has a missing closing quote in this haystack version.","triggerScenarios":"Calling pipeline.connect('sender', 'receiver.wrong_socket') where 'wrong_socket' is not a key in the receiver's input_sockets dict, e.g. a typo or a renamed input.","commonSituations":"Typos like 'promt' instead of 'prompt'; assuming an input name from a different component class; version changes renaming inputs (e.g. 'query' vs 'questions'); connecting to optional inputs that don't exist in this version.","solutions":["Use one of the input socket names listed in the error message","Inspect the receiver component's run() signature/inputs to find valid names","If the input was removed in a newer haystack version, update to the new name or pin the version","Drop the '.socket' suffix and let Haystack auto-match when the receiver has one compatible input"],"exampleFix":"// before\npipeline.connect('retriever', 'ranker.quary')\n// after\npipeline.connect('retriever', 'ranker.query')","handlingStrategy":"validation","validationCode":"comp = pipeline.get_component(receiver)\nvalid = set(comp.__haystack_input__._sockets_dict)\nassert socket_name in valid, f\"{socket_name!r} not an input of {receiver}; valid: {valid}\"","typeGuard":"def input_exists(pipeline, receiver: str, socket: str) -> bool:\n    return socket in pipeline.get_component(receiver).__haystack_input__._sockets_dict","tryCatchPattern":"try:\n    pipeline.connect(sender, f'{receiver}.{socket}')\nexcept PipelineConnectError as e:\n    logger.error('%s; valid inputs listed in error: %s', e, e)","preventionTips":["Inspect the receiver's run() signature for exact input names","Let Haystack auto-match when only one input exists instead of naming it","Verify input names against the installed haystack version's docs"],"tags":["pipeline","haystack","socket-name","typo"],"backgroundTag":"invalid-socket-name","analyzedSha":"e318778c9bf60a1963e3b5f451359655dd696c30","analyzedAt":"2026-08-30T11:45:20.711Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}