{"record":{"id":"4e96ca8ea0dd5c0e","repo":"NousResearch/hermes-agent","slug":"no-adapter-configured-for-target-platform-value","errorCode":null,"errorMessage":"No adapter configured for {target.platform.value}","messagePattern":"No adapter configured for (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"gateway/delivery.py","lineNumber":469,"sourceCode":"        ``HERMES_FILTER_SILENCE_NARRATION`` env var overrides config when set;\n        otherwise the ``gateway.filter_silence_narration`` config flag wins\n        (default True).\n        \"\"\"\n        env = os.getenv(\"HERMES_FILTER_SILENCE_NARRATION\")\n        if env is not None:\n            return env.strip().lower() in (\"1\", \"true\", \"yes\", \"on\")\n        return bool(getattr(self.config, \"filter_silence_narration\", True))\n\n    async def _deliver_to_platform(\n        self,\n        target: DeliveryTarget,\n        content: str,\n        metadata: Optional[Dict[str, Any]]\n    ) -> Dict[str, Any]:\n        \"\"\"Deliver content to a messaging platform.\"\"\"\n        transport = resolve_delivery_transport(target.platform, self.config, self.adapters)\n        if transport is None:\n            raise ValueError(f\"No adapter configured for {target.platform.value}\")\n        adapter = transport.adapter\n\n        if not target.chat_id:\n            raise ValueError(f\"No chat ID for {target.platform.value} delivery\")\n        \n        # Guard: handle oversized cron output.\n        #\n        # Two independent decisions:\n        #   1. AUDIT SAVE — when content exceeds MAX_PLATFORM_OUTPUT, the full\n        #      output is always written to disk as a recoverable audit trail.\n        #      This fires regardless of adapter capability (best-effort).\n        #   2. TRUNCATION — for non-chunking adapters, content above the cap is\n        #      truncated with a footer pointing to the saved file.  Chunking-\n        #      capable adapters (splits_long_messages=True) receive the full\n        #      payload and split natively in their send().\n        job_id = (metadata or {}).get(\"job_id\", \"unknown\")\n        saved_path: Optional[Path] = None\n","sourceCodeStart":451,"sourceCodeEnd":487,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/gateway/delivery.py#L451-L487","documentation":"Error \"No adapter configured for {target.platform.value}\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at gateway/delivery.py:469 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Enable/configure the adapter for the target platform in the gateway before delivering.","Choose a platform that has a running adapter."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}